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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

$ |2 P3 i8 W) _& j# v: [, W
# b% S$ a- }' X; R7 |MATLAB源程序代码分享:MATLAB实现牛顿迭代法求解非线性方程组7 ~" T/ Q5 M( C
: r9 W# E' p( P) c- x" V" K9 N
+ z/ {( H4 A/ ~, k

( ~; A  ]" a! N+ X%% 定义一个三元非线性方程组4 W( @) ^# _( D' T* k& Y% e
clear;clc;close all
9 f( d) f8 d' U5 Lsyms x y z                          % 定义符号变量 x y z
0 B1 {, b* L2 E0 M5 U+ Sf1=6/(1+(x-y).^2)+sin(pi*y/2);      % 方程 1
8 x5 u7 k9 l" g+ p$ n( x' g% Y# ff2=x*sin(pi*x)+y*sin(20*pi*y)-z;    % 方程 2
; v) p: F6 o1 ?4 `f3=x+2.0*y+z;                       % 方程 3
% p/ n& W' Q$ zf=[f1;f2;f3];                       % 三个方程组成方程组6 ~& K. ^1 X+ U- ~- `0 _
( [- Y/ j' h7 ^5 K! j% S
%% 计算雅克比矩阵
* A( A( E( B% {7 `J=[diff(f1,x) diff(f1,y) diff(f1,z)
6 p1 Y! \+ b" D* P; T4 l   diff(f2,x) diff(f2,y) diff(f2,z)
! r) z3 @: v3 w/ K: }- e   diff(f3,x) diff(f3,y) diff(f3,z)];! ?0 h5 ^0 k# F3 ~

7 A1 `4 m8 u; N9 h$ n%% 自定义牛顿迭代算法, 求方程组的解
6 `9 \- H' }& j( m: r$ U' wn=1;                               % 记录迭代的次数4 u7 _4 I4 e. D1 W( x; j0 ~
x0=[-5;0;7];                       % 迭代初值
9 d( P# n0 P$ Z1 HE=1;
$ b" B8 h! [, C8 U, u  y9 L1 b* ?while E > 1e-4                     % 如果精度不满足要求, 则一直进行迭代, 直到满足精度为止; A6 y# Z, u- @# t$ h
    x=x0(1);                       % 给 x 赋值  `) G/ G: a7 v8 ]: @7 W' r8 V6 y
    y=x0(2);                       % 给 y 赋值) `8 ^. X8 E3 j7 ?
    z=x0(3);                       % 给 z 赋值, F) u, O! h4 u" y+ }
    x1=x0-inv(eval(J))*eval(f);    % 迭代计算, 用 x0 迭代得到 x19 k; M) @% H8 C  J  G
    E=max(abs((x1-x0)./x1));       % 计算求解的精度. i9 O. e5 U7 n, B2 o
    x0=x1;                         % 将当前得到的解 x1 赋值给 x0, 做为下一次迭代的值! @# w# `8 q6 U, J3 `9 M8 J$ U
    n=n+1;                         % 迭代次数加 1  
' t2 K8 g4 H# T( X3 O0 J& }2 m$ cend
, w! `& m; S* g: m8 h. t3 `$ N9 `. G0 y+ J8 b  J
%% 显示方程组的解, 并将求解结果带回方程组, 验算求解结果
3 n6 {  V: I5 Y) ^1 Ex=x1(1)    % x 的求解结果" R% ^8 U' ]& F, i- g9 h) ?/ T
y=x1(2)    % y 的求解结果
* U6 Q" ?% |$ U0 F' Y) L- lz=x1(3)    % z 的求解结果
" ^7 m$ ^+ a% @- ^, jeval(f)

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 03:25 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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