Hoe een hellingveld in Matlab te tekenen

Ik was op zoek naar een manier om hellingvelden in Matlab te maken.

Hier zoekt u:

Ik heb een vergelijking

dy/dx = f(x,y)

of

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

en ik wil het op een leuke manier tekenen

omdat de enige Antwoord Over het hier beantwoordde mijn vraag niet, het kostte me wat tijd om te vinden hoe dit te doen.

Ook omdat dit niet iets is dat ik de hele tijd doe in Matlab (hoogstwaarschijnlijk tot de volgende keer dat ik het nodig heb, zal ik het vergeten) Ik maak een memo voor mij hoe dit te doen.

Als u het nuttig vindt, voel u dan vrij om u te upvragen


Antwoord 1, Autoriteit 100%

Dus hier is de vergelijking:

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

Dat is de code, die helpt bij het doen van de taak:

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

Het is ook mogelijk om het pakket Dield te gebruiken. U kunt het lezen hier . Maar ik heb het niet voor mezelf getest


Antwoord 2, Autoriteit 11%

Er zou een andere handige oplossing gaan:

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


Bijvoorbeeld als dy dy = x+y zou zijn

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

Other episodes