как нарисовать поле наклона в матлабе

Я искал способ рисовать поля наклона в Matlab.

Вот что я ищу:

у меня есть уравнение

dy/dx = f(x,y)

or

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

и я хочу нарисовать это красиво

Потому что единственный ответ об этом здесь не было ответа на мой вопрос, мне потребовалось некоторое время, чтобы найти, как это сделать.

Кроме того, поскольку это не то, что я делаю все время в Matlab (скорее всего, до следующего раза, когда мне это понадобится, я забуду об этом), я создаю памятку для себя, как это сделать.

Если вы найдете это полезным, не стесняйтесь голосовать


person Salvador Dali    schedule 01.04.2013    source источник


Ответы (2)


так вот уравнение:

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. Вы можете прочитать его здесь. Но на себе не проверял

person Salvador Dali    schedule 01.04.2013

Другое удобное решение будет выглядеть так:

[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 )
person Leon    schedule 30.12.2020