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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

( q1 x7 _; d, F% w! D/ [+ T9 B) Z- s8 E
MATLAB源程序代码分享:MATLAB实现牛顿迭代法求解非线性方程组8 |/ V7 B2 U: _* R* x5 O  s
3 S$ d; Y2 i; U* X1 s8 I
- k( v+ F+ r' ?1 V  c" A- a6 {2 c

# y( Y1 S8 Q) y0 n" }; K%% 定义一个三元非线性方程组
# y3 ?  W+ ~2 U- r  O4 c, S/ N$ Nclear;clc;close all6 ]" G8 p9 J) D" a/ R
syms x y z                          % 定义符号变量 x y z
9 A; C1 n0 |: ]6 E8 Cf1=6/(1+(x-y).^2)+sin(pi*y/2);      % 方程 1
; h. _4 H2 E9 Y8 d+ bf2=x*sin(pi*x)+y*sin(20*pi*y)-z;    % 方程 2
8 J8 b* C1 T9 F. Xf3=x+2.0*y+z;                       % 方程 3( B) _* C. c8 L+ i+ p- s3 T
f=[f1;f2;f3];                       % 三个方程组成方程组5 p0 w  a5 Q" L* Z2 H8 X7 m
; U/ r9 T+ j: |
%% 计算雅克比矩阵
4 z" `, t0 }7 ^: EJ=[diff(f1,x) diff(f1,y) diff(f1,z) 5 w4 Y1 c) m: l5 S0 j
   diff(f2,x) diff(f2,y) diff(f2,z)
  g& ^+ i# x- u. Y& x* x   diff(f3,x) diff(f3,y) diff(f3,z)];
: t/ H- n% U. P! U9 l  y! P- f( `/ N8 Z
%% 自定义牛顿迭代算法, 求方程组的解, P' Q9 L; E: Y
n=1;                               % 记录迭代的次数
1 F2 ]6 y5 {( b: L/ K: I+ Lx0=[-5;0;7];                       % 迭代初值  S1 H/ ?/ L) D+ S: ^2 ~# y
E=1;5 H6 M$ z4 @+ d" {# @0 Y" c5 d9 j
while E > 1e-4                     % 如果精度不满足要求, 则一直进行迭代, 直到满足精度为止
2 ?" j' g1 n) |: D2 z2 d9 T2 }    x=x0(1);                       % 给 x 赋值
6 c" e9 d2 Z: S; m. `8 e    y=x0(2);                       % 给 y 赋值/ }( z- N. @! Z$ J/ D! J' Q9 K
    z=x0(3);                       % 给 z 赋值
9 [- r( I/ u- v4 k2 N    x1=x0-inv(eval(J))*eval(f);    % 迭代计算, 用 x0 迭代得到 x10 [5 |" r: ?0 a
    E=max(abs((x1-x0)./x1));       % 计算求解的精度2 C; d9 W4 r; [  b
    x0=x1;                         % 将当前得到的解 x1 赋值给 x0, 做为下一次迭代的值
  z; k. K: [; [# ~2 H/ r, J9 `    n=n+1;                         % 迭代次数加 1  
7 g6 p, c9 s6 J8 f% G/ eend  A$ L, r4 b; _# g# f

( j# ^; ]/ ^) Y. I" @: z! M0 V%% 显示方程组的解, 并将求解结果带回方程组, 验算求解结果) L3 k9 ^4 h% `8 O
x=x1(1)    % x 的求解结果6 L( e) g/ W0 X  R7 p& s( e
y=x1(2)    % y 的求解结果  e0 P1 y/ Y) M! J
z=x1(3)    % z 的求解结果
9 Q' Y8 l0 U0 G, q$ a8 g. o) Meval(f)

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 00:52 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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