找回密码
 注册
关于网站域名变更的通知
查看: 379|回复: 1
打印 上一主题 下一主题

MATLAB源程序代码分享:MATLAB实现牛顿迭代法求解非线性方程组

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-11 10:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
. P) v+ f3 ^# w& ?+ R! Y
; V( e, S" @, V, a; \9 R8 _
MATLAB源程序代码分享:MATLAB实现牛顿迭代法求解非线性方程组7 i+ Y( t1 g7 C3 o. s1 }
" ~' A% _8 }# k

) E; @! ?. g' c( L
" ?7 a! Z% r+ P& d%% 定义一个三元非线性方程组9 j; C1 F  g8 ?1 |
clear;clc;close all/ U: I/ E' w: O% W: e: n) O5 b6 X- j
syms x y z                          % 定义符号变量 x y z
; V! C. M' ^( r+ Q  Jf1=6/(1+(x-y).^2)+sin(pi*y/2);      % 方程 1/ T6 ~* ]( l! r; H3 _
f2=x*sin(pi*x)+y*sin(20*pi*y)-z;    % 方程 2' m3 U6 [6 P) T6 l. o
f3=x+2.0*y+z;                       % 方程 3
! h/ N) u7 v' o, ff=[f1;f2;f3];                       % 三个方程组成方程组+ [2 b) P* f# t3 @- n

' ^9 L; b0 H4 x. h2 w* U%% 计算雅克比矩阵
% I% K" ?( a4 [0 a6 c& J2 z( c& R) aJ=[diff(f1,x) diff(f1,y) diff(f1,z) 8 \+ N5 |% d" o; G- a
   diff(f2,x) diff(f2,y) diff(f2,z)
8 x4 K3 |0 A  c4 z% }. F! y   diff(f3,x) diff(f3,y) diff(f3,z)];
8 ~7 W; N/ k0 \% n4 S+ u
  |9 N1 C3 h7 Y$ S%% 自定义牛顿迭代算法, 求方程组的解
. g7 [3 r% d9 in=1;                               % 记录迭代的次数
% {  O+ S, r" i( Ox0=[-5;0;7];                       % 迭代初值( c4 M0 W1 @* ?2 }# P+ C" c" u
E=1;
* I! |( m* z! x- w  \8 bwhile E > 1e-4                     % 如果精度不满足要求, 则一直进行迭代, 直到满足精度为止
# b5 L9 ]) b' @+ F& L    x=x0(1);                       % 给 x 赋值, F: w# w  O- u
    y=x0(2);                       % 给 y 赋值
: X0 J$ I8 ?! |3 |4 C1 p    z=x0(3);                       % 给 z 赋值' W+ y0 z8 v2 m/ G  L$ P
    x1=x0-inv(eval(J))*eval(f);    % 迭代计算, 用 x0 迭代得到 x1  a0 n- D9 c3 [0 o7 O$ }; F
    E=max(abs((x1-x0)./x1));       % 计算求解的精度
& C9 x" p) P! P& d9 B    x0=x1;                         % 将当前得到的解 x1 赋值给 x0, 做为下一次迭代的值
! C7 K, N+ Q  ?' f3 v- T+ @9 A' O    n=n+1;                         % 迭代次数加 1  
- m+ t+ F1 @' x! h+ {3 U; wend
3 e3 x2 c9 A4 e# T# ~* `9 A7 x5 q+ Y+ P7 @& V
%% 显示方程组的解, 并将求解结果带回方程组, 验算求解结果
- i! S1 i. @" _: `0 H" K2 e5 Ix=x1(1)    % x 的求解结果7 y" p; n4 b: L- }
y=x1(2)    % y 的求解结果
$ S0 R) S# t/ s4 l7 H# P9 \$ `z=x1(3)    % z 的求解结果
1 d+ c/ u1 y& a6 f* aeval(f)

该用户从未签到

2#
发表于 2020-3-11 17:02 | 只看该作者
MATLAB实现牛顿迭代法求解非线性方程组。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 01:48 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表