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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
( e* p% `4 o6 C0 w# q" q1 v

! X/ E& s2 {6 g- ZMATLAB源程序代码分享:MATLAB实现牛顿迭代法求解非线性方程组  o6 ^; b# W) m+ O0 I, D3 ]! F' `

- o$ J+ ~0 b' u9 W+ B5 C8 _* j- d * V6 O4 T& W$ {0 U2 ]& R# w1 B
4 |7 m9 L0 ]+ }; E
%% 定义一个三元非线性方程组( ~! I& p* i# s9 W
clear;clc;close all/ o! F  B8 ^+ T2 ?: d3 N0 [
syms x y z                          % 定义符号变量 x y z
  N% L: N& z; x1 F! lf1=6/(1+(x-y).^2)+sin(pi*y/2);      % 方程 1
% H5 j# y# a9 z0 W* f4 l  Q3 Bf2=x*sin(pi*x)+y*sin(20*pi*y)-z;    % 方程 2
& }: G* e+ `- x' f. W8 G. Y7 gf3=x+2.0*y+z;                       % 方程 3
* W) L+ u* X! P2 @; g9 wf=[f1;f2;f3];                       % 三个方程组成方程组
$ t+ `/ Q# j- h) W: [0 l0 N& l  n- l  l1 w- @. O
%% 计算雅克比矩阵. a' R! i% B4 @) i' d% y
J=[diff(f1,x) diff(f1,y) diff(f1,z) 3 w- A. o% X- M/ P: a- W
   diff(f2,x) diff(f2,y) diff(f2,z); |0 W2 |' Z( K% y# }% R! c
   diff(f3,x) diff(f3,y) diff(f3,z)];
" M5 z" {! z5 p1 S$ g" \
9 W1 G6 ?) b. l+ q8 [  ?. ~%% 自定义牛顿迭代算法, 求方程组的解7 X3 T' }- g4 Q2 `  t/ a% E0 U9 N& T
n=1;                               % 记录迭代的次数) [+ b8 e* }, I- |/ Z
x0=[-5;0;7];                       % 迭代初值4 g0 x8 q' i' c5 }
E=1;0 V/ ?" K& D  d% i
while E > 1e-4                     % 如果精度不满足要求, 则一直进行迭代, 直到满足精度为止
9 m" {, u4 w7 x9 `. M3 O2 F# l& X5 A7 z    x=x0(1);                       % 给 x 赋值# l( j! _) J, B  _! h( ~/ {
    y=x0(2);                       % 给 y 赋值6 z& A1 L+ n% W; F
    z=x0(3);                       % 给 z 赋值
6 ?# C, o; O2 o( Z* ?6 F+ a    x1=x0-inv(eval(J))*eval(f);    % 迭代计算, 用 x0 迭代得到 x1
) ?1 Z6 \! ]! w  t  @0 @0 `: z( a5 H    E=max(abs((x1-x0)./x1));       % 计算求解的精度& M" d* o" R' m5 D
    x0=x1;                         % 将当前得到的解 x1 赋值给 x0, 做为下一次迭代的值* N4 c) m2 @: u* n" M; d
    n=n+1;                         % 迭代次数加 1  
! `/ @6 u( e+ J8 U$ I/ o) ^end5 p  [3 c! J6 ]

- h6 v* L+ d& \0 B9 h( [" h%% 显示方程组的解, 并将求解结果带回方程组, 验算求解结果
/ J" V- ?% h5 T& w0 |  wx=x1(1)    % x 的求解结果
% c! d- R- x1 v, r' u0 T3 iy=x1(2)    % y 的求解结果
% O/ s8 R  }* w4 U9 G8 Sz=x1(3)    % z 的求解结果$ G' @. E9 h1 q. f
eval(f)

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-7 19:59 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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