Arrays 如何在Matlab中绘制坡度场?

Arrays 如何在Matlab中绘制坡度场?,arrays,matlab,plot,ode,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 q

我不熟悉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)
我也得到了空白图

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


非常感谢您的帮助!

在计算此函数时,您正在生成
inf
值,因为它有Y=+-1左右的极点。
inf
使绘图变得荒谬……要仍然绘制此图,您可以将所有
inf
值转换为
NaN
(绘图中没有数字)详情如下:

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

我认为这是有效的,谢谢!你也知道如何根据坡度的符号(即正、负或零)改变坡度的颜色吗?事实上,所以我尝试以0.1的增量将绘图比例从(-5,5)更改为(-2,2):
Ffun=@(X,Y)X.^2./(1-Y.^2);%f(X,Y)[X,Y]=网格(-2:.5:2,-2:.5:2);%选择绘图大小DY(isinf(DY))=NaN;DX=one(size(DY));quiver(X,Y,DX,DY);%生成绘图值保持不变;等高线(X,Y,DY,5);
我得到以下错误:“使用quiver时出错(第55行)X的大小必须与U的大小或U的列数匹配。”您忘记定义
DY=Ffun(X,Y);