long double power1(double x, int n) {
long double power = 1;
int i;
for(i=1; i<=n; i++) {
power *= i;
}
return power;
}
long long int factorial(long long n) {
long long int pr = 1;
long long int i;
for(i=1; i<=n; i++){
pr *= i;
}
return pr;
}
double myExp(double x, double epsi) {
double sum=(double)1;
int i;
while(power1(x, i)/((1.0)*factorial(i)) - epsi <= 0) {
sum += power1(x, i)/(1.0*factorial(i));
i++;
}
return sum;
}
int main(int argc, char *argv[]) {
system("cls");
double x, epsi;
int n;
x=1.5;
epsi=0.00001;
n=1000;
printf("exp(%.lf,%f)=%f\n", x, epsi, myExp(x, epsi));
printf("\n");
}
Мне нужна помощь, чтобы исправить мою экспоненциальную функцию e^x
, учитывая значения epsi
и x
, чтобы abs(x^n/n!) <= epsi
, где n
- первое целое число, удовлетворяющее условию. Кажется, пока l oop не работает. Когда я ввожу 1.5
, желаемое значение равно 4.481689
, но результат равен 1.0000
.