牛顿迭代法
2015-09-23 21:26
447 查看
牛顿迭代
具体说明,请参见维基百科 http://zh.wikipedia.org/wiki/牛顿法
举一个栗子
找平方根
给一个数a,求其平方根。
设其平方根为x 则有 x^2 - a = 0,设函数f(x) = x^2 - a,
取x0的初值尽量靠近a的平方根(由于初值的选择影响迭代的次数)
依据 f(x0) = (x0 - x).f’(x0)
---> x = x0 - f(x0)/f’(x0) ①
---> x0 = x ②
反复①、②直到abs(x-x0)<=eps,达到精度要求就可以。
代码:
a = input();
x0 = Init_Value;
While( fabs(x-x0)>eps){
x0 = x;
x = x0 - f(x0)/f’(x0);
}
Eg. a = 2 , eps = 1e-8
X0 = 1.0
迭代过程中x的变化
1.5000000000000000
1.4166666666666667
1.4142156862745099
1.4142135623746899
1.4142135623730951
总的来说
F(x)函数连续,且在零点范围内收敛。
迭代的次数受x0和精度影响。
迭代的次数是非常小的相对(二分法),(精度乘法)
具体说明,请参见维基百科 http://zh.wikipedia.org/wiki/牛顿法
举一个栗子
找平方根
给一个数a,求其平方根。
设其平方根为x 则有 x^2 - a = 0,设函数f(x) = x^2 - a,
取x0的初值尽量靠近a的平方根(由于初值的选择影响迭代的次数)
依据 f(x0) = (x0 - x).f’(x0)
---> x = x0 - f(x0)/f’(x0) ①
---> x0 = x ②
反复①、②直到abs(x-x0)<=eps,达到精度要求就可以。
代码:
a = input();
x0 = Init_Value;
While( fabs(x-x0)>eps){
x0 = x;
x = x0 - f(x0)/f’(x0);
}
Eg. a = 2 , eps = 1e-8
X0 = 1.0
迭代过程中x的变化
1.5000000000000000
1.4166666666666667
1.4142156862745099
1.4142135623746899
1.4142135623730951
总的来说
F(x)函数连续,且在零点范围内收敛。
迭代的次数受x0和精度影响。
迭代的次数是非常小的相对(二分法),(精度乘法)
相关文章推荐
- java09 队列Queue与Deque
- [HW] OJ记录20题之二
- NOIP2010初赛 烽火传递
- dealloc函数中变量的release
- PKCS#1规范阅读笔记1--------基本概念
- MySQL安装图解
- wow 各职业体验(pvp)
- 简单的seo方法分享
- Android之PullToRefresh(ListView 、GridView 、WebView)使用详解和总结
- 黑马程序员----C 语言学习笔记之位运算符
- 十、行为型模式之观察者、命令、状态-----《大话设计模式》
- 类与对象
- noip2009 hankson的趣味题 (扩展欧几里得求最大公约数,最小公倍数与最大公约数)
- iOS大典之点击旋转, 点击停止
- Android 4.4以上(改变状态栏的背景颜色)开源工程推荐
- 输入十个数,输出其中最大的一个数
- HDU 5221 Occupation(树链剖分)
- Python抓取新闻标题和链接
- atitit.无线上网卡 无法搜索WiFi 解决无线路由器信号不能被连接
- 1.网络工具:ifconfig,ping,netstate,Redhat命令和图形化设置ip,finger,nslookup