利用泰勒级数逼近sin(x)的值,要求用通项,而非递推,各位高手帮帮忙
泰勒公式为sin(x)约等于x-x^3/3!+x^5/5!-x^7/7!+x^9/9!……要求最后一项的绝对值小于10的-6次方,并统计累加了多少项?
看看我的代码哪里有问题?,请各位看看,帮帮忙改一下
程序代码:先讲一下我的大概思路,因为要求用通项,而通项中涉及到阶乘和乘方运算,我想利用C语言的函数模块化编程特点,先定义阶乘运算和乘方运算(这个我在 math.h函数库查到了,但还是先看看我的吧)两个函数,然后综合利用将通项表示出来
#include <stdio.h>
#include<math.h>
#define Pi 3.14
int multi(int t) //构建阶乘运算函数
{
int a=1,b=1;
while(b<=t)
{
a=a*b;
b=b+1;
}
return a;
}
double power(double m,int l) //构建乘方运算函数
{
double p=m,q;int j=2;
if(l=1)return m;
else
{
while(j<=l)
{
q=p*m;
p=p*m;
++j;
}
return q;
}
}
int main() //主函数
{
double x,u,sum=0; //u为通项公式
int n=1;
printf("请输入角度:");
scanf("%lf",&x);
x=(x/180)*Pi; //将角度数转换成弧度
u=(power(-1,n+1)*power(x,2n-1))/multi(2n-1);//先求第一项的值
while (fabs(u)>=1e-6) //再用这个循环应该可以求出来的
{
sum+=u;
n=n+1;
u=(power(-1,n+1)*power(x,2n-1))/multi(2n-1);
}
printf("迭代%d次 sin(%.2f)=%.2f\n",n,x,sum);
}
[ 本帖最后由 hhcxx2006 于 2011-11-14 19:07 编辑 ]











。