我是靠谱客的博主 忧心帽子,最近开发中收集的这篇文章主要介绍牛顿迭代法-matlab实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

牛顿迭代法-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实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部