|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 House 于 2020-3-10 17:43 编辑 . M" J# T6 _ G+ f. p1 [
' A: _$ N6 a& E- d- z E; |; ]MATLAB使用自定义的欧拉法求解常微分方程组
9 [4 O, N! M( D& m3 D& f
3 s3 v L/ m5 S2 W* @ }
6 z( `' ]- j: X- T8 C4 `6 G& X' [2 t' w; G6 h2 V
function F=f(t,Y)+ }. e# ^# [ [* `; F
% 定义待求的微分方程组
& D6 P. d5 u8 fx=Y(1);
2 m8 O$ {2 ]! y# _0 W5 oy=Y(2);
5 n, N. e. @; {4 u7 Uf1=3*y;, I7 Z- x+ b; s( M& S# @
f2=(1-x^2)*y-x;: \& W) y* A8 b5 h
F=[f1;f2];
( ~* h$ R& {9 S7 P: M" Eend9 @( P3 i5 I3 [
6 ~* D+ H! |+ C; E4 D$ s: p# l" \
4 E: o1 x" F+ Q$ g. {%% 定义计算的步长, 设置变量的初始值/ H! [" p7 e0 b% }6 p
clear;clc;close all. ~+ K# s; v2 N3 j' q; M1 c# K
Delta=0.001; % 定义步长 X& S- r- v$ W) e
t=0: Delta :20; % 定义自变量 t) X2 c* _! c& v2 I7 F
n=length(t);
6 ~6 d, K$ n4 O, c& CY(:,1)=[2;0]; % 定义 x y 的初始值 x6 z' s) y( b
8 J& h/ z- z1 }/ d- j2 f& E
%% 自定义欧拉法, 求解微分方程组9 a* r2 ?. d" M3 N
for k=1:n-1% i0 V6 A/ f: c* K4 y4 X' h
Y(:,k+1)=Y(:,k)+Delta*f(t(k),Y(:,k));
) k# }2 @" T. zend
* m+ Y7 M3 I0 Wx=Y(1,: );
: q5 y3 {; P* K5 [y=Y(2,: );' l8 I* f# m2 K* {8 b* \ ]
9 g" `7 g! H6 {. A' h6 O7 u) G/ O% d6 G
%% 绘制 x y 的求解结果
8 d1 H# |2 w6 O% E# I5 ~figure
1 T, D4 l" S$ X0 _: J6 b# Uset(gcf,'units','normalized','position',[0.15 0.2 0.7 0.6]); % 设置 figure 窗口的位置和尺寸! l4 l, G5 \! y. [) Y
subplot(1,2,1) d4 [* U$ q8 w# |7 K& B
plot(t,x,'b')6 I; L2 i3 u% M4 M, {
xlabel('t')" O' o* _3 s% ^ T/ \. L
ylabel('x')& P+ b. A. H' W0 {+ g
0 k) p9 W* G1 o {! y
subplot(1,2,2)
& l% p% }1 v) b. aplot(t,y,'r') o, P& G3 ^/ E& C$ Z! t
xlabel('t')
. _$ }* ]1 z: Q. v1 h5 k. U. Zylabel('y')
% {& L; m4 F* I* M3 Q9 N
( a+ }4 F0 u7 m9 L+ p$ y
- m. A V+ ~3 E+ `2 R% c
* M4 o& j# s2 i: A, p |
|