泰勒展开式求sin(x)的值,程序实现,余弦,正切等函数类似

问题描述
用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()函数,(可以上网借鉴或看别人的代码,我就是参考了贺老师的程序代码)用代码写出相应的数学表达式就可以啦当然,我的程序可能还有诸多不合格的地方,望包涵
--------------------- 
作者:xiaochenxiaoren 
来源:CSDN 
原文:https://blog.csdn.net/xiaochenxiaoren/article/details/61614833 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/qq_25814297/article/details/84873160