|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 House 于 2020-3-10 17:43 编辑
3 ]. Y$ ^1 i* z( f/ v: a& `
9 L) N4 J; {$ {: Z& H$ uMATLAB使用自定义的欧拉法求解常微分方程组
' s7 \) X0 W6 h: `7 U- h& s7 t: v5 v$ D0 ^5 d3 j. n) c$ J
5 i; l2 O6 C5 d3 z0 r" F! ]5 E1 ~ I+ U, c
function F=f(t,Y)! H Y$ X: R' H) b; D7 L* L T) R
% 定义待求的微分方程组9 L: m q# V* a# o
x=Y(1);
4 Y7 V. @0 G+ n7 x! \y=Y(2);
x7 d1 v G" P: B8 W3 k8 M/ Af1=3*y;1 Y+ J9 W( [* j8 o" A
f2=(1-x^2)*y-x;
4 E/ [1 `6 B+ S+ S( X( r; hF=[f1;f2];
8 p) M7 }4 _( N& R, q/ I# H& Q9 jend
2 U& v; N0 C% ?9 @5 s( {/ ~ k2 V2 M& Q
: _: T: W% I- g$ c0 ]%% 定义计算的步长, 设置变量的初始值8 m1 A; n% ?, d" y0 N. K6 ~5 x8 t* M
clear;clc;close all
3 x" B, v2 e( x0 EDelta=0.001; % 定义步长- x; {5 K) D0 i2 c% F
t=0: Delta :20; % 定义自变量 t- e6 @$ s; E5 l: Y
n=length(t);
" ] J* K4 A3 U# bY(:,1)=[2;0]; % 定义 x y 的初始值- K/ k" p( {+ n5 c& P7 d
* y/ c" K5 ^: |* K( T%% 自定义欧拉法, 求解微分方程组
- v2 C4 ^* w( N. N2 `3 gfor k=1:n-1. I: L3 B6 h* K4 [
Y(:,k+1)=Y(:,k)+Delta*f(t(k),Y(:,k));
$ K1 p0 W w5 c: p4 [( K0 g; Pend
( @6 q/ {; o9 g0 c% V/ ?x=Y(1,: );) j4 B3 s1 t6 K' R7 B$ y) T Q
y=Y(2,: );4 a; y( b6 \: s: O k
( j1 Y8 G2 ?9 ~( P( m2 I
%% 绘制 x y 的求解结果
! v+ F- \4 N9 Y7 Ifigure* U2 u- l4 u$ {
set(gcf,'units','normalized','position',[0.15 0.2 0.7 0.6]); % 设置 figure 窗口的位置和尺寸* p+ e" q& D T
subplot(1,2,1)
P) }1 q( ~7 V8 L k- A! Rplot(t,x,'b')$ J+ Z1 j4 ^* |% y
xlabel('t')0 H6 G, I2 a6 s, T
ylabel('x')
* V: ] H* x" w; `) z
" |; t/ l) a% n6 x' wsubplot(1,2,2)5 P4 Q5 G4 i1 U
plot(t,y,'r')1 P. H/ W! p; v' B3 A j1 C! N1 P
xlabel('t')) B( E9 ^: o. v
ylabel('y')
1 c% ?' S" y3 W' i- _2 m. I) i; }0 m. i+ f! K) V+ L
+ Y, |" k" Z0 m. r
% V+ y; t4 q8 J4 M3 j |
|