- /*
- * Copyright (c) 2013, 烟台大学计算机学院
- * All rights reserved.
- * 作 者:王英华
- * 完成日期:2013 年 11 月 14日
- * 版 本 号:v1.0
- * 问题描述:用in和cos的泰勒展开式编程序,求出下面四个式子的值,当最后一项的绝对值小于0.00001时,累加结束。
- * 问题分析:要求自定义四个函数,分别是mysin,mycos,myabs,fac求sin的泰勒展开式,cos的泰勒展开式,最后一项的绝对值和分母的绝对值。
#include <iostream> #include<cmath> using namespace std; const double pi=3.1415926; double mysin(double); double mycos(double); double myabs(double); int fac(int); 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; } int fac(int l) { int i; int sum=1; if(l==0) { sum=1; } else { for(i=1; i<=l; i++) { sum*=i; } } return sum; } double mysin(double n) { int i; int k=1; double sum=0; for(i=1; pow(n,i)/ fac(i)>0.000001; i+=2) { sum+=pow(n,i)/ fac(i)* k; k=-1* k; } return sum; } double mycos(double m) { int i; int k=1; double sum=0; for(i=0; pow(m,i)/ fac(i)>0.000001; i+=2) { sum+=pow(m,i)/ fac(i)* k; k=-1* k; } return sum; }
运行结果: