| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 415 人关注过本帖
标题:求解高次方程的代码为什么不对呢?
只看楼主 加入收藏
胡振杰
Rank: 2
等 级:论坛游民
帖 子:41
专家分:63
注 册:2012-9-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
求解高次方程的代码为什么不对呢?
#include <stdio.h>
#include <math.h>
void main()
{
    float x1,x2,y1,y2;
    do
    {
        printf("Input two numbers:\n");
        scanf("%f,%f",&x1,x2);
        y1=f(x1);
        y2=f(x2);
    }while(y1*y2<0);
    x=root(x1,x2);
    printf("A root is %f",x);
}


float f(float)
{
    return(x^3-5x*x+16x-80);
}
float xpoint(float x1,float x2)
{
    return(x1*f(x2)-x2*f(x1))/(f(x1)-f(x2));
}
float root(float x1,float x2)
{
    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.000001);
}
这个求解x^3-5x^2+16x-80=0的代码为什么总是错呢?请大家帮我看看,修改一下吧。
搜索更多相关主题的帖子: return numbers include 
2012-10-13 11:01
菜鸟一支
Rank: 6Rank: 6
来 自:何美杭
等 级:侠之大者
威 望:1
帖 子:121
专家分:456
注 册:2012-10-10
收藏
得分:7 
楼主这时用割线法求一元高阶方程吧

小弟何美杭,所发表的都仅代表个人观点,欢迎批评指正。
2012-10-13 14:19
菜鸟一支
Rank: 6Rank: 6
来 自:何美杭
等 级:侠之大者
威 望:1
帖 子:121
专家分:456
注 册:2012-10-10
收藏
得分:0 
如果楼主有教材的话,可以看一下上面关于割线法求一元高阶方程的思路:先解出X0,再判断f(XO)与f(X1)、f(X2)的正负关系。(假如f(X0)与f(X1)异号,则根在f(X0)与f(X1)之间,否则,则在f(X0)与f(X2)之间。然后构成循环。)
而且个人觉得这个程序写的有点过于复杂了。

小弟何美杭,所发表的都仅代表个人观点,欢迎批评指正。
2012-10-13 14:38
经哥
Rank: 3Rank: 3
来 自:代码空间
等 级:论坛游侠
威 望:1
帖 子:289
专家分:124
注 册:2012-9-8
收藏
得分:7 
话说你不进行函数声明就可以调用f()函数?
    非官方提示

我只是个演员,还是业余的!!
2012-10-13 14:38
胡振杰
Rank: 2
等 级:论坛游民
帖 子:41
专家分:63
注 册:2012-9-14
收藏
得分:0 
上面就是用的弦割法但是,不对。。。。。
2012-10-14 08:09
快速回复:求解高次方程的代码为什么不对呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.112844 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved