提高篇第一讲项目6—泰勒展开式求sin(x)的值

    xiaoxiao2021-03-25  250

    问题描述 用sin泰勒展式编写程序,求出sin(π/2)和sin(56°)的值,精度要求达到小数点后6位(即当最后一项的绝对值小于0.00001时,累加结束,求绝对值的函数也可以自定义函数myabs实现)。 实际上,C语言的数学库(#include<math.h>)中已经提供了sin和cos函数,以及求绝对值的函数fabs,一般解题中我们直接调用即可,而本题要求自定义函数实现,为区别起见,分别起名为mysin、mycos、myabs。 1程序代码 #include <stdio.h> #define pi 3.1415926 double mysin(double); double myabs(double); int main() { printf("sin(pi/2)的值为:%.5f\n",mysin(pi/2)); printf("sin(56)的值为:%.5f",mysin((56.0/180)*pi)); return 0; } //下面为求sin(x)的值 double mysin(double num2) { int i=1,negation=1;//取反 double sum; double index=num2;//指数 double Factorial=1;//阶乘 double TaylorExpansion=num2;//泰勒展开式求和 do { Factorial=Factorial*(i+1)*(i+2);//求阶乘 index*=num2*num2;//求num2的次方 negation=-negation;//每次循环取反 sum=index/Factorial*negation; TaylorExpansion+=sum; i+=2; }while(myabs(sum)>1e-5); return(TaylorExpansion); } //下面为求绝对值函数 double myabs(double num1) { return((num1>0)?num1:-num1); } 输出结果 知识点总结                        根据泰勒展开公式 sin(x)=x-(x^3)/3!+(x^5)/5!……来进行编程;当然我们可以直接调用#include<math.h>函数库的sin()函数求解sin(pi/2)之类的问题。                              心得体会           作为一个大二打菜鸟,在最开始接触这题时,感到非常棘手,但只要了解了如何自己自定义绝对值函数和sin()函数,(可以上网借鉴或看别人的代码,我就是参考了贺老师的程序代码)用代码写出相应的数学表达式就可以啦当然,我的程序可能还有诸多不合格的地方,望包涵

    转载请注明原文地址: https://ju.6miu.com/read-32333.html

    最新回复(0)