如何在Matlab中绘制斜率场?

时间:2014-02-02 08:38:05

标签: arrays matlab plot ode

我是Matlab的新手(刚刚下载了它),我想知道如何创建斜率场和积分曲线。

我的等式是dy / dx = x ^ 2 /(1-y ^ 2)。

我对代码的尝试是:

Ffun = @(X,Y)X.^2./(1-Y.^2);               % function f(x,y)
[X,Y]=meshgrid(-5:.5:5,-5:.5:5); % choose the plot sizes
DY=Ffun(X,Y); DX=ones(size(DY)); % generate the plot values 
quiver(X,Y,DX,DY);
hold on;
contour(X,Y,DY,10); 

我一直在说:“警告:矩阵与工作精度是一致的。在@(X,Y)X^2/(1-Y^2) 我也得到了空白的图表。

另外,如果我能得到不同颜色的正斜率,负斜率和零斜率,那就太好了。

帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

在评估此函数时,您正在生成inf值,因为它具有围绕Y = + - 1的极点。 inf使得绘图可以扩展到荒谬......要仍然绘制此图,您可以将所有inf值转换为NaN(不是数字未在图中显示),如下所示:

DY(isinf(DY))=NaN;
quiver(X,Y,DX,DY);