我想求sin(x)=x-x^3/3!+x^5/5!-x^7/7!+⋯前20项的值
我自己写的代码是
#include<stdio.h>
int power(int x, int m)
{
int t;
t=x^m;
return t;
}
int fac(int m)
{
int i,t=1,s=0;
for(i=1;i<=m;i++)
t*=i;
s+=t;
return s;
}
float sn(int x, int sn)
{
float t;
t=power(x,m)/fac(m);
return t;
}
int sin()
{
m=1,3,5,7,9,11,13,15,17,19;
int sum;
sum=sn(x,sn);
return sum;
}
int main(){
int x,n;
printf("输入x、n:\n");
scanf("%d %d",&x,&n);
sin();
printf("%d",sum);
}
但问题是在sn(int x, int sn)里power(x,m)/fac(m)又没了定义是怎么回事,要怎么解决呢。
#include <stdio.h>
#include <math.h>
/* 利用泰勒级数sin(x)=x-x^3/3!+x^5/5!-x^7/7!+x^9/9!-...
计算sin(x)的值。要求最后一项的绝对值小于10^(-5)*/
void main(){
double sum,item;
int i=0,count=0;
float x;
printf("Input x: ");
scanf("%f",&x);
sum=x;
item=x;//初始化赋值 item存放每一项的值
do{
i++;
item = -item*x*x/((2*i)*(2*i+1));//第一項为-x^3/3! item=-x*x*x/(2*3)
//第二项为x^5/5! 直接对第一項取负,-item*x*x/(4*5),后面以此类推
sum+=item;
count++;
}while(count < 20);
printf("sin(%f)=%6.6lf,count=%d\n",x,sum,count);
}