| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2114 人关注过本帖
标题:牛顿迭代法
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
结帖率:99.25%
收藏
已结贴  问题点数:20 回复次数:16 
牛顿迭代法
谭浩强c第四版218页12题~

用牛顿迭代法求根。方程ax^3+bx^2+cx+d=0,系数a,b,c,d的值依次为1,2,3,4,由主函数输入。求x在1附近的一个实根。求出根后由主函数输出。

不懂牛顿迭代法~求解~
2017-01-20 21:50
白衣柳相
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:142
专家分:168
注 册:2016-12-23
收藏
得分:20 

#include<stdio.h>
#include<math.h>
int main()
{
    double solut(double ,double ,double ,double );
    double a,b,c,d;
    scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
    printf("%.2f",solut(a,b,c,d));;
    return 0;
}
double solut(double a,double b,double c,double d)
{
    double x=1,x1=2,f,f1;
    while(fabs(x1-x)>=0.00000001)
    {
        f=((a*x+b)*x+c)*x+d;
        f1=(3*a*x+2*b)*x+c;
        x=x1;
        x1=x-f/f1;
    }
    return x1;
}

啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦代码不是我滴,百度滴,,,,,

[此贴子已经被作者于2017-1-20 22:02编辑过]


什么最重要,学习!!!! 我要你们无话可说!我想要的东西自己去拿
2017-01-20 21:56
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
满分~结~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-20 22:00
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
好像结贴过早了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-20 22:02
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
突然发现结贴过早了还有些细节没有消化~虽然编程还可以可惜高数不过关~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-20 22:47
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 5楼 九转星河
好像和求导有关
收到的鲜花
  • 九转星河2017-01-20 23:46 送鲜花  10朵   附言:看得出来~

DO IT YOURSELF !
2017-01-20 23:42
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
收藏
得分:0 
程序代码:
#include <stdio.h>
int main(void)
{
    double a = 1 , b = 2 , c = 3 , d = 4;
    double jump = 0.000001;    //这个是精度,可自行修改
    double x = 1+jump;
    double y = 0;

    do {
        x = x - jump;    //x从1开始以jump的精度缩小
        y = a*x*x*x+b*x*x+c*x+d;    //公式结果赋予y
        printf(" x的值等于:%lf,结果就等于:%lf\n",x,y);
    }while(y>jump || x>jump);    //如果y小于精度,则足够少,可以结束并打印结果,如果x小于精度,说明求不出结果,结束。
    
    if (x < jump){    //判断一下,怕数据越界
        printf("\n 最后需要设置x为:%lf,公式的结果就等于:%lf。\n",x,y);    //最后输出结果。
    }else{
        printf("\n 最后x超出精度也求不出目标精度的结果。\n");
    };
    return 0;
}


不知有否理解错误题目,请大家检阅。
收到的鲜花
  • 九转星河2017-01-21 10:44 送鲜花  5朵   附言:……
2017-01-21 01:29
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10539
专家分:42927
注 册:2014-5-20
收藏
得分:0 
以下是引用九转星河在2017-1-20 21:50:25的发言:

谭浩强c第四版218页12题~

用牛顿迭代法求根。方程ax^3+bx^2+cx+d=0,系数a,b,c,d的值依次为1,2,3,4,由主函数输入。求x在1附近的一个实根。求出根后由主函数输出。

不懂牛顿迭代法~求解~

函数:f(x)=x*x*x+2x*x+3x+4
导函数:f'(x)=3x*x+4x+3
X(n+1) = Xn - f(Xn)/f'(Xn)
收到的鲜花
  • 九转星河2017-01-21 10:46 送鲜花  15朵   附言:谢谢吹版解答~
2017-01-21 07:39
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 7楼 kin3z
这个看上虽然很好理解~但看上去用二分法更快~牛顿迭代法应该不会运算那么多步骤~不知我有没有理解错题目~
        还是谢谢你的解答~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-21 10:44
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 8楼 吹水佬
谢啦~我还是去看看牛顿迭代法怎么用~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-21 10:45
快速回复:牛顿迭代法
数据加载中...
 
   



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

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