【C++ 程序】 sin(x)的泰勒展开

it2025-05-06  17

C++是如何计算sin(x)的呢?其实使用泰勒展开来算的。下面不直接调用sin(x)来写一下程序:

程序

#include <iostream> using namespace std; constexpr double pi = 3.1415926535897932384625; double ret = 1; long double _fac(long double num1) { ret /= num1; if (num1 == 1) return ret; else return _fac(num1 - 1); } double my_sin(double num) { while (num > pi) num -= pi; while (num < -pi) num += pi; double ret = 0; double sign = 1; for (double i = 1; i <= 99; i += 2) { ret += sign * pow(num, i) * _fac(i); sign = -sign; ::ret = 1; // call the global ret } return ret; } int main() { double n; cin >> n; cout << my_sin(n) << endl; return 0; }

注意:用同样的名称ret很危险的,请勿模仿!此处只是顺带提一下::的用法。 提醒:不要傻乎乎求阶乘,这样会炸掉的,不如直接求它的倒数!

改进

找到递推关系式,此处我就不再写了,读者可以自行完成。


ALL RIGHTS RESERVED © 2020 Teddy van Jerry 欢迎转载,转载请注明出处。


See also

Teddy van Jerry 的导航页 【C++ 程序】 井字棋游戏(人 VS 人) 【C++ 程序】 井字棋游戏(人 VS Lv1电脑) 【C++ 程序】 井字棋游戏(人 VS Lv2电脑) 【C++ 程序】 井字棋游戏(人 VS Lv3电脑) 【C++ 程序】 井字棋游戏(人 VS Lv3电脑)(战绩统计版) 【C++ 程序】 五子棋游戏(人 VS 人) 【C++ 程序】 五子棋游戏(人 VS Lv1电脑)(思路及框架,内容待填充) 【C++ 程序】 随机数 【C++ 程序】 移动迷宫游戏 【C++ 程序】 贪吃蛇游戏 【C++ 程序】 数字推盘游戏(15-puzzle) 【C++ 程序】 2048游戏 【C++ 程序】 井字棋游戏(人 VS 人)(EasyX 图形界面) 【C++ 程序】 井字棋游戏(人 VS Lv3电脑)(战绩统计版)(EasyX 图形界面) 【C++ 程序】 2048游戏(EasyX 图形界面) 【C++ 程序】 贪吃蛇游戏(EasyX 图形界面) 【C++ 程序】 数字推盘游戏(15-puzzle)(EasyX图形界面) 【C++ 程序】 九九乘法表 【C++ 程序】 俄罗斯方块游戏(EasyX 图形界面) 【C++ 程序】 孪生素数问题

最新回复(0)