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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
! w& n/ ?4 f% i; m/ ]+ x

4 M1 ^, q- ]6 B" GMATLAB源程序代码分享:MATLAB实现牛顿迭代法求解非线性方程组2 Z# m' r6 a( S: n6 \- g

: E5 ?9 h; u/ ~: @, V! d - ~- ]$ p, u% r# I3 F

; L7 ?0 E* h3 O, S0 _  L( |* E: Y0 B%% 定义一个三元非线性方程组. r4 c- @' r3 l! j: d
clear;clc;close all. X* B9 j, d5 G& v; B9 H
syms x y z                          % 定义符号变量 x y z# [  |* d0 G' ?- g  ~6 t
f1=6/(1+(x-y).^2)+sin(pi*y/2);      % 方程 1
$ i/ V+ |+ l8 u# {% q7 i1 Uf2=x*sin(pi*x)+y*sin(20*pi*y)-z;    % 方程 2
. @4 Q) `) [9 c% x( X% O  M4 mf3=x+2.0*y+z;                       % 方程 3
8 f$ D7 J; B3 Q( @# m: Kf=[f1;f2;f3];                       % 三个方程组成方程组; a8 e- ^1 X6 l7 x+ }' O$ l

) J+ a5 P- J. K%% 计算雅克比矩阵
/ q) j' ~7 v7 A1 l2 uJ=[diff(f1,x) diff(f1,y) diff(f1,z) * Y& W! R, j3 A# n. U! L+ B
   diff(f2,x) diff(f2,y) diff(f2,z)
8 w% V% r! L' u  E! j+ x2 n6 o! _# ^   diff(f3,x) diff(f3,y) diff(f3,z)];5 q) s5 F2 C- q; {  k

0 G! h1 i, [2 ]6 g2 \%% 自定义牛顿迭代算法, 求方程组的解
* g9 d3 ^2 o! r' K" [6 wn=1;                               % 记录迭代的次数
$ h) C/ ?8 Y. z+ r+ J5 Ux0=[-5;0;7];                       % 迭代初值0 W7 [! B+ t. ~3 @) u0 q  K; X5 s
E=1;" I9 B# |" N0 y& g8 a( N
while E > 1e-4                     % 如果精度不满足要求, 则一直进行迭代, 直到满足精度为止
3 `" r- L9 v6 M! i    x=x0(1);                       % 给 x 赋值
. H) j% C- d( t+ C4 m) x7 O7 @    y=x0(2);                       % 给 y 赋值
4 P2 h* L' |' e+ g) e; Q; O    z=x0(3);                       % 给 z 赋值
' {5 {* |% [0 L) c& F    x1=x0-inv(eval(J))*eval(f);    % 迭代计算, 用 x0 迭代得到 x1
' E# u/ H; N: N& X* |6 k* y    E=max(abs((x1-x0)./x1));       % 计算求解的精度4 w9 {4 `& d) ^8 q) }, A
    x0=x1;                         % 将当前得到的解 x1 赋值给 x0, 做为下一次迭代的值4 h, J* N1 x0 O9 z
    n=n+1;                         % 迭代次数加 1    A6 N% j3 K2 Y( O( D5 V3 {0 F* q  C5 b
end9 e( W& }; ]2 U  D/ d
  n: @2 G$ d: n: P
%% 显示方程组的解, 并将求解结果带回方程组, 验算求解结果! s, S% `6 p0 z
x=x1(1)    % x 的求解结果; ~% d, C, R2 y
y=x1(2)    % y 的求解结果4 ~9 F* a1 G7 \. k
z=x1(3)    % z 的求解结果7 X- [+ x2 o: g3 e3 X
eval(f)

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-1 14:03 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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