C语言编程 用泰勒展开式计算e^x的值
#include
#include
#include
#include
using namespace std;
double taile(double x);
int main()
{
int n,i;
double y;
cin>>n;
for(i=0; i<n; i++)
{
int x;
cin>>x;
y=taile(x);
cout<<setiosflags(ios::fixed)<<setprecision(7)<<y<<endl;
}
return 0;
}
double taile(double x)
{
if(x==0)
return 1;
int i=0,t;
//y需赋初值,只需y>1e-7
double sum,y=1,f=0;
while(y>1e-7)
{
sum=1;
i++;
for(t=0; t<i; )
t++,sum*=t;
y=pow(x,i)/sum,f+=y;
}
return f+1;
}
望采纳,谢谢
函数f3有问题,计算x的n次方的表达式你都写错了
由泰勒公式得e^x=1+x+x^2//2+……+x^n/n!…… 然后你重新写那个函数
float f(float a,float b)
{
float f=1.0;
int i=1;
while(pow(a,i)/fac(i)>b)
{
f=f+pow(a,i)/fac(i);
i++;
}
return(f);
}
我重新写了一下 通过调试了 这是那个函数其中a表示e^a b表示精度
#include<stdio.h>
#include<math.h>
int main()
{
double add(double x, double n);
double x, n,sum;
scanf("%lf %lf", &x, &n);
if(n<0||x<0)
{
printf("error");
return 0;
}
else
{
sum = add(x, n);
printf("%.6lf", sum);
}
return 0;
}
double add(double x,double n)
{
double b = 1, c = 1;
double sum = 1;
for (b = 1; b <=n; b++)
{
sum = sum +( pow(x, b))/c;
b = b + 1;
c = c*b;
}
return sum;
}
你这样做,那个输出错误的结果判断要在计算之前,并且出错后要退出,而且你的异常条件要写成:if(n<0||x<0),因为0是允许的。然后计算和的函数我减去了一个变量,有循环变量就可以替代n了
我的运行结果,但我不知道运算的对不对,程序反正没有错误了,也可以运行的
When test group(3) step(1),the input is (10.45 20 ),the real output is not right.请问下这个怎么解决的呀,我也碰到啦
这个程序跑起来是报故还是结果不对?