数学建模社区-数学中国

标题: matlab实现 8个未知数的非线性方程组的求解 [打印本页]

作者: 2744557306    时间: 2023-11-18 12:10
标题: matlab实现 8个未知数的非线性方程组的求解
这段MATLAB代码实现了一个包含8个未知数的非线性方程组的求解,并绘制了一个关于参数lambda的图形。
& I8 z/ c4 E% V* i1 e4 h/ \7 F( X9 |主函数:equation()
  1. function equation()
    1 k5 {# K& M. J3 G7 Y

  2. & M& Q) v+ j9 y. T5 u
  3. global sigma mu T lambda6 M' u6 t. P' ]# H; e0 g# g

  4. 0 P" g( \# s# k
  5. sigma = 5;   % 定义sigma的值
    + ?* x* Y$ g( @$ v! i
  6. $ s$ b$ M0 T& K! U* X) Z4 `
  7. mu = 0.4;    % 定义mu的值  Z+ @# c; _0 F- J+ G# d) w7 i

  8. " Q5 O2 {& t! e
  9. T = 1.7;     % 定义T的值3 b2 J  C/ h( a$ \- O9 O) ]9 F
  10. ; R: q4 k6 D% x/ Z5 I  u
  11. N = 1;1 c" H% n0 @- u  x2 K5 u

  12. 5 d1 g5 ^7 B0 u/ `
  13. for lambda = 0:0.05:1   % lambda从0到1,隔0.05计算一个点
    - n" F' O! K& {8 g0 W% g5 U

  14. # O* T1 h' e: h& Y  Y* z
  15.     x0 = [0.5000 0.5000 1.1817 1.1817 1.0000 1.0000 0.9354 0.9354] * 1;    % 定义迭代初值
    / k0 E4 C. h* y

  16. % p4 E8 c' s5 }6 c0 _7 q
  17.     x = fsolve(@myfun, x0);    % 采用fsolve函数解对应lambda下的方程组,结果保存在x里" A+ @# o2 H2 R

  18. ! W9 w. Q( j: k, _8 \- m. q3 R! N
  19.     value(N) = x(7) - x(8);     % 求出对应lambda下的omega1-omega2的值,保存在value里. D: O; {  w  K

  20. ; g: I1 o: `# n0 v% W" q& I
  21.     N = N + 1;
    - \) {5 E* F+ ^' ?# _# c

  22. . j+ ]# S/ ?0 u9 u# t
  23. end  K, M% f  v: q) k
  24. 6 U- h( d+ }. e
  25. lambda = 0:0.05:1;. R$ P3 s- C( t( ~" o; d
  26. " M% [' \# v5 m1 l
  27. plot(lambda, value)   % 绘图* L) m. [& ?% g. m

  28. ! S$ C! k1 b: ^4 C
  29. title(['T=', num2str(T)])   % 给出图的标题
    % U% {7 P' f2 O2 p4 J& A* ?: Z3 L
  30. 3 a; [' A0 S) J: v) C
  31. end
复制代码
子函数:myfun(x)
  1. function F = myfun(x)
    6 Z6 S  T0 {( Y9 o

  2. & S- x5 U( V4 I5 k9 t
  3. global sigma mu T lambda" K+ Y, @. k, O

  4. " K% ?( Q8 x- b1 \( d( x
  5. %x(1)~x(8)分别对应8个未知数- b4 ?2 E) C: j! s7 I4 ^! H% v# \
  6. # \9 N2 ?+ @# m$ T' q: k: ]1 A: M
  7. Y1 = x(1);   
    9 k5 T9 z9 W  k5 f
  8.   a5 i! h$ u+ I  S$ t. k& D! y
  9. Y2 = x(2);0 j1 V& c6 t9 A% ?4 m& @4 }5 X
  10. ' h* c) J5 |  i3 G$ F  p9 J
  11. G1 = x(3);! l8 ^9 I6 \3 x% ]( N2 S

  12. 0 W. B7 o$ F  X2 [+ {, w
  13. G2 = x(4);/ P5 M9 t6 x4 V" s' [0 {- _
  14. 6 g3 X" h6 v' f* Y3 U5 ^: A
  15. w1 = x(5);2 J+ R9 v6 [, H# Q! a0 M- [

  16. 9 W- A6 l6 T$ t. C+ L' V
  17. w2 = x(6);
    0 N) \' Y& t+ P* y5 R
  18. 1 N9 [$ q  K* \& [; B
  19. omega1 = x(7);8 q$ w6 }4 F, s" Y
  20. * h, |5 f8 I" a6 ]0 h: t& T
  21. omega2 = x(8);
    + C% S. y" _8 R& U( _* p9 q

  22. 7 w- J$ [: b. X) R6 d! c
  23. %定义8个方程% ^7 A& k7 q3 n# Y$ U% `8 |$ t

  24. 1 C- b$ }; b6 M( X
  25. eq1 = Y1 - mu * lambda * w1 - (1 - mu) / 2;
    & q7 `  ?6 m2 D( `( p5 ~" _* z: @/ K

  26. 7 d0 v! _# D5 G8 c- B
  27. eq2 = Y2 - mu * (1 - lambda) * w2 - (1 - mu) / 2;1 i! ]1 Y7 ]' L* C; c1 K$ H

  28. " D! f' P+ V. N6 @3 M
  29. eq3 = G1 - (lambda * w1^(1 - sigma) + (1 - lambda) * (w2 * T)^(1 - sigma))^(1 / (1 - sigma));- c: @' W. I2 E  k' D1 b
  30. . o( Q8 P6 I6 s
  31. eq4 = G2 - (lambda * (w1 * T)^(1 - sigma) + (1 - lambda) * w2^(1 - sigma))^(1 / (1 - sigma));
    $ i; s& ^+ m# P! ?$ e* `
  32. ' P) K; M/ g4 N$ K+ A, B0 t! r
  33. eq5 = w1 - (Y1 * G1^(sigma - 1) + Y2 * (G2^(sigma - 1)) * T^(1 - sigma))^(1 / sigma);; n9 |/ y3 M; s6 C* h

  34. 0 d" ~9 n- _. y+ U/ j3 S. h; q  }
  35. eq6 = w2 - (Y1 * (G1^(sigma - 1)) * T^(1 - sigma) + Y2 * G2^(sigma - 1))^(1 / sigma);
    6 ]9 f' G( {; k! L. \5 U

  36. 0 }7 @7 b0 {) D$ }( ?! L# G/ ~
  37. eq7 = omega1 - w1 * G1^(-mu);& L2 Z/ K9 y# {5 `. v

  38.   t. o! s$ |: j  }8 F4 {
  39. eq8 = omega2 - w2 * G2^(-mu);. D: [* }' N: W

  40. 3 x: ?" ]$ _) {, r4 _; k
  41. %返回方程组
    % m$ \8 m1 m; Q$ I0 T

  42. " X2 q! l# S1 [/ i* v
  43. F = [eq1; eq2; eq3; eq4; eq5; eq6; eq7; eq8];
    . s  `; [$ d0 ^; M+ v+ V$ T

  44. + D4 W) p/ V6 |
  45. end
    . d, c6 w2 u! W& l) ~3 o0 b, K

  46. 4 ?; d" V6 g& Q9 _8 X6 r% U
复制代码
这个代码通过fsolve函数求解非线性方程组,其中lambda在一定范围内变化。结果被用于计算omega1 - omega2的值,并将这些值随lambda的变化进行绘图。+ Z, ~* G; b' N' R6 [

! i' d8 ]# T. ?" y* J! ~: N5 s2 c结果图片如下:' f$ k5 P! P) F+ z9 T/ D% ^
VeryCapture_20231118115514.jpg * f& M2 M0 t3 g0 [, K% s+ |' |

3 N& O' R0 ^1 X! @+ J" x: h6 k$ s8 G  J

6 [( o( i7 c8 J! K: r! A3 l

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

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

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






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5