c - 在C中计算sinx的泰勒级数
问题描述
我必须将 sinx 的泰勒级数计算到小数点后 4 位。到目前为止,我的代码如下所示:
#include<stdio.h>
#include<math.h>
float pwr(int n, float x){ //power of x to the n
int i;
float p=x;
for(i=1; i<=n; i++){
p=p*x;
}
return p;
}
int fac(int n){ //n factorial
int i;
int f=1;
for(i=1; i<=n; i++){
f=f*i;
}
return f;
}
int main(){
int i, k;
int sign;
float rad, num, den, deg;
float sum=0.f;
printf("How many iterations of the series should I add? ");
scanf("%d", &k);
while(k<1){
printf("I can't add negative or 0 iterations. Please enter valid input: ");
scanf("%d", &k);
}
printf("Enter angle in degrees: ");
scanf("%f", °);
rad=deg*M_PI/180; //convert to radians
for(i=1; i<=k; i++){ //taylor series of sinx: [(-1)^n]*[{x^(2n+1)}/(2n+1)!]
sign=pwr(i, -1); //finds (-1)^n
//finds x^(2n+1) by expanding it as [(x^n)^2]*x
num=pwr(i, rad); //x^n
num=num*num; //(x^n)^2
num=num*rad; //[(x^n)^2]*x
//finds (2n+1)!
den=fac(2i+1);
//sum
sum=sum+sign*(num/den);
}
printf("The sum is %.4f", sum);
return 0;
}
我试图在每个循环结束时将总和分解为不同的部分。由于某种原因,它不会返回任何值。例如,如果我尝试通过重复循环 100 次并进入 156 度来运行程序,则程序返回 -1.#INF 并在下面说进程以返回值 18 退出。我做错了什么?
解决方案
推荐阅读
- ios - OverCurrentContext 防止方向改变
- javascript - Jquery鼠标事件在位置绝对内容中没有触发
- bash - Bash 通过多字符分隔符将多行字符串拆分为数组
- python - 如何将 grequests 响应与请求映射?
- gdb - 如何根据 gdb 是否附加到正在运行的进程,在 gdb 中执行“运行”或“继续”?
- ios - UInt8 数组未转换为字节字符串
- asp.net - 邮件发送失败。在 ASP.NET 中
- robotframework - 如何连接在机器人框架中具有一些代理设置作为先决条件的会话
- python-3.x - python - 使用打字类手动执行打字约束
- mysql - 如何在nodejs中的续集模型mysql中列注释