牛顿法在MATLAB中的实现

本文介绍了牛顿迭代法在MATLAB中的实现,包括定义函数、主程序和迭代过程的控制。通过示例代码展示了如何解决方程的根,并提供了多个实际应用案例,如多元函数的根查找和数据处理。
摘要由CSDN通过智能技术生成

 牛顿迭代法又称为切线法,简单来说就是不断求切线与x轴的交点,来逐渐接近解的迭代过程。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。具体迭代的方法可以看度娘的解释,或者相关的教材。今天来介绍下简单的matlab的实现。

利用迭代算法解决问题,需要做好以下三个方面的工作:

一、确定迭代变量

在可以用迭代算法解决的问题中,至少存在一个可直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。

二、建立迭代关系式

所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。

三、对迭代过程进行控制

在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析得出可用来结束迭代过程的条件。

matlab代码

编辑 播报

定义函数

function y=f(x)

y=f(x);%函数f(x)的表达式

end

function z=h(x)

z=h(x);%函数h(x)的表达式,函数h(x)是函数f(x)的一阶导数

end

主程序

x=X;%迭代初值

i=0;%迭代次数计算

while i

x0=X-f(X)/h(X);%牛顿迭代格式

if abs(x0-X)>0.01;%收敛判断

X=x0;

else break

end

i=i+1;

end

fprintf('\n%s%.4f\t%s%d','X=',X,'i=',i) %输出结果

%% This script is to solve a function root.
%% x^2+exp(X)-50=0;
   x0=0
   f= @(x) x.^2+sin(x)-5;
   df=@(x) x*2+cos(x);
   for j=1:100
       fprintf('values of x and f are %3.6f, %3.3e \n',x0,f(x0))
       x=x0-f(x0)/df(x0);
       if abs(f(x)) <1e-16
           break
       else
           x0=x;
       end
   end
   fprintf('values of x and f are %3.6f, %3.3e \n',x,f(x))

%% Find roots for f(x)=x^5-2*x^4-10*x^3+20*x^2+9*x-18
clc 
cl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值