您的位置:首页 > 编程语言

用sin和cos的泰勒展开式编程序,求出sin(π/2)、sin(56°)、cos(87°)、cos(π/3),当最后一项的绝对值小于0.00001时,累加结束

2013-11-17 14:45 477 查看
我的程序:

01./*
02.* 程序的版权和版本声明部分:
03.* Copyright (c) 2013, 烟台大学计算机学院
04.* All rights reserved.
05.* 文件名称:test.cpp
06.* 作    者:王鲁峰
07.* 完成日期:2013 年 11月17 日
08.* 版 本 号:v1.0
09.* 对任务及求解方法的描述部分:
10.* 输入描述:无
11.* 问题描述:用sin和cos的泰勒展开式编程序,求出sin(π/2)、sin(56°)、cos(87°)、cos(π/3),
当最后一项的绝对值小于0.00001时,累加结束
12.* 程序输入:略
13.* 程序输出:略
14.* 算法设计:略
15.*/

#include <iostream>
using namespace std;
const double PI=3.1415926;
double mysin(double);
double mycos(double);
double myabs(double);
int main( )
{
cout<<"sin(π/2)的值为"<<mysin(PI/2)<<endl;
cout<<"sin(56°)的值为"<<mysin((56.0/180)*PI)<<endl;
cout<<"cos(87°)的值为"<<mycos((87.0/180)*PI)<<endl;
cout<<"cos(π/3)的值为"<<mycos(PI/3)<<endl;
return 0;
}

double mysin(double x)
{
double sum=x,x_pow=x,item;
int n=1,s=1,a=1;
while(myabs(item)>0.00001)
{
s=s*(n+1)*(n+2);

x_pow*=x*x;

a=(-1)*a;
item =x_pow/s*a;

sum+=item;

n+=2;
}
return sum;
}

double mycos(double x)
{
double sum=1,x_pow=1,item;
int n=0,s=1,a=-1;
do
{
s=s*(n+1)*(n+2);
x_pow*=x*x;
item =x_pow/s*a;
sum+=item;
a=(-1)*a;
n+=2;
}while(myabs(item)>0.00001);
return sum;
}

double myabs(double x)
{
return ((x>=0)?x:-x);
}

运行结果:



心得体会:

学好高数 学好C++ 这个泰勒公式帮了我很大忙。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐