【发布时间】:2020-02-25 00:43:16
【问题描述】:
我想用泰勒级数打印 sin(x) 的值。
我必须添加项直到项的绝对值变为
#include <stdio.h>
#include <math.h>
double val(double, double);
int main(void){
double x,eps=10e-06;
printf("\nEnter value of x: ");
scanf("%lf",&x);
printf("\nCalculated value: %lf\n",val(x, eps));
return 0;
}
double val(double x, double eps){
int i;
double t=x, sum=0;
if(fabs(x)<= eps) return 0;
for(i=1;i<=20; i++){
sum+=t;
t*=-(x*x)/((2*i+1)*(2*i));
if(fabs(t)>=eps) break;
}
return sum;
}
但我得到的输出与我的输入相同(即我在输出中得到 x)。
谁能告诉我哪里出了问题。
【问题讨论】:
-
你从哪里得到泰勒级数的公式?
-
如果 x 很大,我猜你只会循环一次,当你从
val返回时 sum == x。 -
@klutt 对不起?我用泰勒级数
-
@Abhay 看起来一点也不像维基百科上的泰勒系列,但它似乎对我一定错过了一些东西。
-
@klutt 你的意思是 x - x^3/3! + x^5/5! - ...?好吧,将其重写为 x - x * x^2 / (2 * 3) + x * x^2 * x^2 / ((2 * 3) * (4 * 5)) - ...
标签: c taylor-series