请编写函数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

admin2010-02-08  26

问题 请编写函数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.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(即在不断变化的各项的编号)。
转载请注明原文地址:https://kaotiyun.com/show/0KID777K
0

最新回复(0)