4

我一直在寻找一种在 Matlab 中绘制坡度场的方法。

这是我正在寻找的:

我有一个方程

dy/dx = f(x,y)

或者

dx/dt = f(x,y)
dy/dt = g(x,y)

我想以一种很好的方式画出来

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

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

如果觉得有用,欢迎点赞

4

2 回答 2

9

所以这是等式:

dx/dt = x^2-3xy+y
dy/dt = -5x+sin(yx)

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

[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);

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

于 2013-04-01T17:01:51.747 回答
1

另一个方便的解决方案是:

[x,y] = meshgrid('start':'step':'end');

dy = 'f(x,y)';

norm = sqrt(dy.^2+1^2);

quiver(x, y, ones(size(x))./norm, dy./norm, 'magnification' )


例如,如果 dy 是 dy = x+y

[x,y] = meshgrid(-2:0.2:2);

dy = x+y;

norm = sqrt(dy.^2+1^2);

quiver(x, y, ones(size(x))./norm, dy./norm, 0.5 )
于 2020-12-30T20:25:04.687 回答