请编写函数fun() 其功能是计算并输出当x<0.97时下列多项式的值 直到|Sn-Sn-1
问题详情
请编写函数fun(),其功能是计算并输出当x<0.97时下列多项式的值,直到|Sn-Sn-1|<0.000001为止。
Sn=1+0.5x+0.5(0.5-1)x2/2!+0.5(0.5-1)(0.5-2)x3/3!+…0.5(0.5-1)(0.5-2)…(0.5-n+1)xn/n!
例如:主函数从键盘给x输入0.21后,则输出为s=1.100000。
注意:部分源程序以存在文件test38_2.cpp中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
文件test38_2.cpp的内容如下:
include<stdio.h>
include<iostream.h>
include<math.h>
double fun(double x)
{
}
void main()
{
double x, s;
cout<<"Input x:"<<endl;
cin>>x;
s=fun(x);
cout<<"s="<<s<<endl;
}请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:double fun (double x){double s1=1.0p=1.0sum=0.0s0t=1.0;int n=1;do{s0=s1;sum+=s0;t*=n;P*= (0.5-n+1)*x;s1=p/t;n++;}while (fabs(s1-s0)>=le-6);return sum;}
double fun (double x){double s1=1.0,p=1.0,sum=0.0,s0,t=1.0;int n=1;do{s0=s1;sum+=s0;t*=n;P*= (0.5-n+1)*x;s1=p/t;n++;}while (fabs(s1-s0)>=le-6);return sum;} 解析:解答本题的关键是观察所给的多项式,并从中找出变化规律。观察得出,每一项分子的变化规律是每一项比前一项多乘一项“(0.5-n+1)*x”。分母的变化规律是每一项比前一项多乘一个n(即在不断变化的各项的编号)。