数学建模社区-数学中国

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

作者: 2744557306    时间: 2023-11-18 12:10
标题: matlab实现 8个未知数的非线性方程组的求解
这段MATLAB代码实现了一个包含8个未知数的非线性方程组的求解,并绘制了一个关于参数lambda的图形。& r  L  |( e+ S0 k$ p
主函数:equation()
  1. function equation()" _* H' i4 I' j/ c' H
  2. % Y& X% Z' @# s/ |
  3. global sigma mu T lambda5 T% M5 c5 }( x, v+ k  d! q* w
  4. 3 O0 g3 `) j# `- j. A. T, t
  5. sigma = 5;   % 定义sigma的值
    % D4 o6 b& T7 {" P# S+ e" b
  6. + ~7 m; d5 y8 a, ]" R& {3 t. s
  7. mu = 0.4;    % 定义mu的值
    # O( |% R1 W# ^7 p; S" v" K
  8. ( F/ {8 j' u) h' ?" J
  9. T = 1.7;     % 定义T的值
    & {2 G" O" Y/ z

  10. : K5 a- Y: H7 n( @" d% j* R  S( G
  11. N = 1;
    ! h3 G3 j+ O6 |

  12. ' I, L# i. S$ z& b  k' Y3 g/ _
  13. for lambda = 0:0.05:1   % lambda从0到1,隔0.05计算一个点
    ' D3 a; f$ j0 |2 k
  14. $ k  Z- P" D+ w( @
  15.     x0 = [0.5000 0.5000 1.1817 1.1817 1.0000 1.0000 0.9354 0.9354] * 1;    % 定义迭代初值& s, F5 m) s* D( K9 z- O% C7 D

  16. - b; Q& r' e) z4 x+ P2 u
  17.     x = fsolve(@myfun, x0);    % 采用fsolve函数解对应lambda下的方程组,结果保存在x里7 H! O6 C. V  Y
  18. : `/ T: f3 N& V: C8 N
  19.     value(N) = x(7) - x(8);     % 求出对应lambda下的omega1-omega2的值,保存在value里% J  F# B7 ^4 N7 }

  20. " C' E/ m: z: h" ^, s2 ]
  21.     N = N + 1;( ~' y0 q6 v6 m) D( \+ Y% `

  22. - Q  o3 x: N5 L
  23. end
    - Z0 A% i& s- J8 A3 `4 S

  24. , ?/ [' L0 e9 N* O5 R* \5 n" S1 i
  25. lambda = 0:0.05:1;3 G) e* O8 v4 ~$ A  F
  26. 0 L0 P) q9 X5 r' r5 O
  27. plot(lambda, value)   % 绘图8 Q3 H0 c& H5 n& m# w) V1 |! K
  28. ; q$ P, j* d1 w: W- \) s* a& ?" i
  29. title(['T=', num2str(T)])   % 给出图的标题- X4 p/ Y" s' y& G6 j: T
  30. - w/ a5 ~# D1 k& R4 Q
  31. end
复制代码
子函数:myfun(x)
  1. function F = myfun(x)
    4 g. z9 p9 @/ @9 ]
  2. 0 |4 s1 w4 v7 N5 W. y0 v
  3. global sigma mu T lambda' W; y# q; v( Z: t2 ]
  4. 7 W  y; m# l+ x8 {9 W  a" v6 u
  5. %x(1)~x(8)分别对应8个未知数5 {2 W$ s, P, l( J; I
  6. , C; e' ?- r6 v, |2 i& c) y
  7. Y1 = x(1);   
    , M/ h, W" T  h. ?* v4 V# x

  8. : l1 h3 X4 f& c8 F
  9. Y2 = x(2);
      }% T3 I- p, \" F5 m

  10. / F& O7 `5 ?# L& s
  11. G1 = x(3);
    - n; A# J+ X" k/ i* V9 F

  12. ' ]% z4 z- E8 E  Q, {, o! M% J) K- ]
  13. G2 = x(4);* O7 k$ d. u4 a3 ]# m& X; O  E' ]( E

  14. " _3 ?7 y% @5 F1 a4 ^! j8 l
  15. w1 = x(5);0 Y" c, h8 ?+ z/ j

  16. " `6 d% F* ^" U7 O
  17. w2 = x(6);
    $ ~5 X% ^% b0 Q7 Y9 F3 K  @. y

  18. : p8 f3 U3 }7 m' t; d; W7 ]
  19. omega1 = x(7);' C" ]& K) R, W% u# p/ i9 A

  20. 5 i; j; f0 W3 U" x+ D
  21. omega2 = x(8);! N2 ~8 g( f7 V% V5 K
  22. 4 C8 S0 T; J: E& ]
  23. %定义8个方程- }& X6 v0 h8 h+ h7 j# z8 _

  24. 7 a* Q  E) t1 r4 l, j' c
  25. eq1 = Y1 - mu * lambda * w1 - (1 - mu) / 2;
    # I# s$ f  i3 h! e1 Y$ i1 w4 g9 ^. M6 G

  26. 8 g' ~; D2 u  F# J4 L% u
  27. eq2 = Y2 - mu * (1 - lambda) * w2 - (1 - mu) / 2;
    # @* G1 s) v6 p8 i( ~
  28. $ j* R$ _- K! H
  29. eq3 = G1 - (lambda * w1^(1 - sigma) + (1 - lambda) * (w2 * T)^(1 - sigma))^(1 / (1 - sigma));; O+ |- e5 v0 j( [5 `/ K  j

  30. ) F& A. t4 [6 f- V
  31. eq4 = G2 - (lambda * (w1 * T)^(1 - sigma) + (1 - lambda) * w2^(1 - sigma))^(1 / (1 - sigma));
    6 R, @6 B& k& \* f  j2 G5 w, |

  32. : \$ a3 P* T3 B" Y
  33. eq5 = w1 - (Y1 * G1^(sigma - 1) + Y2 * (G2^(sigma - 1)) * T^(1 - sigma))^(1 / sigma);
    3 n+ P: L! ^+ }- s3 P' F; r' m8 P! P
  34. : U4 Z9 u% U2 T/ }4 N& _% h
  35. eq6 = w2 - (Y1 * (G1^(sigma - 1)) * T^(1 - sigma) + Y2 * G2^(sigma - 1))^(1 / sigma);+ Y0 b* m1 p" X( z% X: m9 g
  36. " }9 u7 P; j4 V+ b: u9 D4 Q+ V
  37. eq7 = omega1 - w1 * G1^(-mu);
    7 s! E8 F! \! \0 z- M& W% ~" W$ \
  38. $ Z$ `' H! [5 v7 ]- Z: K
  39. eq8 = omega2 - w2 * G2^(-mu);
    , R0 G- b* `5 n! h  P7 v$ [

  40. * R& c& x7 @+ k+ x2 @" {6 T
  41. %返回方程组- a2 K) a+ V9 I( N0 A, O/ l* f

  42. 3 N: u) l+ X7 B  T
  43. F = [eq1; eq2; eq3; eq4; eq5; eq6; eq7; eq8];" ^' `7 |# k4 L
  44. : b- n' |( z! U5 C
  45. end8 \: o' S5 B2 }$ W. J- C# Z/ D
  46. * \- |2 J  r8 C- Y0 B+ I; x1 t; ^
复制代码
这个代码通过fsolve函数求解非线性方程组,其中lambda在一定范围内变化。结果被用于计算omega1 - omega2的值,并将这些值随lambda的变化进行绘图。1 k9 K; ]; C3 g# C# p6 Z2 |, q

0 n+ i/ c; B: Y: R结果图片如下:& j$ f$ _' H) L' V% q
VeryCapture_20231118115514.jpg 4 R( h0 \6 ^& [  @
$ x! a% _. G( g
0 p0 Z6 Z; j' d; w; r1 G* d

8 o8 y, w+ }+ d  F3 i- ~( }

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

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

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






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