函数fun的功能是:计算f(x)直到的值。
?若x=2.5,函数值为:12.182494
#include <stdio.h>
#include <math.h>
double fun(double x){
double f, t;
int n;
f = 1.0 + x;
t = x;
n = 1;
do
{
n++;
t *= x / n;
f += t;
} while (fabs(t) >= 1e-6);
return f;
}
int main(){
double x, y;
x = 2.5;
y = fun(x);
printf("The result is :\n");
printf("x=%-12.6f y=%-12.6f \n", x, y);
}
程序的功能是计算各项表达式之和,直到最后一项的绝对值小于10的-6次方为止。f用来表示各项值累加的和,由于公式中前两项的值没有规律可寻,所以先把f初始化为1.0+x; 程序中用while循环用来判断最后一项的绝对值是否大于或等于10的-6次方,如果大于等于,则继续求下一项的值,并进行累加,如果小于,则直接返回累加后的值f。由于除前两项之外的其他各项的值都可以拆分成前一项的值乘以x/n,程序中用t来记录各项的值,f记录的是各项的和。
关于程序各语句的具体分析如下:
函数doub1e fun(doub1e x)的功能是计算f(x)各项之和。
f =1.0+x; 表示前二项的值。
t = x; 中的t用来存储各项的项值,此处是对t进行初始化,其值为x。
当n=2时,因为t=x,所以t*= x/n;即t =t*x/n; 等于x*x/2得到结果t=x*x/2。
当n=3时,因为t=x*x/2,所以t*=x/n;即t=t*x/n;等于(x*x/2)*x/3,结果t=x*x*x/6。依次类推得出以下项的值。f+=t;把每一项得到的值累加起来,得到全部项的和。
fabs(t)是取绝对值的函数。
本评析仅作参考。
|