求解:请问我错在那里了?算不出结果。
题目:3、编一个程序计算sinx和cosx的近似值。使用如下的台劳级数:
sin x=x/1! -x*x*x/3! + x*x*x*x*x/5! -x*x*x*x*x*x*x/7! + ....
cos 省略
舍去的绝对值应小于预定值o。o由自己选择。
要求:定义一个函数计算n!。
程序代码:
#include <iostream.h> #include <math.h> int ff(int x) //自定义的阶层函数 { int i,s=1; for(i=1;i<=x;i++) s=s*i; return s; } int main() { int x,a,b,j=1,k=1; long double y,z,o=1e-100; //o代替无穷小量,并且赋值为1e-100 cin>>x; while(pow(x,2*j-1)/ff(2*j-1)>o) j=j+1; //对于sin x,计算出当通项小于o时,循环的次数j while(pow(x,2*k-1)/ff(2*k-2)>o) k=k+1; //对于cos x,计算出当通项小于o时,循环的次数k y=z=0; for(a=1;a<=j;a++) y=y+(pow(-1,a+1)*pow(x,2*z-1))/ff(2*a-1); // 对于sin x来说,计算出循环了j次的式子之和 for(b=1;b<=k;b++) z=z+(pow(-1,b+1)*pow(x,2*b-2))/ff(2*b-2); //对于cos x来说,计算出循环了k次的式子之和 cout<<"sin"<<x<<"="<<y<<endl; cout<<"cos"<<x<<"="<<z<<endl; }