|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 House 于 2020-3-10 17:43 编辑
; J8 D% \# {9 M! I
* f1 V9 H9 A) L- Y) j2 c, r6 VMATLAB使用自定义的欧拉法求解常微分方程组
p% w1 ]" \& Y I h$ R7 J# R4 z9 h
) o$ }$ ?2 q2 Z( r9 h
: w: V4 E5 I1 ^ }; `8 ?* \function F=f(t,Y)9 z! b- t0 V% F5 Z! {( Q. o
% 定义待求的微分方程组
! V' B7 f& y: w; M, |3 u- Cx=Y(1);
' K) v4 w' ]( A By=Y(2);; `8 f g- F. G" w
f1=3*y;0 g4 J9 ?1 M" {4 n
f2=(1-x^2)*y-x;
* a/ ?; d |' B, a. PF=[f1;f2];
. |) @6 r0 S& ?end
2 I ?' R! V+ h# j# J" P2 y" Q2 W- I0 m- ]7 o3 m
1 a& }" x3 S$ R- p%% 定义计算的步长, 设置变量的初始值
& H( e, \& E2 t% ^, ]5 aclear;clc;close all" I& T4 ~5 b" g8 c5 D
Delta=0.001; % 定义步长
8 x8 K& r; n# h# O$ U" S7 St=0: Delta :20; % 定义自变量 t, ]* `7 P( L, z4 Y$ D2 d- O6 }
n=length(t);; U& R+ G$ ]0 M- d3 l% `
Y(:,1)=[2;0]; % 定义 x y 的初始值
5 A9 Q- n/ O& w& X# r
# E1 e8 }2 F- c( u( q6 J' x%% 自定义欧拉法, 求解微分方程组
+ N: X, d8 z" S" @6 E# a: Pfor k=1:n-1" t" m1 c B# R* e% D, p: b1 M6 J
Y(:,k+1)=Y(:,k)+Delta*f(t(k),Y(:,k));
. o5 ?" c! ~4 k( a: u& h/ ]9 w1 aend
: ~$ H% W' ^' f$ q! ]6 jx=Y(1,: );
# Y0 y1 d1 U1 p8 l2 p0 ly=Y(2,: );
, i0 j8 L7 T7 T$ ~% k7 Z* a: d
: k: y' @- d7 j& `( Y%% 绘制 x y 的求解结果* i8 j, Y0 v7 _5 x0 W9 S
figure, m5 Z0 \' F: R7 o4 N" N' g
set(gcf,'units','normalized','position',[0.15 0.2 0.7 0.6]); % 设置 figure 窗口的位置和尺寸- p/ L% S7 O1 o) s
subplot(1,2,1)% f" k. H2 N! E1 \, i: h
plot(t,x,'b')8 W) V. d- y2 N7 `- K
xlabel('t')9 E8 u) b- ?( a( {3 k
ylabel('x')
3 u8 O0 E% t% _ f$ c/ a1 ]$ s1 U1 P. q" J* P
subplot(1,2,2)
9 s% M" C0 P+ T m6 H6 oplot(t,y,'r')
) H3 o, g9 L0 O6 Y; Zxlabel('t')
# ~9 z m0 }8 P6 [' C9 F/ `ylabel('y')
) ?4 l" A: e6 M/ W8 B1 M+ h$ _ g) h" S9 V3 z. @
; s7 E! I$ h) d0 j
1 K7 T6 O, u7 m& e" z/ U |
|