| 
 | 
	
    
 
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册  
 
x
 
 本帖最后由 House 于 2020-3-10 17:43 编辑  
2 q( \: m! e. z  M# U) i+ w3 N8 h: L( h7 [8 W+ K 
MATLAB使用自定义的欧拉法求解常微分方程组 
  ?* i' f% m4 `, u) S! ] 
; X+ T' G1 h; O7 Q, C1 U
 
 
! ^( R5 r; d' H8 `: t/ V: z+ ?4 M8 J" r6 v3 H; U 
function F=f(t,Y) 
, |' T; m- F3 _9 \: J9 k% 定义待求的微分方程组 
- o$ U7 C6 z* J# F& Lx=Y(1);, ?6 V) X1 t6 Y, @% o: @ 
y=Y(2);# i, ?2 d3 d( m* M" o( h5 X1 ` 
f1=3*y; 
0 Z8 a  Y- ?- v% h* ]( A* i, If2=(1-x^2)*y-x;8 T% h  O1 Z6 C' Z 
F=[f1;f2];+ b. H# \9 f6 `! x* P+ | 
end+ W, d% X' k' p: j7 P 
) Q! T% U/ v" F 
 
# u# H0 Z% g3 h$ I$ K2 Y$ I- z3 ?( s3 X%% 定义计算的步长, 设置变量的初始值 
/ g( b% |) t( C8 N6 Uclear;clc;close all, X! m: z9 ]" c7 e, g/ O0 B% g0 d 
Delta=0.001;      % 定义步长& d- S' o* W2 I0 c+ O 
t=0: Delta :20;     % 定义自变量 t) m% N0 t  V0 C. d 
n=length(t); 
9 o( ^6 L# s/ w- X3 `. r: B9 mY(:,1)=[2;0];     % 定义 x y 的初始值 
6 J& l, i# Y, p( ~. Q! i+ _4 {) U 
1 ^0 z- W. F  q( ~%% 自定义欧拉法, 求解微分方程组 
2 U# i, R# n& \* i) }! x8 b0 Zfor k=1:n-1* {& i3 i8 `) |" K5 {2 I* Z/ x 
    Y(:,k+1)=Y(:,k)+Delta*f(t(k),Y(:,k)); 
9 y& F/ v0 s3 [! pend- \& v9 S5 ]1 K% F: _7 z 
x=Y(1,: );6 Y4 S$ m) Z2 E1 h! }, M 
y=Y(2,: );% {) x" `7 z; C$ Y3 E 
 
) p& h9 \5 ~# o% N%% 绘制 x y 的求解结果* ^; n& ~% ?1 P' o, I9 C1 {% P 
figure 
; b7 k* d! `! m5 i$ v: }6 O4 o6 G! Oset(gcf,'units','normalized','position',[0.15 0.2 0.7 0.6]);  % 设置 figure 窗口的位置和尺寸6 N+ k7 _2 I1 A2 v% N 
subplot(1,2,1) 
5 Y" |. H: a! o- x! J& R: Y8 X4 bplot(t,x,'b')3 e* X: @( {% r7 d" i$ P 
xlabel('t')% i' _8 o; @5 j8 A' q 
ylabel('x')3 Z( u7 b7 f4 n4 j3 A+ Q 
* `) m* o; T" Z3 E 
subplot(1,2,2)  i  p$ d& G) ^7 J5 w 
plot(t,y,'r')2 o( z4 H5 `5 b9 K6 T$ r3 } 
xlabel('t')+ ^% H- T+ Y2 ]1 \" I 
ylabel('y')# \' F: N% Z* ]6 p2 B 
 
0 P+ X* W* S" w/ x" \9 @: E) t" ] 
 
# I. h8 _0 {. j) X+ F6 Q  F |   
 
 
 
 |