注册 登录
编程论坛 VC++/MFC

有请各位帮帮忙啊...真的很急...

爱之叶青 发布于 2010-09-28 15:44, 356 次点击
急求个三角函数的编程...就是sin(x)=..........就是(-1)的i次方再乘以x的(2i+1)次方..最后除以(2i+1)的阶乘....谢谢了..我要交给老师的..作业来的
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{   
   
    cout<<setprecision(15);
    cout<<"input x=";
    double x;
    cin>>x;
    cout<<"input required precision:";
    double prec;
    cin>>prec;
    double precp=1e100;
    int i=0;
    double result=0;

    do
    {
        double temp=1;
        for(int j=1;j<=(i+i+1);j++)
        {   
        
            temp*=x/j;
        
        
        }
        result+=temp;
        i++;
        precp=fabs(temp);

    }while(precp>prec);

    cout<<result<<endl;
    cout<<exp(x)<<endl;
    cout<<i<<endl;
    cout<<precp<<endl;

    return 0;
}
怎么改才对啊.....帮帮忙..
4 回复
#2
m21wo2010-09-28 21:17
帮你一下!呵呵!
程序代码:

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{   
   
    cout<<setprecision(15);
    cout<<"input x=";
    double x;
    cin>>x;
    cout<<"input required precision:";
    double prec;
    cin>>prec;
    double precp;
    double i=0;
    double result=0;

    do
    {
        double temp=1;
        for(int j=1;j<=(i+i+1);j++)
            temp*=x/j;
        temp=temp*pow(-1,i);
        result+=temp;
        i++;
        precp=fabs(temp);

    }while(precp>prec);
    cout<<"利用泰勒展开式得sin(x)为:"<<endl;
    cout<<result<<endl;
    cout<<"直接调用cmath库里函数sin(x)为:"<<endl;
    cout<<sin(x)<<endl;
    cout<<"泰勒展开式n值为:"<<endl;
    cout<<i<<endl;
    cout<<"在精度下泰勒展开式最后一项为:"<<endl;
    cout<<precp<<endl;

    return 0;
}
#3
爱之叶青2010-09-29 10:41
我令x=30,结果怎么等于-0.5的呀?
#4
爱之叶青2010-09-29 10:41
回复 2楼 m21wo
我令x=30,结果怎么等于-0.5呀
#5
m21wo2010-09-29 16:25
你输得30 是弧度啊 !一弧度约等于57度。所以sin(30)不等于0.5
只有本站会员才能查看附件,请 登录
1