怎样用java通过泰勒展开求sinx
答案:2 悬赏:80 手机版
解决时间 2021-02-20 08:11
- 提问者网友:锁深秋
- 2021-02-19 22:18
怎样用java通过泰勒展开求sinx
最佳答案
- 五星知识达人网友:笑迎怀羞
- 2021-02-19 23:21
根本性的逻辑问题。
你也看到pi定义为使sin(x) = 0的最小正实数,
要从这个角度逼近Pi的话,应该尝试代入一系列递增的正实数x,直到sin(x)很小.
但是你只在main函数里取了x = 1,之后x的值就没变过。
即便条件满足了(其实是不可能的),也只能输出x = 1。
幂级数是用来计算sin(x)的,随着n的增大精度提高。
变量dRt的意义是级数的部分和,是随着n的增大而趋近sin(x)的。
但在dRt还没有充分接近sin(x)的时候,abs(dRt)lt;pow(10,-80)这个判断没有任何意义。
要按这个思路编的话,可以写一个用幂级数求sin(x)的函数(比如叫psin(x))。
然后在main里用二分法求x,直到psin(x)充分小。
不过因为需要多次计算psin(x),这种方法的效率很低。
你也看到pi定义为使sin(x) = 0的最小正实数,
要从这个角度逼近Pi的话,应该尝试代入一系列递增的正实数x,直到sin(x)很小.
但是你只在main函数里取了x = 1,之后x的值就没变过。
即便条件满足了(其实是不可能的),也只能输出x = 1。
幂级数是用来计算sin(x)的,随着n的增大精度提高。
变量dRt的意义是级数的部分和,是随着n的增大而趋近sin(x)的。
但在dRt还没有充分接近sin(x)的时候,abs(dRt)lt;pow(10,-80)这个判断没有任何意义。
要按这个思路编的话,可以写一个用幂级数求sin(x)的函数(比如叫psin(x))。
然后在main里用二分法求x,直到psin(x)充分小。
不过因为需要多次计算psin(x),这种方法的效率很低。
全部回答
- 1楼网友:鸠书
- 2021-02-20 00:15
您好,是这样的:泰勒展开是这个:sinx=x-x^3/3!+x^5/5!-.. 下面给出算20项的程序。 #include"math.h" #include"stdio.h" void main() { double x=0,y=0,z=1,s=1,mynum=0; int i=1 ,j=0, k=1; scanf("x=%f",&x); for(i=1;i<20;i++) z=1;k=1; for(j=1;j<=2*i-1;j++) { z=x*z;//算j次方 k=k*j;//算阶乘} s=-j*pow(-1,i);//pow(a,b)是a的b次方 z=z*s/k; mymun=mynum+z; } printf("sinx=x-x^3/3!+x^5/5!-.."); printf("sinx=%f",mynum); getch(); }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯