利用泰勒级数计算sinx的值,控制精度在10^

您所在的位置:网站首页 cosx计算方法 利用泰勒级数计算sinx的值,控制精度在10^

利用泰勒级数计算sinx的值,控制精度在10^

2024-05-27 04:37| 来源: 网络整理| 查看: 265

利用泰勒级数sin(x)≈x-x3/3!+x5/5!-x7/7!+…,编程计算sin(x)值,要求最后一项绝对值小于10^-6,并统计出此时累加了多少项。

注意

在泰勒级数运算的过程中,会遇到对x的n次方运算,如果x过大会导致结果过大,导致内存溢出,这里可以利用sinx的周期性,将x对应的取值控制在0-2PI,从而解决问题。

#include #define PI 3.1415926535 double trimPeriod(double x); void main(){ double sin, x, temp, remain_x, mul_x; long fac; int i, r, sign; printf(" sin(x),input x between(0~2pi):\n"); scanf("%lf", &x); //初始化数据 x = trimPeriod(x); mul_x = x; sin = x; sign = -1; fac = 1; for (i = 1;; i = i + 2){ //5!=3!*4*5 -> (2n+1)!=(2n-1)!*(2n)*(2n+1) fac = fac * (i + 1)*(i + 2); //factorial //x^5=x^3*x*x mul_x = mul_x * x*x; temp = mul_x / fac; if (temp r = int(x / (2 * PI));//get Integral } printf("remain of x %d\n", r); //保证周期在0-2PI之间,避免内存溢出 remain_x = x - PI * 2 * r; //返回0-2PI范围内x对应的值 return remain_x; }//get rid of periods 存在缺陷

PI的 取值会影响结果的精确度,但只要PI的小数后的取值位数够多,结果精确度越精确



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3