牛顿-拉普森法求解线性方程组原理及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

输出结果

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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
牛顿-拉普森迭代算法是一种用于求解逻辑回归的方法。该算法的目标是通过最大化逻辑回归的对数似然函数来找到最优参数。牛顿-拉普森迭代算法结合了牛顿法和拉普拉斯近似的思想。 牛顿-拉普森迭代算法的步骤如下: 1. 初始化参数向量θ为0。 2. 在每次迭代中,计算似然函数的梯度和海塞矩阵。梯度表示函数在某一点的斜率,海塞矩阵表示函数的曲率。 3. 利用海塞矩阵和梯度计算牛顿方向,即在当前位置下降最快的方向。 4. 更新参数向量θ,使其朝着牛顿方向移动一定步长。 5. 重复步骤2-4,直到满足收敛条件。 牛顿-拉普森迭代算法相比于批量梯度下降算法收敛更快,并且通常只需要迭代更少的次数才能达到最小值。然而,一次牛顿-拉普森迭代可能比一次梯度下降代价更高,因为它需要找到并计算一个n x n的海塞矩阵。但是,只要参数维度n不是太大,总体上来说牛顿-拉普森迭代算法仍然更快。 总而言之,牛顿-拉普森迭代算法是一种用于求解逻辑回归的优化算法,它通过最大化对数似然函数来找到最优参数向量θ。该算法结合了牛顿法和拉普拉斯近似的思想,能够更快地收敛到最小值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [CS229 Part2 分类与逻辑回归](https://blog.csdn.net/u010665216/article/details/77620930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科研虫

整理不易,请多支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值