打印

急,高手帮忙

[复制链接]
1941|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
undeadzhen|  楼主 | 2007-6-11 16:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这段程序没有编错,可是算不出结果,请指点,屏幕上没有结果。
float f(float x)
{
    float y;
//    y=(((0.54525/1e7-1.2103722/1e10*273.16)*x + 1.4307/1e7*273.16 - 0.75/1e4)*x + 0.57/1e4*273.16)*x-0.7;
    y=(0.54525/1e7-1.2103722/1e10*273.16)*x*x*x + (1.4307/1e7*273.16 - 0.75/1e4)*x*x + (0.57/1e4*273.16)*x;//-0.7;
    return(y);
}
float xpoint(float x1,float x2)
{
    float y;
    y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
    return(y);
}
float root(float x1,float x2)
{
//    int i;
    float x,y,y1;
    y1=f(x1);
    do
    {
        x=xpoint(x1,x2);
        y=f(x);
        if(y*y1>0)
        {
            y1=y;
            x1=x;
        }
        else
        {
            x2=x;
        }
    }
    while(fabs(y)>=0.0001);
    return(x);
}
main()
{
    float x1=0,x2=70,f1,f2,x;
    do
    {
        f1=f(x1);
        f2=f(x2);
    }
    while(f1*f2>=0);
    x=root(x1,x2);
    printf("A root of equation is%f",x);
    while(1);
}

相关帖子

沙发
undeadzhen|  楼主 | 2007-6-11 16:37 | 只看该作者

补:

为什么按照这个方法求解1元3次方程就是解不出来

使用特权

评论回复
板凳
lbx_00| | 2007-6-13 21:57 | 只看该作者

这个

do
    {
        f1=f(x1);
        f2=f(x2);
    }
    while(f1*f2>=0);

看看你的子程序,对于许多x1和x2,你的循环里又不改变x1和x2的值,那么循环条件就永远满足,初步来了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

66

帖子

0

粉丝