MATLAB ODE45:为什么解析解和数值解之间存在很大差异?
MATLAB ODE45: Why is there a big divergence between analytical and numerical solution?
目前我正在尝试理解 ode45。所以我想解决一个练习。
微分方程为:y=y',y(0)=10。
我写了这段代码:
tspan = [0 5];
y0 = 10;
[t,y] = ode45(@(t,y) y, tspan, y0);
plot(t,y);
我知道解析解是指数函数。所以我将它插入到图中以验证解决方案。 (exp函数需要向上移动9位。)
hold on;
fplot(@(x) exp(x)+9,tspan,'r')
但是有一个分歧我无法解释。我理解错了什么?
red:analytical solution, blue: numerical
此初始条件下微分方程的真解为:10*exp(t)
对于y'(t) = y(t)
解的形式为 c.exp(t)
,其中 c 为常数。
使用初始条件:y0 = 10
我们有:c exp(0) = 10
因此 c = 10
;
因此您比较的金额不正确,
使用:fplot(@(x) 10*exp(x),tspan,'r')
目前我正在尝试理解 ode45。所以我想解决一个练习。 微分方程为:y=y',y(0)=10。 我写了这段代码:
tspan = [0 5];
y0 = 10;
[t,y] = ode45(@(t,y) y, tspan, y0);
plot(t,y);
我知道解析解是指数函数。所以我将它插入到图中以验证解决方案。 (exp函数需要向上移动9位。)
hold on;
fplot(@(x) exp(x)+9,tspan,'r')
但是有一个分歧我无法解释。我理解错了什么?
red:analytical solution, blue: numerical
此初始条件下微分方程的真解为:10*exp(t)
对于y'(t) = y(t)
解的形式为 c.exp(t)
,其中 c 为常数。
使用初始条件:y0 = 10
我们有:c exp(0) = 10
因此 c = 10
;
因此您比较的金额不正确,
使用:fplot(@(x) 10*exp(x),tspan,'r')