QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-11-18 12:10 |只看该作者 |正序浏览
|招呼Ta 关注Ta
这段MATLAB代码实现了一个包含8个未知数的非线性方程组的求解,并绘制了一个关于参数lambda的图形。8 |+ L9 m) H3 z4 p9 e( W
主函数:equation()
  1. function equation()
    % ~( g  ~3 L) S7 K& T1 X* B
  2. - e: f3 Q! `( v% r
  3. global sigma mu T lambda- L, |) F$ f5 x. y
  4. + n9 ?) D& J5 A/ Y. C
  5. sigma = 5;   % 定义sigma的值
    4 w3 J' B: `( U7 v: Z
  6. , G3 l+ Q6 c. y% @. }3 \
  7. mu = 0.4;    % 定义mu的值1 ^2 Q1 f5 R0 B# c7 f7 f6 t' i! k$ s

  8. : I! M. V0 o9 K9 \/ C, D
  9. T = 1.7;     % 定义T的值
    $ t1 p1 H4 k5 w( b6 ^# G( y7 o
  10.   s, F3 O. U. z7 G, m3 x. b* Q\" `
  11. N = 1;9 v4 y+ H  S' v% h& y1 a
  12. / R+ S& J7 _( g* Z7 W8 R
  13. for lambda = 0:0.05:1   % lambda从0到1,隔0.05计算一个点
    1 ^* ?8 g\" o# N. y5 {. a
  14. / U2 i3 k/ I8 V+ S0 k, T+ q6 [
  15.     x0 = [0.5000 0.5000 1.1817 1.1817 1.0000 1.0000 0.9354 0.9354] * 1;    % 定义迭代初值
    2 q+ r9 G$ D9 k9 O0 @, d
  16. \" z# W% ]+ I7 X
  17.     x = fsolve(@myfun, x0);    % 采用fsolve函数解对应lambda下的方程组,结果保存在x里6 T5 O( K* N- Z' F+ D; H% {
  18. ( L' l9 I0 o2 W' i7 o2 k5 e
  19.     value(N) = x(7) - x(8);     % 求出对应lambda下的omega1-omega2的值,保存在value里, `! _& Y3 `0 a7 k) ]0 a. i  \
  20. 3 M  q% i% c$ h& O3 r0 |\" V% K
  21.     N = N + 1;4 k\" g, R- |1 ^/ g3 H3 z
  22. ! _2 l0 A# D) f5 S8 \\" m% ^& P
  23. end
      w, [/ }, t0 E( x5 m/ d- b* Z\" L
  24. 5 P0 \* ^\" j9 G\" e; d\" R6 d( G, g
  25. lambda = 0:0.05:1;# K8 @5 h# L3 N\" l) z  C
  26. 0 ~2 o0 L; H# H! b
  27. plot(lambda, value)   % 绘图
    ' I) d! C0 f\" B6 H7 w8 m

  28. ( \- d9 d0 t  b1 `5 J  X0 F  D! H
  29. title(['T=', num2str(T)])   % 给出图的标题
    # D- c: s0 J$ z; h( o

  30.   p) G' j0 o& b; \; D* C! [
  31. end
复制代码
子函数:myfun(x)
  1. function F = myfun(x)
    7 ], U/ T/ t, G& }/ E7 M

  2.   n; ]/ V( I7 }6 J( `
  3. global sigma mu T lambda
    + ]! e! a. a! h, d$ D

  4. 3 l2 e( U$ G: q& T
  5. %x(1)~x(8)分别对应8个未知数6 z$ s/ R6 P) H. {! u3 F+ E4 P  c

  6. 2 t1 ~+ _- s6 j+ Y5 J) \1 ^& u+ b. V
  7. Y1 = x(1);   
    ( U0 P/ E  ]4 }3 z0 B/ }

  8. 0 }9 w. p- p$ _\" Y4 _) m2 u6 P% L: P
  9. Y2 = x(2);
    8 }7 I: L, J1 i3 v5 d: i( g' w: d4 g

  10. ; s1 J\" i  h! M( D0 x! m  d
  11. G1 = x(3);
    \" ], u4 c( {( y* J  p( [
  12. \" i8 I: k6 x\" I7 k) s9 E
  13. G2 = x(4);: c8 J# ~7 f+ M/ }  a* H$ t( ~9 y

  14. 9 z6 c/ u6 w' {6 C7 {' t
  15. w1 = x(5);
    * w; E6 @3 F5 a3 y' O
  16. 5 T\" \! P8 D9 P, S, d6 c; ?
  17. w2 = x(6);% E. f1 a9 ~( y! A1 f

  18. 5 p) {: k7 ]/ Q, ^! Y\" h; k' q  _& `
  19. omega1 = x(7);7 L; u$ p  k\" \4 v: [- o0 n
  20. + V+ n, V8 z6 V& }3 q# w0 g* h0 |/ q0 j
  21. omega2 = x(8);
    ; M- E) N; T( C: h. p; _6 S
  22. 3 |6 Z: r\" j! ]
  23. %定义8个方程
    0 a* |0 }5 d/ _
  24. ! a' f0 }2 Z/ R7 V3 Z9 Y# F
  25. eq1 = Y1 - mu * lambda * w1 - (1 - mu) / 2;
    * i. q( z( j% q\" ~, X1 F3 F( H2 e/ v' F

  26. 4 V/ c3 p$ a4 }8 a8 D2 }9 n
  27. eq2 = Y2 - mu * (1 - lambda) * w2 - (1 - mu) / 2;
    8 e& [* g3 R5 G  V
  28. . I; {% d. }) o
  29. eq3 = G1 - (lambda * w1^(1 - sigma) + (1 - lambda) * (w2 * T)^(1 - sigma))^(1 / (1 - sigma));, }- b! i: e2 T

  30. * h6 p; E% C9 _; E
  31. eq4 = G2 - (lambda * (w1 * T)^(1 - sigma) + (1 - lambda) * w2^(1 - sigma))^(1 / (1 - sigma));
    ! S* k7 D! D, F% i) j

  32. & z9 [) a* y: f/ O, O8 ]# l
  33. eq5 = w1 - (Y1 * G1^(sigma - 1) + Y2 * (G2^(sigma - 1)) * T^(1 - sigma))^(1 / sigma);
    \" r\" P( q  H( x9 L( l1 [  U. M
  34. + u0 K  S& v, s, K7 L# o5 e
  35. eq6 = w2 - (Y1 * (G1^(sigma - 1)) * T^(1 - sigma) + Y2 * G2^(sigma - 1))^(1 / sigma);
    1 L  O; N9 {' [% _

  36. 3 J. \8 W! F7 i: [! O# |) {
  37. eq7 = omega1 - w1 * G1^(-mu);; R% `: ~+ T* d0 }# g! s, f- {
  38. 5 \, D% ~3 x2 }5 ^) H: }0 K
  39. eq8 = omega2 - w2 * G2^(-mu);
    9 W( A$ X$ h9 i6 V  W- Y
  40. / s' _) Y/ u8 X
  41. %返回方程组% @3 |4 Y  A. X
  42. 4 |4 X\" I) {: `# n6 Z. X, K
  43. F = [eq1; eq2; eq3; eq4; eq5; eq6; eq7; eq8];9 i8 V- j) V3 n1 C8 e
  44. $ ]  E3 _: ^5 y5 l* @' Q
  45. end& D! {: @, C4 `: t
  46. ( z% ~. L# \4 L2 Z. N; h. i
复制代码
这个代码通过fsolve函数求解非线性方程组,其中lambda在一定范围内变化。结果被用于计算omega1 - omega2的值,并将这些值随lambda的变化进行绘图。0 x4 N  A/ V" ?8 r/ L
$ Y8 f5 |' ?3 C% x( A8 o
结果图片如下:
3 O- H& C6 Y, l$ L  u% p VeryCapture_20231118115514.jpg 4 C- w5 O. }. e0 N) \  `+ \' s
4 ~; V8 z" p) Y: Y: a
: U# T- ^- H8 A' |/ d; s

. Z& H5 t) U! ?4 _( B. W

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 17:45 , Processed in 0.399834 second(s), 60 queries .

回顶部