提高篇第一講專案6—泰勒展開式求sin(x)的值

提高篇第一講專案6—泰勒展開式求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()函式,(可以上網借鑑或看別人的程式碼,我就是參考了賀老師的程式程式碼)用程式碼寫出相應的數學表示式就可以啦大笑當然,我的程式可能還有諸多不合格的地方,望包涵