EDA365电子论坛网

标题: MATLAB源程序代码分享:MATLAB实现改进的欧拉法求解常微分方程组 [打印本页]

作者: House    时间: 2020-3-17 10:25
标题: MATLAB源程序代码分享:MATLAB实现改进的欧拉法求解常微分方程组
MATLAB源程序代码分享:MATLAB实现改进的欧拉法求解常微分方程组" F0 b! ^4 Y, i+ v$ V) \
function F=f(t,Y); f' z9 a, t: F" R$ P  c* c: b4 R
% 定义待求的微分方程组
) \9 V  Z) P2 p6 |x=Y(1);2 |! m3 t7 s% ~8 w0 X1 c7 F3 [2 r5 h1 Z
y=Y(2);
8 E  D% V4 V6 I* s2 lf1=3*y;
2 i# V3 V* _; \% Y1 D, Af2=(1-x^2)*y-x;
+ d& D% S* _0 T% U5 U2 TF=[f1;f2];# B  u) u% A5 z$ E
end5 n; F! F2 Q$ B# U0 g, Z
3 A6 J+ o( o' H- x# |9 E

, M! s3 Q$ x4 Q) A3 `%% 定义计算的步长, 设置变量的初始值
0 l+ v0 D% O$ b" G; Iclear;clc;close all; G2 R$ k( ^2 f4 L( c$ j
Delta=0.001;      % 定义步长: R0 a% {( T; k; Y8 J7 V
t=0: Delta:20;     % 定义自变量 t
# K! {, M: F5 N; Z8 l6 k" Qn=length(t);
$ |$ A4 f: y) V/ Y& f$ O1 TY(:,1)=[2;0];     % 定义 x y 的初始值8 p: a5 q0 U7 B3 |
, a& J! I- n6 @! C
%% 自定义改进的欧拉法, 求解微分方程组
5 q1 _  w' ?5 Ofor k=1:n-1
+ j/ F  t) x# ^+ h    F1=f(t(k),Y( :,k));+ Q( ^" v4 M( H7 i; P, I
    F2=f(t(k+1),Y( :,k)+Delta*f(t(k),Y( :,k)));% b& a% R+ ^$ Y; X; W
    Y(:,k+1)=Y( :,k)+Delta*(F1+F2)/2;# X, [/ L; f& c" A/ J
end
! d1 S) j6 k+ c4 H0 Ax=Y(1,: );
2 i; k# F' `8 Q  {y=Y(2,: );& e9 q2 I* P0 n  z- g7 d2 T

3 l; \3 I' g- R9 Z2 S8 t6 E- Q4 g%% 绘制 x y 的求解结果
9 P1 }8 J: J, lfigure
: J" `0 Z* P' r  g+ Zset(gcf,'units','normalized','position',[0.15 0.2 0.7 0.6]);  % 设置 figure 窗口的位置和尺寸
8 J* U  p9 u/ o8 ^" I. ]3 R3 M* isubplot(1,2,1)
- M5 t3 u/ T- v8 lplot(t,x,'b')
' {! x' K& O" N( v0 hxlabel('t')
( I3 _+ q+ Z9 m& x! f# bylabel('x')9 q$ o. j4 j. c5 j

  o4 q" }  X6 x  s: n5 q5 r/ Wsubplot(1,2,2)* q% q, p+ `  B+ _6 u
plot(t,y,'r')
6 V6 z* K' z# Sxlabel('t')
* z4 u4 N* A; s$ ?4 I( |ylabel('y')- E5 Z' S: z: F# |1 B
  e) s4 R3 s9 i0 l4 \( e: ?

作者: wu68aq    时间: 2020-3-17 17:41
MATLAB源程序代码分享:MATLAB实现改进的欧拉法求解常微分方程组。




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2