注册 登录
编程论坛 C++教室

sinx的输出函数

baby俊 发布于 2011-04-15 11:07, 752 次点击
#include<iostream>
#include<cmath>
using namespace std;
int f(int x)
{
    int i,a=1,flag=-1;
    float s=0,t;
    for(i=1;i<=100;i++)
    {
    a=a*(2*i)*(2*i+1);
    t=flag*pow(x,2*i+1)/a;
    flag=-flag;
    s=s+x+t;
    }
    return s;
}
int main()
{
    float x;
    cout<<"Input x=";
    cin>>x;
    cout<<"sin"<<x<<'='<<f(x)<<endl;
    return 0;
}
不知道这是哪错了,求解?
8 回复
#2
Lyone2011-04-15 11:42
看到以下。fun的返回类型是int。但是其中的s变量定义的是float.

另外:
sin可以用怎么用公式来算。lz帮忙解释一下for循环是干嘛的?
#3
baby俊2011-04-15 11:59
用泰勒公式求解啊,t=x-x^3/ 3!+x^5/5!-.......;每改变一个i值则表示出一个x^n/n!;最后再求和啊
#4
Lyone2011-04-15 13:22
程序代码:
float f(float x)
{
    float a=1,s=0,t,flag=-1;
    for(int i=1;i<=100;i++)
    {
    a=a*float((2*i)*(2*i+1));
    t=flag*pow(x,float(2*i+1))/a;
    flag=-flag;
    s=s+x+t;
    }
    return s;
}
运算符前后的类型要统一。
#5
baby俊2011-04-15 22:03
运行结果还是不对啊?类型已经统一了啊
#6
pangding2011-04-15 22:32
s=s+x+t;
这句好像不是泰勒公式呀。套错了吧。
#7
baby俊2011-04-16 18:29
是的啊。。sinx=x-x^3/3!+x^5/5!-x^7/7!+.....是这个的吧!
#8
pangding2011-04-17 11:09
回复 7楼 baby俊
你每次循环的时候为什么要加 x ?
#9
baby俊2011-04-17 18:26
哦 。。 哦哦 。错了错了。。原来是这里错了啊!谢谢了,我就说,怎么值那么大呢。真笨也!
1