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