概述
牛顿迭代法-matlab实现
牛顿迭代法简介:
牛顿迭代法又称为切线法,简单来说就是不断求切线与x轴的交点,来逐渐接近解的迭代过程。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。具体迭代的方法可以看度娘的解释,或者相关的教材。今天来介绍下简单的matlab的实现。
代码实现:
使用了三个.m文件来实现,分别是原函数(需要迭代的函数)文件、牛顿迭代函数文件、和实现的主文件。
1.原函数的输入:
function y = newton(x)
y = exp(-x/4)*(2-x)-1;%任意函数
end
%function的自定义函数用来保存咱们要进行牛顿迭代的函数
2.牛顿迭代函数:
把你要进行牛顿迭代的函数进行变化,变成牛顿迭代函数。先要了解牛顿迭代函数的基本格式,
牛顿迭代公式:
**???? (????) = ???? − ???? ???? ????′**
代码:`
function y = newton1(x)
syms a;
f = a - (newton(a)./diff(newton(a)));
y = subs(f,x);%牛顿迭代公式
end
%如果直接用y和x来实现的话,在掉用原函数的时候就算出了具体数值,公式中的求导就会变为0,
无法求解,所以先用f,a来代替y和x,最后再进行替换,实现牛顿迭代公式。
3.主程序(进行牛顿迭代)
代码:
x = input('x=');%开始迭代最初的x
eps = input('eps=');%定义所要求解的精度
syms x1;%定义两Xk+1和Xk的差,一次来限制精度的要求
x1=100;
syms xa;
xa=x;
syms xb;%记录上一个x和下一个x
while x1>eps
xb = xa;
xa = newton1(xb);
x1 = abs(xa-xb);%得到▲x
end
disp('该函数符合规定精度的解是:');
double(xa)
xa即为所求的值
总结:
代码用来限制精度的方面只是简单的用前后两次的x进行做差来限制,还有很多不足,有时候是不成立的,像这两次的x误差很小,但是第三个x的时候开始发散,那xa所求的就不是正确答案,牛顿迭代法也有很多的限制,例如开始迭代的x如果取得不好也无法实现迭代过程,求最开始的迭代x值,可以结合二分法迭代来解决,进一步缩小有根区间,在进行牛顿迭代,代码可能还有很多不足和错误,欢迎大家指正。
最后
以上就是忧心帽子为你收集整理的牛顿迭代法-matlab实现的全部内容,希望文章能够帮你解决牛顿迭代法-matlab实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复