数学建模社区-数学中国

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

作者: 2744557306    时间: 2023-11-18 12:10
标题: matlab实现 8个未知数的非线性方程组的求解
这段MATLAB代码实现了一个包含8个未知数的非线性方程组的求解,并绘制了一个关于参数lambda的图形。
9 {6 m" |8 K% j主函数:equation()
  1. function equation()( `4 q- n% v( ~7 \5 h

  2. ! W1 o6 A8 V5 n6 N2 \
  3. global sigma mu T lambda
    " \' f5 l( |" {+ q$ l3 v# \

  4. $ r. [9 S9 h, C9 \1 ~. u
  5. sigma = 5;   % 定义sigma的值
    0 _: z; x3 Z& |' K  {
  6. + J8 }) p1 H! D7 r5 R: q+ \
  7. mu = 0.4;    % 定义mu的值) a: l+ r( R5 q

  8. , ~6 h' ?) Q! c6 W: ]2 X
  9. T = 1.7;     % 定义T的值
    8 T& g. T3 g' s, z( n8 [
  10. $ A8 ^7 G/ a% Z
  11. N = 1;, |) i& r# E/ P% Y" P# }. j7 m
  12. 8 I0 E8 s4 d4 U/ |2 X/ U' P" ]
  13. for lambda = 0:0.05:1   % lambda从0到1,隔0.05计算一个点9 I$ N- E) I$ g/ h' ]7 |

  14. * L( s" i. e( j: N) D
  15.     x0 = [0.5000 0.5000 1.1817 1.1817 1.0000 1.0000 0.9354 0.9354] * 1;    % 定义迭代初值8 R0 n- R8 c. r- M7 d9 w
  16. . A; L0 [( {/ \. i2 w2 X7 h
  17.     x = fsolve(@myfun, x0);    % 采用fsolve函数解对应lambda下的方程组,结果保存在x里5 b- b! l/ o' Z" }9 r, u

  18. 1 E- I: f% F( n; O
  19.     value(N) = x(7) - x(8);     % 求出对应lambda下的omega1-omega2的值,保存在value里+ \; c  v9 ~, Q: X% ?% e

  20.   ]# a* }- v7 U- m
  21.     N = N + 1;
    8 `; Z2 d; n9 \6 N0 [8 p
  22. ! B; r! i9 g$ w( P, ~6 y+ S3 R
  23. end
    * j9 S2 g' q; a; P6 i% S6 e
  24. - ^. z  K  o' ^9 D- \
  25. lambda = 0:0.05:1;
    0 b+ r8 ^( k$ H  S
  26. 7 e  w0 _: x4 g( }# x/ _7 d! i
  27. plot(lambda, value)   % 绘图; a& F2 j9 ]8 r! k
  28. 6 V( I  P" f  m2 F9 s$ |1 Y
  29. title(['T=', num2str(T)])   % 给出图的标题
    ( B  `* T% n- j; b

  30. 6 S5 l  L! e3 V! k; Q% M
  31. end
复制代码
子函数:myfun(x)
  1. function F = myfun(x)& T! d: ~/ S& R) V! B$ W
  2. 0 l$ P( ^! _9 B! O$ X* X
  3. global sigma mu T lambda8 ]' r5 K9 B. p0 g' q& G

  4. + V, L' V3 O/ i8 j
  5. %x(1)~x(8)分别对应8个未知数  m0 y  d* S- d* J: V1 d. k
  6. # x$ L3 I- p! u* r2 R* ]) C$ j) o' O
  7. Y1 = x(1);   
    ) G4 Y4 X$ {2 D6 ?4 `
  8. % N8 y# j9 w  V; ^5 a: f
  9. Y2 = x(2);9 G( V, C$ M4 n" a  J& ]
  10. * C1 b# B& e. B( l  z1 f' a
  11. G1 = x(3);
    % X: Y; |+ z1 p' E% G5 D+ [

  12. % X4 [$ A3 G6 m6 p- ]
  13. G2 = x(4);" r( {" W2 S1 w3 e, d

  14. / q% L; A" p  j# B; ]" ]! P9 ]( G) t
  15. w1 = x(5);# B# w3 o# @* j2 g2 b# N- M

  16. 8 p' e" ]/ t  Y: U" |
  17. w2 = x(6);
    $ L% `) R6 k: K- ^4 |0 B

  18. $ T3 A9 @& x: K* a
  19. omega1 = x(7);
    , M9 B/ p1 \, Z; H' B: e
  20.   ?9 g. H4 r3 t; M  ~
  21. omega2 = x(8);
    ! K$ a1 V+ l/ Z- Y, m# Y
  22. 9 t  {. g% d1 |8 A
  23. %定义8个方程
    + N2 T0 ^+ y' |# ~

  24. ; W+ q& X% o% @* t, b
  25. eq1 = Y1 - mu * lambda * w1 - (1 - mu) / 2;4 q( R5 u% M8 q- i5 x
  26. 6 p7 n  G4 Q$ M* T- _/ _: ]. }
  27. eq2 = Y2 - mu * (1 - lambda) * w2 - (1 - mu) / 2;1 z. b& Q' w8 _/ o" N2 u. f

  28. 0 Y% ]0 A2 K: C1 S/ ~
  29. eq3 = G1 - (lambda * w1^(1 - sigma) + (1 - lambda) * (w2 * T)^(1 - sigma))^(1 / (1 - sigma));
    6 `, X6 ~# C8 A* B: c) d" r
  30. 1 V0 l" Z2 {9 ^7 `: {$ n0 }, l: `
  31. eq4 = G2 - (lambda * (w1 * T)^(1 - sigma) + (1 - lambda) * w2^(1 - sigma))^(1 / (1 - sigma));# t: w& D* |% y9 R) J. [/ A7 X+ ]

  32. ' S, g2 r% k& _$ j1 S4 [
  33. eq5 = w1 - (Y1 * G1^(sigma - 1) + Y2 * (G2^(sigma - 1)) * T^(1 - sigma))^(1 / sigma);* M$ j7 g. h$ d2 I- K, C9 `

  34.   g8 U9 D6 u% ~) D
  35. eq6 = w2 - (Y1 * (G1^(sigma - 1)) * T^(1 - sigma) + Y2 * G2^(sigma - 1))^(1 / sigma);" d' v5 }+ S7 H$ d% |8 F) V
  36. % z' C, B' s/ C/ F
  37. eq7 = omega1 - w1 * G1^(-mu);
    ) c" T/ ]% Y5 x: s% A
  38. : Y1 G  W3 T/ f  P9 ^( P
  39. eq8 = omega2 - w2 * G2^(-mu);& M1 l* c% V- e# x8 s) Z. c
  40. ; s" l8 _+ n3 {5 s9 \) h& N' m4 Y/ q
  41. %返回方程组2 J8 q0 ~/ V4 \
  42. ! [' R8 ?: l% M0 z! f
  43. F = [eq1; eq2; eq3; eq4; eq5; eq6; eq7; eq8];# @, }, K. L# G# M6 D3 M
  44. ' g% x+ z8 C1 G, m$ C( P: b
  45. end* D  l( p0 q$ y4 w& u0 f- K
  46. ' Q7 N, G' _  `+ ]! ~! D, g+ g. F
复制代码
这个代码通过fsolve函数求解非线性方程组,其中lambda在一定范围内变化。结果被用于计算omega1 - omega2的值,并将这些值随lambda的变化进行绘图。
: ]! A4 `4 _% A
. }3 ]: n% T5 H: l& _3 r2 I/ \结果图片如下:8 r2 O; h! f& K5 P8 F! E
VeryCapture_20231118115514.jpg 0 `3 u7 Z7 t1 g

8 E1 A% ^0 @! t; Z# z: P& j& Y
! x+ \' s* K5 q! t8 Y" |4 v( w5 b( S2 m$ l! A0 h9 Y  i/ A0 |' C

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

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

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






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