QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3032|回复: 0
打印 上一主题 下一主题

matlab实现 8个未知数的非线性方程组的求解

[复制链接]
字体大小: 正常 放大

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-11-18 12:10 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
这段MATLAB代码实现了一个包含8个未知数的非线性方程组的求解,并绘制了一个关于参数lambda的图形。
8 W1 V3 X2 W0 i2 z) }) i: x" Z主函数:equation()
  1. function equation()5 f3 t  E, F/ T: u! s+ |

  2. ( M) l6 |. `3 ^& y+ L0 N0 l' }
  3. global sigma mu T lambda' n5 b2 p) m6 X% }
  4. \" N: {) L. s. f0 ?$ P' d
  5. sigma = 5;   % 定义sigma的值+ }- }# R) v6 h
  6. 6 \& B4 z$ G% G, c
  7. mu = 0.4;    % 定义mu的值
    8 _7 t- }+ X: u. ?' {! r- b' L! B% L
  8. # ]+ F6 K6 Z& A! [% v* B# F
  9. T = 1.7;     % 定义T的值
    / q, K( r) X# C' ]. @5 k
  10. 0 n7 H: Y) f3 q( I+ m& {9 r, e
  11. N = 1;
    # I) Z8 W3 G- j5 a& l' T

  12. $ ^9 o% w  L\" r' ^$ e; c: F
  13. for lambda = 0:0.05:1   % lambda从0到1,隔0.05计算一个点7 I/ t0 t. v, d# r7 I\" j4 i: `

  14. ! B; m6 K  D2 V. `9 Q3 _' s
  15.     x0 = [0.5000 0.5000 1.1817 1.1817 1.0000 1.0000 0.9354 0.9354] * 1;    % 定义迭代初值
    1 |  B  a0 l+ }3 I! L

  16. ( v  t/ k( s/ b1 A( j$ n
  17.     x = fsolve(@myfun, x0);    % 采用fsolve函数解对应lambda下的方程组,结果保存在x里& X' k4 Y! h, q' x# J' R6 Y
  18. # D2 y! W: k+ }; L( K
  19.     value(N) = x(7) - x(8);     % 求出对应lambda下的omega1-omega2的值,保存在value里
    0 F3 h& O5 Q+ n& g/ E5 r0 _

  20.   m, A. Q# X. D+ h8 H. W  n6 q6 x
  21.     N = N + 1;
    # w2 B' l$ L2 i0 P; g5 W; g  J

  22. 0 _; M  j; X. m  `
  23. end9 t2 ~. Y1 n4 s6 N0 X* Y1 A0 Z$ `* m3 _
  24. 5 I* k4 h% p- g* A2 Z- Q) R
  25. lambda = 0:0.05:1;
    1 E8 E% J' f& \3 u$ C+ ]# d) I9 ^

  26. 1 ^! y! |, }$ G& c! |3 @7 Y
  27. plot(lambda, value)   % 绘图
    / M  u. f( I2 X4 m) Z& |5 f6 c) F

  28. & c9 }$ N4 L* \/ h8 ]( j5 q
  29. title(['T=', num2str(T)])   % 给出图的标题: R1 j- g; n! N+ F2 I$ M
  30. 9 W. ^4 J0 }\" |\" N4 _
  31. end
复制代码
子函数:myfun(x)
  1. function F = myfun(x)
    ; x, i5 p: V& N  _; D% d* x
  2. 8 r/ O' n- V0 m/ H. j* @
  3. global sigma mu T lambda7 \! S8 J2 p$ X; F7 A% @' _9 J
  4. + `\" G  M0 ?4 ?4 |/ Q
  5. %x(1)~x(8)分别对应8个未知数
    & p& B# \) c8 _, @  L2 \) k  m( d

  6. , q, a% i  M) H
  7. Y1 = x(1);    1 z3 q! T2 z% U5 Q
  8.   Y4 K3 ^8 N2 ~\" A# I9 B# T/ t' {% M- ^
  9. Y2 = x(2);
      ?& m\" B8 l$ o( y: R

  10. . f8 Y' k1 J  @+ j0 p
  11. G1 = x(3);
    ; a' c! V0 _\" L

  12. 4 z; h9 m8 C! N\" L  \% R) h% a, [6 n
  13. G2 = x(4);
    7 O/ z8 b\" m( O% ^' ]4 o& N\" M
  14. 7 o5 N$ r9 M0 _( Z: ^$ L' R+ t
  15. w1 = x(5);
    \" z. |  @8 O: x( N

  16. 4 Y9 P8 j\" l4 V, \  ?
  17. w2 = x(6);  m+ [% S\" F1 Z) T( |$ y3 f

  18. 9 r' K8 r! ~5 t
  19. omega1 = x(7);
    # N8 k& R& j6 o6 m6 \+ p

  20. + G' X$ L\" ?. e2 ?( w* {# \
  21. omega2 = x(8);
    ) A4 c, S4 ~+ w6 Q) p$ {: x4 a+ v

  22. 6 Z  M) {% T! d; `3 f. s
  23. %定义8个方程
    / t6 A( B* i- Z1 W, m

  24. 2 ?+ i& \( [/ I% I
  25. eq1 = Y1 - mu * lambda * w1 - (1 - mu) / 2;
    2 X3 l\" ~+ V\" E7 j  ~
  26. 2 T8 z- ?: e* [% G& I\" }0 N
  27. eq2 = Y2 - mu * (1 - lambda) * w2 - (1 - mu) / 2;6 X. {( |9 r  `5 Q5 v9 o8 m\" ?# o

  28. \" U  N8 C\" g3 e3 Z! H
  29. eq3 = G1 - (lambda * w1^(1 - sigma) + (1 - lambda) * (w2 * T)^(1 - sigma))^(1 / (1 - sigma));* J! S/ G% ^' C; z; @\" `8 f& C

  30. 3 e1 j% w7 g8 R
  31. eq4 = G2 - (lambda * (w1 * T)^(1 - sigma) + (1 - lambda) * w2^(1 - sigma))^(1 / (1 - sigma));
    $ q$ W1 r2 G4 P# b5 e3 B
  32. 5 v: R) |6 U9 b) V& u
  33. eq5 = w1 - (Y1 * G1^(sigma - 1) + Y2 * (G2^(sigma - 1)) * T^(1 - sigma))^(1 / sigma);
    2 \% e% c: ~$ v$ U* t* K7 B  m
  34. - l7 l1 s: q2 `+ F4 w: ?
  35. eq6 = w2 - (Y1 * (G1^(sigma - 1)) * T^(1 - sigma) + Y2 * G2^(sigma - 1))^(1 / sigma);
    , T6 @* k3 x% A1 U. m$ M! [

  36. 9 y' M; B- V. J, M) L\" h
  37. eq7 = omega1 - w1 * G1^(-mu);2 T; }- w' q0 x+ [+ A4 x
  38. 6 r6 s' n3 w1 ?! ]% }0 F
  39. eq8 = omega2 - w2 * G2^(-mu);
    4 N; V; l8 j+ Z) f
  40. \" H; n* Q6 {. |
  41. %返回方程组1 Q# g4 K  H. N7 V
  42. , y: `  h* ^+ B! {6 t! v! D: U
  43. F = [eq1; eq2; eq3; eq4; eq5; eq6; eq7; eq8];
    ) u+ @$ g; u4 g; k( j
  44. ' u! u+ O# X; v0 e& m( U6 w9 _
  45. end( d, z! M+ P) I4 L  \4 Q
  46. ( @, k5 I* h: T% g$ v. Y2 i2 z
复制代码
这个代码通过fsolve函数求解非线性方程组,其中lambda在一定范围内变化。结果被用于计算omega1 - omega2的值,并将这些值随lambda的变化进行绘图。' J, H: S8 N& C: S
. p  O6 G+ @9 N( w' }9 C
结果图片如下:* `% J: [9 I; {
VeryCapture_20231118115514.jpg ) p8 c/ u5 _- J6 E# O3 w
9 X$ c/ j; v  U' K, C) T

2 r0 F$ o( N" T) y% R3 g0 [' g
2 M) C" t2 \! J

MATLAB求解非线性方程组 fsolve源程序代码.rar

872 Bytes, 下载次数: 0, 下载积分: 体力 -2 点

售价: 2 点体力  [记录]  [购买]

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-6-20 21:02 , Processed in 0.421873 second(s), 55 queries .

回顶部