MATLAB ODE45:为什么解析解和数值解之间有很大的分歧



目前我正在努力理解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')

但有一种分歧我无法解释。我理解错了什么?

红色:解析解,蓝色:数值

这个微分方程在这个初始条件下的真解是: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')

最新更新