|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 House 于 2020-3-10 17:43 编辑 * L+ p1 H9 n- s6 t/ `6 @
& H: W0 ~8 B+ W6 d3 s. o0 J( u* O. { ^MATLAB使用自定义的欧拉法求解常微分方程组) @) D# j% v+ i' V3 @* o+ N
1 ~: C* a+ E+ R0 _9 S, p
/ x' |' _! ?: \7 p9 G M
" |! |4 `9 S8 J8 |' V8 [1 yfunction F=f(t,Y)& n) T$ s/ r4 x( q$ A
% 定义待求的微分方程组
4 R. f' D4 v7 u. q, e# T2 @x=Y(1);
# a; f) j) c4 k% A7 R) S' my=Y(2);. g) B9 E( I" y
f1=3*y;
& G9 i; o& `1 Cf2=(1-x^2)*y-x;
) j$ u- R$ H& a' E, o; U" YF=[f1;f2];
+ K# A6 n) J# f- b0 D7 `end+ m$ @1 b4 u. I' ^# R/ L7 h
- x' c; G, T: `9 Z% {" x
" I2 V0 w+ k- a0 N$ p5 z' a%% 定义计算的步长, 设置变量的初始值
6 _# N& y# P" _( t0 fclear;clc;close all
; h+ p! O3 f# d' n- DDelta=0.001; % 定义步长
4 ~" s4 E+ z( `* Qt=0: Delta :20; % 定义自变量 t" O- ^8 E7 d* d/ t
n=length(t);; E# Y' x5 A& j# l" S+ P; v
Y(:,1)=[2;0]; % 定义 x y 的初始值
$ o: w+ m- f: _6 _& P7 a0 c6 H- s4 ]. r1 w& b1 g$ x" R# [
%% 自定义欧拉法, 求解微分方程组
$ h: n9 U& U3 q+ D* q! |8 Gfor k=1:n-13 Z# V3 h" _5 q0 D% _8 S
Y(:,k+1)=Y(:,k)+Delta*f(t(k),Y(:,k));
, D+ N% E, i& ~$ Aend4 d' G) {5 M. z) @) K9 I0 z
x=Y(1,: );* b* h) h" R; ?7 F& L: f* W/ T
y=Y(2,: );
( l, c8 I M- C- b' @- I
( z8 i! H! l; z% r5 o( ~%% 绘制 x y 的求解结果$ r: t4 `* L8 X/ t0 N5 Z7 {1 Y$ o
figure
0 [5 L* m8 x" _' B. f: T% Wset(gcf,'units','normalized','position',[0.15 0.2 0.7 0.6]); % 设置 figure 窗口的位置和尺寸4 T6 u1 A1 D9 W
subplot(1,2,1)
+ U! m- s4 b' F; c* e, \" Pplot(t,x,'b')
$ F) X1 z- m6 C/ sxlabel('t')/ }' A! f1 n/ \- V/ a
ylabel('x')
; B) b6 b/ `4 }+ o
: F/ C5 O. f' N' z) Z1 k" z: f% Msubplot(1,2,2)
5 w) y( ]+ ~. M- q M P" c! qplot(t,y,'r')2 p- P! {5 W% ^( r
xlabel('t')
) q3 A# l0 k7 }ylabel('y')
: T B! k" p6 P6 }+ ?+ M9 j4 k7 u! J' w
% _+ V, _+ c# f8 q c i. o9 @5 X
|
|