精度控制
1、编写一子函数my_expTaylor,以x和n为参数,函数返回ex的近似值。用my_exp.c文件来中实现完整的程序。2、编写主函数main来调用my_expTaylor,给出参数x =1.0, n = 0, 1, 2, …, 9 (也就是说,不同n值共调用10次)时的运行结果,每次调用的运行结果单独一行(注意输出格式和数值范围)。
3、在第2步的基础上更改程序,使程序的最后结果能够满足一定的精度要求(如累加项的值小于10-4)。
注意:
除输入输出函数外不能使用C语言标准库函数,尤其是exp 函数。
n越大精度越高.
my_expTaylor 函数的第一个参数必须为双精度类型。
my_expTaylor 函数的第二个参数必须为无符号整。
my_expTaylor 函数的返回值必须为双精度类型。
不能在my_expTaylor函数内使用printf函数。
注意零的阶乘为1.
我的程序为:#include<stdio.h>
double my_expTaylor(double x,double r);
void main()
{
double x,r,m;
unsigned int n;
printf("Please input x和r:\n");
scanf("%lf,%lf",&x,&r);
m=my_expTaylor(x,r);
printf("e的%lf次幂的%u阶近似值是%lf\n",x,n,m);
}
double my_expTaylor(double x,double r)
{
int i;
double t=1,p=1,sum=1,w;
{
for(i=1;;i++)
{
t=t*i;
p=p*x;
w=p/t;
sum=sum+w;
if(p/t<r)
break;
}
}
return(sum);
}
运行结果一直是48阶,精度控制对吗
就是在进行第三步的时候一直不正确,求指导