|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 House 于 2020-3-10 17:43 编辑 0 C. @) k2 ]0 i" E: W
) M7 ~( ?% ^2 b5 e* |MATLAB使用自定义的欧拉法求解常微分方程组
) H/ p# }' X4 W( O8 S1 I6 a0 H9 j8 l0 G4 Y( m
, [3 |. x' [3 w! E1 I4 Y1 H7 n* `! E2 ~; ?1 x1 Z
function F=f(t,Y)
2 T; I$ k" a0 f. a, B+ E7 W; M/ D. ~% 定义待求的微分方程组" L4 F1 h% ]7 t1 @7 B
x=Y(1);/ ^) K" N9 s1 ~6 w
y=Y(2);( m7 e. A( y4 K1 P/ y4 Y
f1=3*y;
+ d& {) U1 f7 T1 }9 F+ ?& Jf2=(1-x^2)*y-x;
$ z$ g6 k- Z. d4 D" H! CF=[f1;f2];- C9 E+ Q1 A/ d- U8 j) M K
end
2 J% T: \$ J Y
* x- m; ^2 Z J( x5 I, k4 h' I3 t
e3 p+ O% S+ X9 ?% {6 m%% 定义计算的步长, 设置变量的初始值
9 h# X9 I) g3 e2 X# |5 I+ Aclear;clc;close all
N8 u) j1 g: y6 Z, q( xDelta=0.001; % 定义步长
5 X* N$ |6 |' i) zt=0: Delta :20; % 定义自变量 t
8 f Y z* G# l: ^& `+ x8 v$ U( gn=length(t);# N6 H6 z9 X0 \
Y(:,1)=[2;0]; % 定义 x y 的初始值
! n. n3 j( g" L) w7 F) W
: g( `1 g6 t8 a2 e%% 自定义欧拉法, 求解微分方程组
- ]- r+ J3 [" X* v, Tfor k=1:n-1
4 O, J) p4 P. H# z C Y(:,k+1)=Y(:,k)+Delta*f(t(k),Y(:,k));& f3 C. M3 p% R+ w; X9 b
end: h" E* U) v& e
x=Y(1,: );
$ ~5 u, c2 y( `, n9 r5 a9 `y=Y(2,: );/ d8 Y0 n- W4 y, Q7 h" ~! a
6 U7 {& r( `6 j) H5 U%% 绘制 x y 的求解结果
, n, q2 o' r! q8 Efigure
* w$ a% z* x- w O- V6 p; Dset(gcf,'units','normalized','position',[0.15 0.2 0.7 0.6]); % 设置 figure 窗口的位置和尺寸( T/ {' c7 ]- n0 P2 r4 j
subplot(1,2,1)3 G& g- s$ @: }% y+ L& e/ B
plot(t,x,'b')3 |* {! ]2 g0 p9 ^4 o
xlabel('t'): e2 @( F' I# Z1 D& E
ylabel('x')+ R% ` r y- o3 D/ a d
1 n6 U$ ]8 H" ~8 ?6 y r" h( z
subplot(1,2,2)
q& n1 m5 B7 F5 A* f, kplot(t,y,'r')2 K5 J0 V9 t8 E3 ]
xlabel('t')
% m6 ]5 i: z* Rylabel('y')
1 }# Y4 A8 ?6 A r/ C( {, B' U
! w9 Z) u- r1 W& E r5 \
" U: P5 j) I/ t0 u# O9 D& |1 U1 h" H3 I0 j) [. G
|
|