如何在matlab中绘制一个斜率场

Sal*_*ali 4 math matlab differential-equations

我正在寻找一种在Matlab中绘制斜坡场的方法.

这是我正在寻找的:

我有一个等式

dy/dx = f(x,y)
Run Code Online (Sandbox Code Playgroud)

要么

dx/dt = f(x,y)
dy/dt = g(x,y)
Run Code Online (Sandbox Code Playgroud)

我想以一种很好的方式画它

因为这里唯一的答案是没有回答我的问题,我花了一些时间才找到如何做到这一点.

另外因为这不是我在matlab中一直在做的事情(很可能直到下次我需要它,我会忘记它)我正在为我创建一个备忘录如何做到这一点.

如果您觉得它很有用,请随意提升

Sal*_*ali 9

所以这是等式:

dx/dt = x^2-3xy+y
dy/dt = -5x+sin(yx)
Run Code Online (Sandbox Code Playgroud)

这是代码,它将有助于完成这项工作:

[x,y] = meshgrid(-2:0.2:2);
dx = x.^2-3*x.*y+y;
dy = -5*x+sin(x.*y);
r = ( dx.^2 + dy.^2 ).^0.5;
px = dx./r;
py = dy./r;
quiver(x,y,px,py);
Run Code Online (Sandbox Code Playgroud)

也可以使用包dfield.你可以在这里阅读.但我没有为自己测试过