c语言 泰勒多项式求sinx的近似值 精确度10e-6
来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 13:00:42
#include#includemain(){intn=2,count=1,sign=-1;floatx;doublesum,term;printf("inputx:");scanf("%f",&x)
sinx=x-x^3/3!+x^5/5!-x^7/7!+.f(x)=x^4-x^6/3!+x^8/5!-x^10/7!+...f(x)的6阶导数=-6!/3!=-120
这里完全没有算法可言啊,序列的第N位就是生成多项式里面的x^N的系数.此题目也根本用不着迭代,一个简单的循环就可以解决问题;迭代递归什么的反倒多耗内存.再问:不理解。。。求程序~再答:假设你的序列是一
/*sinx=x-x^3/3!+x^5/5-x^7/7!...*/#include#include#defineACCURARY0.00000001main(){\x09inti=1,j=1,k,n=
//用sinx=x-x^3/3!+x^5/5!……+(-1)^(n-1)*(x^(2*n-1)/(2*n-1)!#include#includedoublepower(doublex,intn){if
#include#includevoidmain(){longfloatx,s=0;intn,i,k,a=1,b;printf("Inputx,n:");scanf("%lf,%d",&x,&n);f
问题出在变量c的数据类型上,这是因为,当x的值比较大的时候,x^n除以n!收敛到0的速度非常慢,只有当n的值非常大的时候才能使得两者的商小于你给的精度,所以在这一过程中c=n!会超出int型数据表示的
问题1:第二个for语句处改成2*n-1问题2:第一个for语句里的n+=2,改成n++问题3:a的值反转,从第二个for语句里拿出来,放到t=a*y/j之后.问题4:y在t=a*y/j这一行用过之后
#include#includevoidmain(){doublecoe[20],x,sum=0;inti,n;printf("请输入总项数:");scanf("%d",&n);printf("请按指
for(p!=NULL){for((q!=NULL)&&(q->expnexpn))改成while(p!=NULL){while((q!=NULL)&&(q->expnexpn))
#defineTURE1#defineFALSE0#include#includetypedefstruct{\x09floatcoef;\x09inte;}ElementType;typedefst
泰勒公式可以提高精确度估计误差在极限的运算中替代可以简化步骤
#include#includefloatmyfunction(intn,intx){if(0==n){return1;}elseif(1==n){returnx;}else{return((2*n-
是最后写错了.是printf("cos(x)=%.3f\n",sum);你的%d是整数的意思.f才是浮点数.才有小数点.
首先,我们知道sin(x)=sin(x+k*2pi),那么,我们首先去x1=x%2pi.这样做的目的,是为了让表达式在精度要求范围内,尽可能的有比较少的项.然后循环累加,跳出循环的条件是最后一项的值小
你这个要求最后一项的近似值的精度...我给你的是10的-5次方的精度.#include#includemain(){intn=1,count=1;floatx;doublesum,term;print
#include#include#include#include#defineN5//N个点#defineT3//T次拟合#defineW1//权函数#definePRECISION0.00001fl
在X0的泰勒展开公式,书上公式.你的问题在怎么处理它只有奇数项不为零0?换成2n-1就好,但是注意开始项是n=1还是n=0.不能在0点展开,那是麦克劳林展开.
elser=((2a-1)*b*lrd(a-1,b)-(a-1)*lrd(a-2,b))/a;要写2*a不能写2a