test_my_ode.m

来自「变系数/非线性微分方程的求解」· M 代码 · 共 27 行

M
27
字号
function test_my_ode
% 以一步Euler法说明MATLAB/ODEs的实现及封装方法

%   $sunshengli@sohu.com $  
%   $Date: 2005/07/20    $

h   = 0.1;    
t   = 0:0.1:20;
y0  = -4;
% [t,y] = ode45(@odefun,t,y0);  % 使用Matlab自带积分器
[t,y] = my_ode(@odefun,t,y0);   % 使用自己封装的积分器
plot(t,y)

function [t,y] = my_ode(odefun,t,y0)
    
y(1) = y0;
for k=1:(length(t)-1)
    h       = t(k+1) - t(k); 
    y_dot   = feval(odefun,t,y(k));   
    y(k+1)  = y(k) + h*y_dot ;
end

function y_dot = odefun(t,y)

    y_dot   = -0.2*y + 2 ;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?