C++. Кто знает как правильно возвести экспоненту в степень чтобы не было ошибок?
У стандартной библиотеки плюсов с этим все хорошо. Если тебе нужна сверхточность, то придется использовать длинную арифметику и вычислять экспоненту через ряд Тейлора: \inf" alt="e^x=1+x/1! + x^2/2! + ... + x^n/n!; n ->\inf" align="absmiddle" class="latex-formula"> либо для компьютерных вычислений гораздо эффективнее так(точность выше) этот ряд быстрее сходится
#include #include using namespace std; int main() { double z,y,f; x=2.87; y=0.84; z=(2*x*y)/(x+cos(y)); f=(sin(y)*sin(y))*(sqrt(x)/(z+pow(e,2)*y)); cout <<"f=" <<f << endl;<br> return 0; }
а переменную е определить не хочешь?
это разве не должно быть константой?
не такой
открываем заголовочник math.h, находим такой кусок:#ifndef __STRICT_ANSI__ #define M_E 2.7182818284590452354 #define M_LOG2E 1.4426950408889634074 #define M_LOG10E0.43429448190325182765 #define M_LN2 0.69314718055994530942 #define M_LN10 2.30258509299404568402 #define M_PI 3.14159265358979323846 #define M_PI_2 1.57079632679489661923 #define M_PI_4 0.78539816339744830962 #define M_1_PI 0.31830988618379067154 #define M_2_PI 0.63661977236758134308 #define M_2_SQRTPI1.12837916709551257390
Замечаем, что препроцессор видит число Эйлера немного по-другому
так а чего по-другому ?Вроде все как обычно
#define M_E2.7182818284590452354 ?
ну да, так это же не e, а M_E
Затупил(( Спасибо!!!