数学建模社区-数学中国

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

作者: 2744557306    时间: 2023-11-18 12:10
标题: matlab实现 8个未知数的非线性方程组的求解
这段MATLAB代码实现了一个包含8个未知数的非线性方程组的求解,并绘制了一个关于参数lambda的图形。8 z+ A2 \; q0 v  A
主函数:equation()
  1. function equation()
    3 S4 P' j5 {) R2 ?( Z! e# s
  2. 6 K) H( d6 ^- c7 I- R5 U( N
  3. global sigma mu T lambda
    1 f& d6 x* Z: g
  4. ' h& ^4 O$ Q4 n1 o7 b
  5. sigma = 5;   % 定义sigma的值
    + g" |6 [' ?4 B0 m0 z
  6. ! T* d1 Q  E& y2 k
  7. mu = 0.4;    % 定义mu的值1 k/ K0 Y3 }" o, `1 X, w

  8. 5 O+ c+ g' E& F0 k. h( i
  9. T = 1.7;     % 定义T的值6 ]4 ^3 [) x- L0 ?$ ^' ?8 R- E
  10. 0 q$ l: h# T; g2 ^, V1 m; Q8 |' s
  11. N = 1;/ y* F  x% R" s) f
  12. : @+ t6 ^. Z* l' L" q- V& V* H* }0 X
  13. for lambda = 0:0.05:1   % lambda从0到1,隔0.05计算一个点
    % Y/ |% e2 h& O# e) _" ?

  14. $ ]" x$ Q; V6 d: Q. a! Y8 }
  15.     x0 = [0.5000 0.5000 1.1817 1.1817 1.0000 1.0000 0.9354 0.9354] * 1;    % 定义迭代初值
    / d/ @3 t& i9 M0 D2 ?' b
  16. 4 L0 N( l3 i, L
  17.     x = fsolve(@myfun, x0);    % 采用fsolve函数解对应lambda下的方程组,结果保存在x里
    7 J, b" U; ~( s) Y* o5 r

  18. 2 M) I2 m3 @# j
  19.     value(N) = x(7) - x(8);     % 求出对应lambda下的omega1-omega2的值,保存在value里) z8 v6 f5 Y, S

  20. / |6 x6 j1 P" P) M; @9 q0 d7 }
  21.     N = N + 1;
    9 h# U" a) Q+ I9 [) h; @, F7 Z6 C
  22. 5 m, i( W6 {0 Y7 O
  23. end
    1 c9 s9 f. Q0 d$ s# S4 t% c

  24. 9 o# D5 V. t0 C2 r) z4 N
  25. lambda = 0:0.05:1;8 B( m( S+ e0 Y" o. Q

  26. ! I/ u- x: b& H+ G+ i+ G# Q* `
  27. plot(lambda, value)   % 绘图9 G7 L( H' Y# k

  28. 8 C  M% J% f. m9 }- E, {3 Z
  29. title(['T=', num2str(T)])   % 给出图的标题
    * C9 w2 D# D# x  I/ ^) o

  30. , D6 R* c9 v* j, m2 O, U( U& S( O$ S
  31. end
复制代码
子函数:myfun(x)
  1. function F = myfun(x)
    ) }* {' O, m' j. T- R  }* D

  2. " l# o2 O" O) S/ }- y) ?' K- {
  3. global sigma mu T lambda7 u# t* P4 B3 L% I- h9 @; D

  4. " s$ @. i2 J& z& N& Z8 p
  5. %x(1)~x(8)分别对应8个未知数4 f# [- [4 `/ u
  6. 9 q  h+ D; _0 E( _* q! O$ X' x
  7. Y1 = x(1);   
    3 O9 _" E2 M. [3 B2 D
  8. 5 ~/ |% [# B" ]0 Y. n! W
  9. Y2 = x(2);/ N1 ^2 ]. V4 i8 {
  10. 5 ^5 f+ Y. `/ K  E6 Q$ B7 P
  11. G1 = x(3);
    3 N) o# M$ |  L2 T

  12. 3 l, a0 `' q, u8 m9 [: j) v
  13. G2 = x(4);- b! e& p/ m$ `. \% Z

  14. 6 @7 [6 }4 y+ r5 {! D4 N1 r3 X
  15. w1 = x(5);
    3 t, k9 s( t/ c0 E

  16. ) \6 s6 [) \8 ~3 p; m5 G# `
  17. w2 = x(6);! t5 W) ?% }' A0 |- q5 @5 ]
  18. 1 ?& |, d1 {: ~; V( b+ |  A
  19. omega1 = x(7);
    $ g1 [: w5 r& Y8 z# o& {/ Q( f
  20. + J. m8 X2 M1 A# g3 S; Q1 B
  21. omega2 = x(8);
    + q- U% \) k7 U7 I6 \

  22. " G1 M5 I; W+ \, e
  23. %定义8个方程) h( T: s. c+ |5 I2 z4 y3 Y% I1 k
  24. : W2 ~7 d% G9 q- H( K# }
  25. eq1 = Y1 - mu * lambda * w1 - (1 - mu) / 2;
    . E& ?* g  X5 r* k! W/ a, B6 M

  26. & r# ?& }0 s# C% C: _" E6 n) W* u
  27. eq2 = Y2 - mu * (1 - lambda) * w2 - (1 - mu) / 2;) K7 s* T) _; P+ p6 E& o! o! ?
  28. ! ^8 W$ f6 x+ c" {  W6 O/ Z7 w7 t
  29. eq3 = G1 - (lambda * w1^(1 - sigma) + (1 - lambda) * (w2 * T)^(1 - sigma))^(1 / (1 - sigma));
    / Y" a) h7 m; S% `& f4 K6 B
  30. " G3 v+ Z0 V4 y$ m. Y( V2 v
  31. eq4 = G2 - (lambda * (w1 * T)^(1 - sigma) + (1 - lambda) * w2^(1 - sigma))^(1 / (1 - sigma));
    3 U* x! ~$ R6 c, ?

  32. . L$ l" K! j9 u  G7 E9 F. L
  33. eq5 = w1 - (Y1 * G1^(sigma - 1) + Y2 * (G2^(sigma - 1)) * T^(1 - sigma))^(1 / sigma);, P" p7 `" U6 l) d# O& G) _( ^. Q

  34. . L9 w. H, k" D4 n7 D
  35. eq6 = w2 - (Y1 * (G1^(sigma - 1)) * T^(1 - sigma) + Y2 * G2^(sigma - 1))^(1 / sigma);5 T$ i+ c3 J2 y& X9 I7 W1 Z3 ?

  36. . L8 Q: J, M0 j  ^! o
  37. eq7 = omega1 - w1 * G1^(-mu);3 F' o, X* n0 z% Y8 u4 ^+ f3 y
  38. 2 V/ b# K& Y* r' _" W- m
  39. eq8 = omega2 - w2 * G2^(-mu);
    % u( _, ]0 q$ J2 [
  40. 3 M4 x; a0 l, @6 a
  41. %返回方程组9 s2 k: G: X$ ^& P' r9 `/ G

  42. ) p" I& k$ e& f9 R7 w# x/ D
  43. F = [eq1; eq2; eq3; eq4; eq5; eq6; eq7; eq8];
    3 d( F6 Q% B- r* q, u8 R# t
  44. 3 |1 ]( q6 w3 N/ w. A, ^) L
  45. end
    9 F& N/ }: l) D
  46. 8 N; B4 t/ J9 Q7 }! n" W; A
复制代码
这个代码通过fsolve函数求解非线性方程组,其中lambda在一定范围内变化。结果被用于计算omega1 - omega2的值,并将这些值随lambda的变化进行绘图。& @0 G9 p1 @8 h) g( s
, i- P" @& I8 p, C4 V
结果图片如下:
$ N3 g0 |  ^3 O. ?& t VeryCapture_20231118115514.jpg
* d2 A2 i5 v7 H8 t- x" c% T+ _' H9 q- s5 ]8 W

$ }: B8 U7 r, U! r6 F$ z7 m
; t* i' C# s$ Z- P- e4 `( `. K1 Q

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

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

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






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