牛顿-拉普森法求解线性方程组原理及matlab程序

这篇具有很好参考价值的文章主要介绍了牛顿-拉普森法求解线性方程组原理及matlab程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


牛顿-拉普森法原理

在多变量微积分和矩阵理论的交叉点是求解非线性代数方程的迭代方法。设是的 n n n个未知向量x,有
F ( x ) = 0 ∈ R n \mathbf{F}\left( \mathbf{x} \right) =0\in \text{R}^{\text{n}} F(x)=0Rn
就是求解x n n n个非线性方程组,其中向量函数具有连续导数,并且雅可比矩阵 F x ( x ) \mathbf F_\mathbf{x}(\mathbf x) Fx(x) R n R^n Rn的开集D中是非奇异的。在解的估计值为 x 0 x^0 x0的情况下,一阶泰勒展开寻求 x 0 x^0 x0的扰动 Δ x 0 \Delta x^0 Δx0,该干扰 Δ x 0 \Delta x^0 Δx0使得 x 1 = x 0 + Δ x 0 \mathbf{x}^1=\mathbf{x}^0+\Delta \mathbf{x}^0 x1=x0+Δx0更好地逼近解,使得
F ( x 0 ) + F x ( x 0 ) Δ x 0 = 0 \mathbf{F}\left( \mathbf{x}^0 \right) +\mathbf{F}_{\mathbf{x}}\left( \mathbf{x}^0 \right) \Delta \mathbf{x}^0=0 F(x0)+Fx(x0)Δx0=0
经过 J J J次迭代,增量方程可表示为
F x ( x j ) Δ x j = − F ( x j ) x j + 1 = x j + Δ x j \begin{array}{l} \mathbf{F}_{\mathbf{x}}\left( \mathbf{x}^{\mathbf{j}} \right) \Delta \mathbf{x}^{\mathbf{j}}=-\mathbf{F}\left( \mathbf{x}^{\mathbf{j}} \right)\\ \mathbf{x}^{j+1}=\mathbf{x}^{\text{j}}+\Delta \mathbf{x}^{\text{j}}\\ \end{array} Fx(xj)Δxj=F(xj)xj+1=xj+Δxj
一直持续到 ∥ F ( x j + 1 ) ∥ ≤ Tol \lVert \mathbf{F}\left( \mathbf{x}^{j+1} \right) \rVert \leq \text{Tol} F(xj+1)Tol ,其中Tol为解的容差。
如果 x 0 x^0 x0足够接近解,则该方法二次收敛于解;即
∥ x ˉ − x j + 1 ∥ ≤ k ∥ x ˉ − x j ∥ 2 \lVert \mathbf{\bar{x}}-\mathbf{x}^{j+1} \rVert \leq \text{k}\lVert \mathbf{\bar{x}}-\mathbf{x}^j \rVert ^2 xˉxj+1kxˉxj2
其中 x ‾ \overline x x是解, k k k是常数。然而,良好的初始估计通常很难获得,并且对于较差的初始估计,该方法可能会产生偏差。幸运的是,在时间 t i + 1 = t i + h , ( i = 1 , 2 , … , h 很 小 ) t_i+1=t_i+ h,(i=1,2,…,h很小) ti+1=ti+hi=1,2,h的运动学和动力学模拟应用中,其解可以用作 t i + 1 t_i+1 ti+1的初始估计,并且很可能收敛。


Nowton-Raphson方法matlab程序?

代码如下(示例):

tolerance=1.0e-10;  %迭代误差
x=0.5;  %初始值
iters=0;    %迭代次数
rnorm=1.0;    %初始误差的最大值
itersmax=20;    %最大迭代次数
while iters<itersmax && rnorm>tolerance  %Iteration for x, through line 15
fx=1+sin(x)-x;    %原函数
dfx=cos(x)-1;   %函数的一阶导数
K=-dfx; R=fx;
delx=R/K;  %Newton-Raphson iteration,x的增量
x=x+delx;
rnorm=abs(R);  
iters=iters+1;
fprintf('iters=%3d,|R|=%14.5e,|delx|=%14.5e\n',iters,rnorm,abs(delx));
end
% 输出最终结果
if rnorm<tolerance
    fprintf('the converged solution is:x=%14.6e,f(x)=%15.8e\n',x,fx);
else
    fprintf('oops,your newton-raphson failed')   
end

输出结果文章来源地址https://www.toymoban.com/news/detail-449986.html

iters=  1,|R|=   9.79426e-01,|delx|=   8.00070e+00
iters=  2,|R|=   6.70264e+00,|delx|=   4.18242e+00
iters=  3,|R|=   4.24162e+00,|delx|=   3.06478e+00
iters=  4,|R|=   6.96585e-01,|delx|=   1.01248e+00
iters=  5,|R|=   4.98041e-01,|delx|=   3.03586e-01
iters=  6,|R|=   3.80906e-02,|delx|=   2.75686e-02
iters=  7,|R|=   3.52559e-04,|delx|=   2.59991e-04
iters=  8,|R|=   3.15841e-08,|delx|=   2.32956e-08
iters=  9,|R|=   4.44089e-16,|delx|=   3.27548e-16
the converged solution is:x=  1.934563e+00,f(x)=-4.44089210e-16

到了这里,关于牛顿-拉普森法求解线性方程组原理及matlab程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MATLAB数值分析学习笔记:线性代数方程组的求解和高斯消元法

    工程和科学计算的许多基本方程都是建立在守恒定律的基础之上的,比如质量守恒等,在数学上,可以建立起形如 [A]{x}={b} 的平衡方程。其中{x}表示各个分量在平衡时的取值,它们表示系统的 状态 或 响应; 右端向量{b}由无关系统性态的常数组成通常表示为 外部激励。 矩阵

    2023年04月15日
    浏览(61)
  • MATLAB数值分析学习笔记:线性代数方程组的求解和高斯-赛德尔方法

    迭代法是前面介绍的消元法的有效替代,线性代数方程组常用的迭代法有 高斯-赛德尔方法 和 雅克比迭代法, 下面会讲到二者的不同之处,大家会发现两者的实现原理其实类似,只是方法不同,本篇只重点介绍高斯-赛德尔方法。 看了我之前的笔记的同学应该已经对迭代法不

    2024年02月05日
    浏览(58)
  • 非线性方程组——牛顿迭代求根

    三维曲面函数的参数方程 x(u,v),y(u,v) ,z(u,v),且曲面满足凸性质,u属于[0,1],v属于[0,1],则在xoy平面任给一点p,过点p做一条平行与z轴的直线,假如该直线与曲面相交与一点,求该点的u,v值。用c++程序编写该数学案例,考虑继承和多态,要求用户给定的曲面作为输入,输

    2023年04月17日
    浏览(45)
  • 数值分析·学习 | 解线性方程组的直接方法(高斯消去法以及LU求解)matlab实现

    目录 一、前言: 二、算法描述: 三、实现代码: 1、高斯消去法: 2、高斯消去法-列主元消去法: 3、LU分解: 4、求逆矩阵: 四、总结: 个人学习内容分享 1、高斯消去法:         设有线性方程组         或写为矩阵形式

    2024年02月05日
    浏览(65)
  • 线性方程组的求解

    克莱姆法则 求解线性方程组有一种比较简单易行的方法就是用克莱姆法则 通过行列式的计算 以解出方程,下面给出行列式解方程的代码并分析优缺点; 对于一个n元一次方程组,如果可以将其化为n阶行列式就能使用克莱姆法则;例如: 有 D=    用(b1,b2,...bn)T替换D的第一列

    2024年02月05日
    浏览(39)
  • Matlab中求解线性方程组——高斯消元法、LU分解法、QR分解法、SVD分解法、迭代法等

    MATLAB迭代的三种方式以及相关案例举例 MATLAB矩阵的分解函数与案例举例 MATLAB当中线性方程组、不定方程组、奇异方程组、超定方程组的介绍 MATLAB语句实现方阵性质的验证 MATLAB绘图函数的相关介绍——海底测量、二维与三维图形绘制 MATLAB求函数极限的简单介绍 文章目录 前言

    2024年02月08日
    浏览(61)
  • 数值分析——线性方程组求解

    清理磁盘的时候偶然发现大二下数值分析的实验作业还在,本着在丢弃之前可以放在网上以备不时之需的原则,我便发了上来。 分别用直接法、Jacobi迭代法、Gauss-Seidel迭代法求解下列线性方程组AX = b,其中A为五对角矩阵(n=20),b是除第一个分量是1外,其他分量都是0的列向量

    2024年02月05日
    浏览(40)
  • 线性代数代码实现(七)求解线性方程组(C++)

    前言:         上次博客,我写了一篇关于定义矩阵除法并且代码的文章。矩阵除法或许用处不大,不过在那一篇文章中,我认为比较好的一点是告诉了大家一种计算方法,即:若矩阵  已知且可逆,矩阵  已知,并且  ,求解矩阵 B 。我认为这种初等行变换的方法还是挺

    2023年04月23日
    浏览(46)
  • matlab求解方程和多元函数方程组

    核心函数solve 一般形式 S=solve(eqns,vars,Name,Value) ,其中: eqns是需要求解的方程组; vars是需要求解的变量; Name-Value对用于指定求解的属性(一般用不到); S是结果,对应于vars中变量; 单个方程求解 方程:sin(x)=1 代码: 结果: 说明: MATLAB定义方程用的是 == 符号,就是这样

    2024年02月08日
    浏览(42)
  • 【算法竞赛模板】求解线性方程组是否有解(求解矩阵的秩)

        在实际运用中需判断线性方程组有无解,可以通过矩阵运算判断线性方程组是否有解 线性方程组有无解总结: 矩阵求解秩流程:    所以:当我们遇到题目问线性方程组是否有解时,只需求解系数矩阵的秩与增广矩阵的秩的关系 。我们可以通过分别求系数矩阵与增

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包