提高项目7-太乐
任務和代碼:用sin泰勒展式編寫程序,求出sin(π/2)和sin(56°)的值,精度要求達到小數點后6位(即當最后一項的絕對值小于0.00001時,累加結束,求絕對值的函數也可以自定義函數myabs實現)
/* 文件名:main.c 作者:小風景 完成日期:2016.6.24 問題描述:用sin泰勒展式編寫程序,求出sin(π/2)和sin(56°)的值,精度要求達到小數點后6位(即當最后一項的絕對值小于0.00001時,累加結束,求絕對值的函數也可以自定義函數myabs實現) 程序輸出: sin函數值 */#include <stdio.h>#define Pi 3.1415926double Mysin(double x); double Myfab(double x);int main() {double x;x = (56.0 / 180) * Pi;printf("sin(π/2)的值為%.5f\n", Mysin(Pi/2));printf("sin(56°)的值為%.5f\n", Mysin(x));return 0; }double Mysin(double x) {int sign = 1;int n = 1;double sum = x;double xpow = x; //用于求指數double item = 0; //表示項式double fact = 1; //fact 用于表示階乘do{fact = fact * (n + 1) * (n + 2);sign = -sign;xpow = xpow * x * x;item = xpow / (sign * fact);sum += item;n += 2;}while(Myfab(item)>1e-5);return sum; }double Myfab(double x) {return ((x >= 0)?x:-x); }程序運行結果:
總結:出刊用sin的泰特展式求值很難,但將泰勒展式分解其實也很簡單,首先先分項,用item表示,然后用sign表示-1的n次方,另外求數的階乘,還有求x的n次方,然后將其一組合,便可求出。
總結
- 上一篇: 2 顺序表的插入,删除,查找操作(详细)
- 下一篇: Win32_SDK_非模态对话框(非模态