MATLAB 中的ODE45

来源:百度知道 编辑:UC知道 时间:2024/05/26 03:14:26
ode45的初始条件是否必须是在x=0处

没有必要 只要是选取的初值对应的t等于tspan(1)

我们看下面一个例子,对于dx/dt=2t来说吧 我们知道精确解是x=t^2

下面我们给出数值解法,编写代码
%
%选取状态变量
%x1=x
%
%则各个状态变量的一阶导数为
%x1'=x'=2*t
%
%by dynamic
%see also http://www.matlabsky.com
%2009.2.19
%
odefun=@(t,x)2*t;
%给出初值,注意我们这里不给出t=0时的初值,我们给出t=2时的初值
%初值是指各个状态变量的在t=t0=2时的值
%t=2时,状态变量x1的初值x1=t^2=4,故初值为
x0=4;
%注意下面的t0必须等于2,因为我们的选择的初值条件是t=2,ode45默认将t0作为初值条件对应的t值
t0=2;
t1=10;
[t,y]=ode45(odefun,[t0,t1],x0);
%根据计算数据绘图
plot(t,y,'-.k','LineWidth',3)
%根据解析解精确绘图
t=0:0.1:10;
x=t.^2;
hold on
plot(t,x,'r')

我们可以看到两个图像重合 说明现在的ode45求解出完全正确的数值解 换句话说初值的条件不一定需要t=0

换句话说 只要那个初值中的t可以任意选,但是必须满足,选取的t和ode45(odefun,[t0,t1],x0)中的t0相等

至于【微分方程的Matlab数值解法详解】参见matlab ODE45 急求高手帮助——MATLAB-ode45困扰 matlab中的一元回归 matlab编程中的问题 matlab中的数据处理问题 : 在MATLAB中的使用 matlab中的问题 matlab中的翻译问题 matlab中的GUI问题 MATLAB中的仿真问题