【发布时间】:2018-06-15 05:04:49
【问题描述】:
给定一个一阶微分方程...
dy/dx = 0.01y(1 - y)(y - 1/2)
我正在尝试创建一个斜率场并显示一些特定的解曲线,但由于某种原因,这些曲线似乎不能完美地拟合向量。
这是输出: 如果您查看两条中间曲线,它们的斜率似乎并不跟随向量。这是情节本身的产物还是我做错了什么?
我花了一些时间让斜率场很好地显示出来,也许解曲线不适合的原因是因为点之间的间距,但我不确定。
代码如下:
[T Y] = meshgrid(-200:10:200, -2:0.1:2);
dY = 0.01.*Y.*(1-Y).*(Y-(0.5));
dT = ones(size(dY));
L = sqrt(dT.^2 + dY.^2);
figure
quiver(T, Y, dT./(L), dY./L, .6, 'AutoScale', 'off', 'ShowArrowHead', 'off');
axis tight
hold on
grid on
axis([-200 200 -2 2])
syms x y
de = 'Dy = 0.01*y*(1-y)*(y-(0.5))';
y1 = dsolve(de, 'y(0) = -1', 'x');
y1 = expand(y1);
y2 = dsolve(de, 'y(0) = 1/4', 'x');
y2 = expand(y2);
y3 = dsolve(de, 'y(0) = 3/4', 'x');
y3 = expand(y3);
y4 = dsolve(de, 'y(0) = 2', 'x');
y4 = expand(y4);
for fxn = [y1 y2 y3 y4]
fplot(fxn, [-200 200], 'LineWidth', 2)
hold on
end
【问题讨论】:
-
是的,它看起来像是剧情的神器。中间的斜率使得分段中的高度差小于 1 个像素,解曲线也具有每 20 个分段 10-20 个像素的斜率。您可以在抗锯齿的污迹中看到一些正确的斜率。如果您要生成更高分辨率的图片,您应该会更好地看到斜坡段并不是真正水平的。
标签: matlab differential-equations graphing