十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
scanf(%lf,&x);改成 scanf(%d,&x);你这程序效率会比较很低!应该找到泰勒展开中,每前后两项之间的关系,采用迭代计算以减少计算次数,提高效率。
隆尧网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联于2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
您好,是这样的:泰勒展开是这个:sinx=x-x^3/3!+x^5/5!-..下面给出算20项的程序。
a^(2*d-1)是a与(2*d-1)按位异或,你是想表达乘方的含义吗?应该在前面#include math.h,把这里改成pow(a, 2*d-1)。-1的d-1次方改成pow(-1, d-1)。什么叫“按位异或”可自行搜索。
x,m)/jc(m);sin+=b;m+=2;c+=1;i++;}while(fabs(b)=pow(10,-5)) ;printf(sin x = %f\n,sin);printf(总共累加了 %d 项。
1、您好,是这样的:泰勒展开是这个:sinx=x-x^3/3!+x^5/5!-..下面给出算20项的程序。
2、时间复杂度太大,可以讲sin(x)看做泰勒公式数列和的形式,运用后项除了前项的递推实现。
3、你的这个代码的for循环是走不进去的,你可以试试,是不是打出来的值都是x=x*PI/180;运算之后的x值。你输入500打出来的值就是500*PI/180=726639。原因是for循环的终止条件写错了,把小于改成大于就对了。
你的程序错误太多。直接给出按泰勒公式展开求sinx近似值的程序。
sinx=sin(x);printf(%f\n,sinx);for(i=1;(fabs(sum-sinx))=0.000001;i=i++) /*你的程序中这句判断有错,应该是大于该精度内的sum值执行for内循环语句。
首先,我们知道sin(x) = sin(x+k*2pi),那么,我们首先去x1 = x%2pi。这样做的目的,是为了让表达式在精度要求范围内,尽可能的有比较少的项。然后循环累加,跳出循环的条件是最后一项的值小于10的-6次方。
x2=x1+(pow(-1,n)*pow(x,i))/multi;这一句里面 (pow(-1,n)*pow(x,i))/multi是两个int型相乘然后除以一个int型,结果会被强制转换为int型,所以会丢失小数点后的数据。
第一个图中的最后一项是=1e-4的,没有按照题目的要求实现计算。