| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2192 人关注过本帖
标题:牛顿迭代法
只看楼主 加入收藏
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用九转星河在2017-1-21 10:45:22的发言:

谢啦~我还是去看看牛顿迭代法怎么用~

X(n+1) = Xn - f(Xn)/f'(Xn)
这个就是牛顿迭代法
2017-01-21 11:57
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
收藏
得分:0 
看了一下资料,我想两方面,一个是数学上的原理理论,二是程序设计上的实现。
01:
数学原理本人不专,解不了为何,不过捉取比较满意的网上理论望能参考:
http://wenku.baidu.com/view/759b45fc910ef12d2af9e719.html?re=view

里面也提供了一个很简介的C实现程序,感觉代码也非常好。
02:
代码方面,也找到一个实现牛顿迭代法快好几倍的迷之代码。资料如下:
http://blog.

最后本人也开始有兴趣,如有更深入的理解或探讨,请不嫌弃多讲解与普及,谢谢。
收到的鲜花
  • 九转星河2017-01-21 16:35 送鲜花  20朵   附言:看图万岁~
2017-01-21 14:23
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 12楼 kin3z
看图就明了~原来核心原理很简单~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-21 16:33
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
看图万岁~理解万岁~
图片附件: 游客没有浏览图片的权限,请 登录注册

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-21 16:37
moox
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:92
专家分:93
注 册:2017-1-21
收藏
得分:0 
回复 楼主 九转星河
牛顿迭代法公式(一维)是 x[i+1]=x[i]-f(x[i])/ D(f(x[i]))
其中,想x[i]是一个比较精确的值(x[0]为初值,可以自己给定一个数),x[i+1]则是比x[i]更精确的值。
对于Newton迭代法有个下山公式,具体可以参考《数值分析与计算方法》。
收到的鲜花
  • 九转星河2017-01-21 18:44 送鲜花  5朵   附言:这个我以后有时间慢慢看~
2017-01-21 18:17
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
太开心了~在众多大神的帮助下~自己终于用牛顿迭代法做出来了~

虽然写得不那么规范~但还是拿出来看下~
程序代码:
#include<stdio.h>
#include<math.h>
#define K 1e-5
double fun(int a,int b,int c,int d,double x)
{
    return (((a*x+b)*x+c)*x+d);
}

double fun_2(int a,int b,int c,double x)
{
    return (3*a*x*x+2*b*x+c);
}
int main()
{
    int a=1;
    int b=2;
    int c=3;
    int d=4;
    
    double x=1;
    double y1=0;
    double y2=0;
    double bb=0;
    
    do
    {
         y1=fun(a,b,c,d,x);
         y2=fun_2(a,b,c,x);    
         bb=y1-y2*x;

        x=-bb/y2;

    }while (fabs(y1)>K);
    
    printf("%lf\n",x);
    
    return 0;
}




[此贴子已经被作者于2017-1-21 21:32编辑过]


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

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



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

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