|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 House 于 2020-3-10 17:43 编辑
7 n( J; W' V( }5 D! F" b: X) o& J
. d6 E7 c/ r- o* a5 R+ B7 OMATLAB使用自定义的欧拉法求解常微分方程组
7 P: D1 }6 s- k5 i0 F& N7 v, f4 O: m8 U
% D( T( |5 k j" z
) n+ a5 T6 E: s# ]3 m0 H( T: wfunction F=f(t,Y)
9 p* I" Z" q- y: U/ t5 j5 o' I% 定义待求的微分方程组, x1 F* U4 t8 g* d+ U4 t$ S
x=Y(1);1 c7 i! Q( _% y3 E
y=Y(2);0 f, ^6 ~/ l) l& Q
f1=3*y;
; v* M; K4 i, Y* {$ If2=(1-x^2)*y-x;! U' x( U: u3 p: n X) s
F=[f1;f2];- W- o: u) M; h j- H- d% D* m9 |
end
# t6 t. Z7 u9 Q
3 h& y! e( t4 {) `/ g( Z# O6 P5 ?) N! g" C4 T8 n' _
%% 定义计算的步长, 设置变量的初始值
" J; A4 S4 M' t2 Yclear;clc;close all! V' T- p; p! G1 l: {# b5 _ |3 d% _
Delta=0.001; % 定义步长
$ q+ m% |) e! p0 r. u$ x7 \t=0: Delta :20; % 定义自变量 t. A1 z( I2 T; D# u) E
n=length(t);" V3 {3 f! E1 w8 ^/ m
Y(:,1)=[2;0]; % 定义 x y 的初始值$ }" L w* M z& k" y
5 u. y0 k* n& z6 _8 B; D S y! b
%% 自定义欧拉法, 求解微分方程组2 k2 ^+ q: h6 z
for k=1:n-1- ~3 G& ?9 E! i& V
Y(:,k+1)=Y(:,k)+Delta*f(t(k),Y(:,k));* U/ K- v7 Z0 |% y5 G# Z
end
- n% U( {* L0 t5 rx=Y(1,: );
8 Q4 Y+ R3 _) w8 @$ xy=Y(2,: );
4 h0 h7 x7 g9 l/ K/ J! \- `( x4 J" T; A7 E* b
%% 绘制 x y 的求解结果1 z; l* K0 N1 [) _. j" d2 L
figure% ~9 I0 D d) x( |. v6 r. U8 z
set(gcf,'units','normalized','position',[0.15 0.2 0.7 0.6]); % 设置 figure 窗口的位置和尺寸
! I7 ]' z0 W" I3 [( Dsubplot(1,2,1)
# H1 ^3 T, `/ k A( a) I3 J/ ?plot(t,x,'b')
/ U9 c" z: h. k& U' xxlabel('t')7 y4 O: v" N' \/ l; G/ F
ylabel('x')
( }2 M5 R; g- R0 s9 K, b- s! n
$ Y3 Z5 C3 n: h; G) K! ssubplot(1,2,2)0 ?6 Q: W! {$ F; m" T6 J6 J
plot(t,y,'r')# t( F8 Q; `/ h) B _' a
xlabel('t')
* B8 g& ^$ z d$ Kylabel('y')
* K8 S% z- {4 D8 b! y+ k2 c$ N7 P( n+ n5 w& r9 l2 D/ k) A
. E0 }4 t; o% X0 X
8 S* x" B5 Q! \6 ]! N% T
|
|