数学建模社区-数学中国

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

作者: 2744557306    时间: 2023-11-18 12:10
标题: matlab实现 8个未知数的非线性方程组的求解
这段MATLAB代码实现了一个包含8个未知数的非线性方程组的求解,并绘制了一个关于参数lambda的图形。( F: a1 r( @( @3 V1 m. X  Q8 p
主函数:equation()
  1. function equation()* c( q7 j7 o/ f0 W$ y

  2. 7 K: t: l- X: p( N
  3. global sigma mu T lambda0 C+ F9 s: L" S& `8 b

  4. * f7 `, S: B( x# B$ j7 h
  5. sigma = 5;   % 定义sigma的值: @+ U/ _! {2 {/ f0 @/ w0 {
  6. 0 E3 }: n- \5 ~. p9 ?' n
  7. mu = 0.4;    % 定义mu的值
    , k% \( z* J) \5 n' @+ ]" [+ w

  8. 8 u, g( w( \- P9 p
  9. T = 1.7;     % 定义T的值
      q, Y; Y) N' B) \
  10. & O# ~3 C* ?% [4 b% o' ?  p& B
  11. N = 1;9 @7 R  V8 ^# a) |+ |. r
  12. # c) `9 D/ q/ [. h( l' J
  13. for lambda = 0:0.05:1   % lambda从0到1,隔0.05计算一个点
      M# {& L# r+ l' a
  14. * Z9 E+ @; K8 v% W$ j1 e) k
  15.     x0 = [0.5000 0.5000 1.1817 1.1817 1.0000 1.0000 0.9354 0.9354] * 1;    % 定义迭代初值# ~4 n$ }# c- k+ T& G
  16. 3 p" j) x3 A$ w% z
  17.     x = fsolve(@myfun, x0);    % 采用fsolve函数解对应lambda下的方程组,结果保存在x里5 [9 T! b: D- a8 y' j( Q, k; O1 t
  18. ( w# [) j2 d, [$ |0 ]5 i4 l& N
  19.     value(N) = x(7) - x(8);     % 求出对应lambda下的omega1-omega2的值,保存在value里5 m' E! m( L0 m, a8 p* @

  20. 4 R" M* R& h& a, s1 J* ?* J- V. ~1 L3 s$ A
  21.     N = N + 1;( N5 N$ b$ F( Y
  22. 6 A7 J+ |) R- J2 c' n* o& W
  23. end
    $ R+ ~  n6 r0 W! U4 f9 L
  24. 3 W5 u4 V7 K, l' u+ t
  25. lambda = 0:0.05:1;
    + j8 U* {/ K* I1 f
  26. 3 E4 U& e2 r# W6 \; n
  27. plot(lambda, value)   % 绘图% w6 O; M# G# A# U' s5 w' K
  28. 6 n3 j4 Q% f; z; h) j* L
  29. title(['T=', num2str(T)])   % 给出图的标题  l* }. p* I, s" X" S9 T" A- E2 L2 r

  30. ' ]+ `2 f. n4 S! A
  31. end
复制代码
子函数:myfun(x)
  1. function F = myfun(x)' \* w9 }  L' A! O8 t0 P9 F6 p6 q
  2. $ U" y. z; j7 h* _
  3. global sigma mu T lambda# U* ~6 m# m3 }. A1 x) {- e, m
  4. 9 Q  f" c: F% w2 k& y
  5. %x(1)~x(8)分别对应8个未知数3 b2 b5 q" y# i* {$ M5 }: u
  6. ' h% Y3 K! w2 a6 F; k
  7. Y1 = x(1);   
    - r  G1 S0 J! `9 q' A* P* y
  8. % M* _- c. M4 G$ b6 E
  9. Y2 = x(2);4 }  I1 R7 X/ ?. A  L, I9 F

  10. ; U# b1 ~' L. Z# o% u
  11. G1 = x(3);: F- i7 H7 v9 H0 L/ o  d2 [
  12. ) o8 n: K; p* T# U
  13. G2 = x(4);0 T5 b& M5 A8 h- @+ `( O" l8 a

  14. 1 Z$ V$ A7 [& C( _% B- h
  15. w1 = x(5);
    0 N6 S. \# G, V2 z6 A. q8 u
  16. . J% ^' m% Y9 I2 \- b
  17. w2 = x(6);
    . m; v5 E7 Q# F, y
  18. - B$ m- \( q$ h: v
  19. omega1 = x(7);
    ; o6 n$ g, M  K, A, X$ @2 ?
  20. 6 F4 l2 j& D2 T% U
  21. omega2 = x(8);
    7 K/ J& o4 ]. [& t
  22. . `  P  S! N: [# ^7 t
  23. %定义8个方程
    3 _$ N& U  k* X  ]/ o- v. |# Y* a2 Y
  24. ) P0 c6 C: c2 w5 T# o* L; e8 g
  25. eq1 = Y1 - mu * lambda * w1 - (1 - mu) / 2;
    - r1 D& v1 }4 y: W
  26. ' c" l. ]( X8 u
  27. eq2 = Y2 - mu * (1 - lambda) * w2 - (1 - mu) / 2;, y6 v8 k$ _/ S7 h( I

  28. 1 Z6 e% J0 N6 [' ~
  29. eq3 = G1 - (lambda * w1^(1 - sigma) + (1 - lambda) * (w2 * T)^(1 - sigma))^(1 / (1 - sigma));
    6 T8 L# Y: Z& @8 k: A; f! `% O

  30. ) f+ R6 U  c+ s  S- q
  31. eq4 = G2 - (lambda * (w1 * T)^(1 - sigma) + (1 - lambda) * w2^(1 - sigma))^(1 / (1 - sigma));
    . @& I. F* j" d3 R
  32. + X  e. A* i7 D. a: p* ~& K
  33. eq5 = w1 - (Y1 * G1^(sigma - 1) + Y2 * (G2^(sigma - 1)) * T^(1 - sigma))^(1 / sigma);6 {5 x. t8 S- \' B
  34. 9 [! T% A  t" X: @( \
  35. eq6 = w2 - (Y1 * (G1^(sigma - 1)) * T^(1 - sigma) + Y2 * G2^(sigma - 1))^(1 / sigma);' t: X- q$ [  X1 v) N( j

  36. 4 o" u0 ^% i8 N1 ^9 z
  37. eq7 = omega1 - w1 * G1^(-mu);
    & u! k" U+ V# z. s9 H& e4 y- h8 ?

  38. # z2 y9 N2 Q. D5 f1 A( T& a
  39. eq8 = omega2 - w2 * G2^(-mu);( Y- _' O# S4 m- w' G- W# \

  40. 6 U+ Y) }" E9 V0 j) u
  41. %返回方程组
    0 N% N9 R* O" @5 ^4 |  y

  42. + I  t9 i5 i! ]3 v7 p0 K3 Z
  43. F = [eq1; eq2; eq3; eq4; eq5; eq6; eq7; eq8];
    + l2 e- E5 A7 V3 r! ]

  44. 3 d- g& o, j# ^0 e6 f
  45. end
    1 F! H9 X. J) V0 f, a

  46. 7 w& S& C, M4 y" {% i' {6 K* K
复制代码
这个代码通过fsolve函数求解非线性方程组,其中lambda在一定范围内变化。结果被用于计算omega1 - omega2的值,并将这些值随lambda的变化进行绘图。
( C  V9 d' w7 P- H' z; |, A7 n, H8 T' X& U+ u0 ~
结果图片如下:6 J; D2 [$ r% Z+ Q/ I  W6 {
VeryCapture_20231118115514.jpg , j8 L: u* B8 K0 [& S

) s, ~5 B% m5 y. c7 z2 X: S: \  z. W+ y) Q9 `% S3 Z; ^

& \* J, \9 T$ f2 Y% E+ k7 l7 M

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

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

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






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