| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 641 人关注过本帖
标题:大家看看这题错哪里了
只看楼主 加入收藏
caiznen
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-11-25
收藏
 问题点数:0 回复次数:9 
大家看看这题错哪里了
题目是用牛顿迭代法求方程ax^3+bx^2+cx+d=0在x=1附近的根,错哪里了?????


#include<stdio.h>
#include<math.h>
void main()
{
    float hs(int x[4]);
    int i,a[4];
    float b;
    printf("please input four numbers\n");
    for(i=0;i<=3;i++)
        scanf("%d",&a[i]);
    b=hs(a);
    printf("The result is %f\n",b);
}
float hs(int x[4])
{
    float m,n=1,f,f1;
    for(;fabs(m-n)<=0.000001;)
    {
        m=n;
        f=x[0]*m*m*m+x[1]*m*m+x[2]*m+x[3];
        f1=3*x[0]*m*m+2*x[1]*m+x[2];
        n=m-f/f1;
    }
    return(n);
}
搜索更多相关主题的帖子: C语言 
2008-11-28 10:32
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
牛顿定律?没学..
反正执行的话我这里没错,如果你那里是执行错了,看看这段可以拨
程序代码:
#include<stdio.h>
#include<math.h>
float hs(int x[4])
{
    float m,n=1,f,f1;
    for(;fabs(m-n)<=0.000001;)
    {
        m=n;
        f=x[0]*m*m*m+x[1]*m*m+x[2]*m+x[3];
        f1=3*x[0]*m*m+2*x[1]*m+x[2];
        n=m-f/f1;
    }
    return(n);
}
void main()
{
    float hs(int x[4]);
    int i,a[4];
    float b;
    printf("please input four numbers\n");
    for(i=0;i<=3;i++)
        scanf("%d",&a[i]);
    b=hs(a);
    printf("The result is %f\n",b);
    getch();
}

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-11-28 12:53
caiznen
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-11-25
收藏
得分:0 
不对啊,如果是ax^3+bx^2+cx+d=0中
令a=1.b=2,c=3,d=4的到的结果是1,这怎么可能?
2008-11-28 18:51
dubukuangye
Rank: 1
等 级:新手上路
威 望:2
帖 子:155
专家分:3
注 册:2008-11-11
收藏
得分:0 
我改了下,但输入Ls的数据就卡了,难道是这台机子有问题?(我代码看过很多遍了,没发现会出现死循环的可能啊),请大侠帮助!
#include<stdio.h>
#include<math.h>
float hs(int x[])
{
    float m=2,f,f1;
    for(;fabs(m-1)>=0.000001;)
    {
        f=x[0]*m*m*m+x[1]*m*m+x[2]*m+x[3];
        f1=3*x[0]*m*m+2*x[1]*m+x[2];
        m=m-f/f1;
    }
    return(m);
}
void main()
{
    int i,a[4];
    printf("please input four numbers\n");
    for(i=0;i<=3;i++)
        scanf("%d",&a[i]);
    printf("The result is %f\n",hs(a));
    getch();
}

与其离开她为了过的更好,不如抓住她,自己努力让她过的更好
2008-11-28 19:23
嬿·嘄·骊·戨
Rank: 2
来 自:天府之国
等 级:论坛游民
帖 子:84
专家分:25
注 册:2008-10-16
收藏
得分:0 
这样的方程应该怎么解呢```

我不回唉``谁教教我啊``
2008-11-28 20:07
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
我没学过牛顿定律,不懂..

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-11-28 20:17
guoming1232006
Rank: 2
等 级:新手上路
威 望:4
帖 子:438
专家分:0
注 册:2008-11-20
收藏
得分:0 
#include<stdio.h>
#include<math.h>
void main()
{
    float hs(int x[4]);
    int i,a[4];
    float b;
    printf("please input four numbers\n");
    for(i=0;i<=3;i++)
        scanf("%d",&a[i]);
    b=hs(a);   //这里改为b=hs(a[4]);再试试//
    printf("The result is %f\n",b);
}
float hs(int x[4])
{
    float m,n=1,f,f1;
    for(;fabs(m-n)<=0.000001;)
    {
        m=n;
        f=x[0]*m*m*m+x[1]*m*m+x[2]*m+x[3];
        f1=3*x[0]*m*m+2*x[1]*m+x[2];
        n=m-f/f1;
    }
    return(n);
}

寡人有疾,寡人好色......
2008-11-28 21:40
guoming1232006
Rank: 2
等 级:新手上路
威 望:4
帖 子:438
专家分:0
注 册:2008-11-20
收藏
得分:0 
不好意思,上面的我改错了,应该是这样的
#include<stdio.h>
#include<math.h>
float hs(int x[4])
{
float m=1.0,n=1.0,f,f1;
while(fabs(m-n)<=0.000001)
{
m=n;
f=x[0]*m*m*m+x[1]*m*m+x[2]*m+x[3];
f1=3*x[0]*m*m+2*x[1]*m+x[2];
n=m-f/f1;
return(n);
}
}
void main()
{
    float hs(int x[4]);
    int i,a[4];
    float b;
    printf("please input four numbers\n");
    for(i=0;i<=3;i++)
    scanf("%d",&a[i]);
    b=hs(a[4]);
    printf("The result is %f\n",b);
    }

寡人有疾,寡人好色......
2008-11-28 21:45
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
#include<stdio.h>
#include<math.h>
void main()
{
    float hs(int x[4]);
    int i,a[4];
    float b;
    printf("please input four numbers\n");
    for(i=0;i<=3;i++)
        scanf("%d",&a[i]);
    b=hs(a);
    printf("The result is %f\n",b);
}
float hs(int x[4])
{
    float m=0,n=1,f,f1;                     //----这里m最好赋值
    for(;fabs(m-n)>=0.000001;)      //----这里条件写错了应改为>=
    {
        m=n;
        f=x[0]*m*m*m+x[1]*m*m+x[2]*m+x[3];
        f1=3*x[0]*m*m+2*x[1]*m+x[2];
        n=m-f/f1;
    }
    return(n);
}
2008-11-28 23:44
songsfly
Rank: 1
来 自:厦门大学
等 级:新手上路
帖 子:44
专家分:0
注 册:2008-11-25
收藏
得分:0 
#include "stdio.h"
#include "math.h"
void main()
{
    int a,b,c,d;float x;
    float gen(int,int,int,int);
    printf("请输入a,b,c,d的值,程序将求x=1附近的根\n");
    scanf("%d %d %d %d",&a,&b,&c,&d);
    x=gen(a,b,c,d);
    printf("方程的根是%f\n",x);

}
float gen(int a,int b,int c,int d)
{
    float x0=1.0,x1;
    while(1)
    {
        x1=x0-(a*pow(x0,3)+b*x0*x0+c*x0+d)/(3*a*x0*x0+2*b*x0+c);
        if(fabs(x1-x0)>=1e-5)x0=x1;
        else break;
    }return x1;
}
这是我的代码,楼主可参考下

yixiong89921.blog./
2008-11-29 00:01
快速回复:大家看看这题错哪里了
数据加载中...
 
   



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

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