糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 正弦函数泰勒展开c语言 C++ 学习笔记_0012_函数(泰勒展开式 三角函数表)

正弦函数泰勒展开c语言 C++ 学习笔记_0012_函数(泰勒展开式 三角函数表)

时间:2019-07-12 10:28:34

相关推荐

正弦函数泰勒展开c语言 C++ 学习笔记_0012_函数(泰勒展开式 三角函数表)

泰勒展开式

先听故事,再编程序。故事是这样的:话说sin和cos是一对夫妇。一天,sin去听相声了,cos在家。过了一会,有人敲门,cos开门一看,是一个不认识的多项式函数。cos问:你是谁啊?他说:我是你的老公sin啊。cos说:你不是去听相声了吗?怎么成这幅摸样了?他说:是啊,太乐了!故事讲完了。不懂吗?好好学高数。否则,挂了不冤。

编程序求出sin(π/2)、sin(56°)、cos(87°)、cos(π/3) 一点说明:数学库(#include)中已经提供了sin和cos函数,一般解题中我们直接调用即可,而本题要求自定义函数实现,为区别起见,分别起名为mysin和mycos。

提示和要求:(1)要求自定义函数要写在main函数之后;(2)自定义函数中求解的效率问题必须考虑(用好迭代方法);(3)关于精度:当最后一项的绝对值小于0.00001时,累加结束(求绝对值的函数也可以自定义实现);(4)为验证求解是否正确,可以调用数学库中相应的函数,输出结果以对比。

#include

#include

using namespace std;

const double pi = 3.1415926;

double mysin(double);

double mycos(double);

double myabs(double); //绝对值

double myDegtoRad(double); //角度转弧度

int main()

{

cout << "sin(π/2)的值为" << mysin(pi / 2) << endl;

cout << "利用库函数得到sin(π/2)的值为" << sin(pi / 2);

cout << endl << endl;

cout << "sin(56°)的值为" << mysin(myDegtoRad(56.0)) << endl;

cout << "利用库函数得到sin(56°)的值为" << sin(myDegtoRad(56.0));

cout << endl << endl;

cout << "cos(87°)的值为" << mycos(myDegtoRad(87.0)) << endl;

cout << "利用库函数得到cos(87°)的值为" << cos(myDegtoRad(87.0));

cout << endl << endl;

cout << "cos(π/3)的值为" << mycos(pi / 3) << endl;

cout << "利用库函数得到cos(87°)的值为" << cos(pi / 3);

cout << endl << endl;

return 0;

}

double mysin(double x)

{

double sum = x, x_pow = x, item;

int n = 1, fact = 1, sign = 1;

do

{

fact = fact * (n + 1) * (n + 2);

x_pow *= x*x;

sign = -sign;

item = x_pow / fact * sign;

sum += item;

n += 2;

}while (myabs(item) > 1e-5);

return sum;

}

double mycos(double x)

{

double sum = 1, x_pow = 1, item;

int n = 0, fact = 1, sign = -1;

do

{

fact = fact * (n + 1) * (n + 2);

x_pow *= x*x;

item = x_pow / fact * sign;

sum += item;

sign = -sign;

n += 2;

}while (myabs(item) > 0.00001);

return sum;

}

double myabs(double x)

{

return ((x >= 0)?x:-x);

}

double myDegtoRad(double x)

{

return (x/180) * pi;

}

【项目6扩展(选做)-编制三角函数表】

要求在main()函数中调用show_sin_table(min_angle, max_angle),显示角度值为min_angle到max_angle之间的所有角度(间隔为1度)的正弦值。要求不能用数学库函数,将项目6中的mysin函数拷贝到这个程序中,用于计算sin值。例如show_sin_table(0, 90)可以显示出所有0到90度的正弦值。为取得更好的效果,可以考虑像英尺到米的转换一样,以速查表格的形式给出结果。

#include

#include

using namespace std;

double mysin(double);

double myabs(double);

void show_sin_table(int, int);

const double pi = 3.1415926;

int main()

{

show_sin_table(0, 90);

return 0;

}

void show_sin_table(int iFromAngle, int iToAngle)

{

int x, count = 0;

cout << "由" << iFromAngle << "°到"

<< iToAngle << "°的三角函数表:" << endl;

cout << setiosflags(ios::fixed) <<

setiosflags(ios::right) << setprecision(4);

for (x = 0; x < 3; x++)

cout << setw(8) << " 角度x" << setw(12) << " sin(x)";

cout << "\n";

for (x = iFromAngle; x <= iToAngle; x++)

{

cout << setw(8) << x << setw(12);

cout << mysin(x*pi/180);

if (count%3 == 2) cout << "\n";

++count;

}

cout << "\n";

return;

}

double mysin(double x)

{

double sum = x, x_pow = x, item;

int n = 1, fact = 1, sign = 1;

do

{

fact = fact * (n + 1) * (n + 2);

x_pow *= x*x;

sign = -sign;

item = x_pow / fact * sign;

sum += item;

n += 2;

}while (myabs(item) > 1e-5);//1e-5 到123°就算不了了

return sum;

}

double myabs(double x)

{

return ((x >= 0)?x:-x);

}

如果觉得《正弦函数泰勒展开c语言 C++ 学习笔记_0012_函数(泰勒展开式 三角函数表)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。