利用sinx=x-x^3/3!+x^5/5!-x^7/7!+x^9/9!-…,计算sinx(x为弧度值)的值,直到最后一项的绝对值小于10-5时为

利用sinx=x-x3/3!+x5/5!-x7/7!+x9/9!-…,计算sinx(x为弧度值)的值,直到最后一项的绝对值小于10-5时为止,输出sinx的值并统计累加的... 利用sinx=x-x3/3!+x5/5!-x7/7!+x9/9!-…,计算sinx(x为弧度值)的值,直到最后一项的绝对值小于10-5时为止,输出sinx的值并统计累加的项数。
#include<stdio.h>
#include<math.h>
main()
{ int n=1,count=1;
float x; double sum,term;
printf("Input x:"); scanf("%f",&x);
sum=x; term=x;
do{
term=①;
sum=sum+term;
n=n+2;
count++;
}while( ②);
printf("sin(x)=%f,count=%d\n",sum,count); }
展开
 我来答
百度网友289c0c0
2017-02-18 · TA获得超过4184个赞
知道大有可为答主
回答量:1531
采纳率:89%
帮助的人:630万
展开全部

不知道为什么不能插入代码了,我就简写了

第一个空填- term * x * x / ((n + 1) * (n + 2 ))

第二个空填fabs(term) >= 1e-5

就是运用了麦克劳林展开式简单的性质和math.h基本的函数,不懂可以追问。

追问
term*x*x是什么意思?
不应该是term^(n+2)吗?
我感觉把((n+1)*(n+2))换成(n+2)更好呀
追答
你看这个级数展开式,如果只看x的话,第一项是x,第二项是x³,第三项是x^5,每一项都是前一项再乘x²,所以填term*x*x;然后只看分母,第一项是1的阶乘,第二项是3的阶乘,第三项是5的阶乘,每一项都是前一项乘(n+1)*(n+2),所以这么填,不是硬算每一项,而是递推着算,这样写符合你的题目。别忘了第一个空还要写一个负号。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式