跟晶振作斗争 2021-10-23 19:06 采纳率: 81.8%
浏览 217
已结题

用泰勒公式计算sinx并统计项数

3.11计算sinx的值

题目描述:
利用泰勒级数 sinx=x-x^3/3!+x^5/5!-x^7/7!+…… 计算sinx的值。要求最后一项的绝对值小于1e-5,并统计出此时累加的项数。

输入描述:
一个实数x(一个角度的弧度数)

输出描述:
sinx的值和累加的项数。

样式输入:
1.57

样式输出:
sinx=1.000000,n=6

#include<stdio.h>
#include<math.h>
double f(double x,double i)
{
return pow(x,i);
}
int main()
{
int n=0,i=1,k=1,j=1;
double sinx=0,t,x;
scanf("%lf",&x);
do
{
for(j=1;j<=i;j++)
{
k=k*j;
}
t=f(-1,n)*f(x,i)/k;
sinx=sinx+t;
i=i+2;
n++;
}while(fabs(t)>=(1e-5));
printf("sinx=%6lf,n=%d",sinx,n);
return 0;
}

能帮忙改一下代码吗 运行结果跟样式输出不一样

  • 写回答

2条回答 默认 最新

  • 接着奏乐吧 2021-10-25 16:38
    关注

    你这样获取K值得效率太低了,这样写 k=k*(i)*(i-1);

    do
    {
    if(i!=1){
    k=k*(i)*(i-1);
    }

    t=f(-1,n)*f(x,i)/k;
    sinx=sinx+t;
    i=i+2;
    n++;
    }while(fabs(t)>=(1e-5));

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月13日
  • 已采纳回答 3月13日
  • 创建了问题 10月23日