matlab中旋度函数的几个问题

matlab中旋度函数的几个问题,matlab,Matlab,我的问题与向量场的旋度有关。我无法找到为什么我的代码与解析解相比会抛出不同的结果。我感谢你对这个问题的帮助 代码如下: N=20; [X,Y]=meshgrid(linspace(-4,4,N),linspace(-4,4,N)); u =Y*X.^2+3*Y.^2; v =2*X.*Y+X.^2; % analitic curl CURL=-X.^2+2*X-4*Y; subplot(2,1,1),contourf(X,Y,CURL),colorbar % using matlab fun

我的问题与向量场的旋度有关。我无法找到为什么我的代码与解析解相比会抛出不同的结果。我感谢你对这个问题的帮助

代码如下:

N=20;
[X,Y]=meshgrid(linspace(-4,4,N),linspace(-4,4,N)); 
u =Y*X.^2+3*Y.^2;
v =2*X.*Y+X.^2;
% analitic curl
CURL=-X.^2+2*X-4*Y;
subplot(2,1,1),contourf(X,Y,CURL),colorbar
% using  matlab function (curl)
[cur,va]=curl(X,Y,u,v);
subplot(2,1,2),contourf(X,Y,cur),colorbar
在您的代码中

u =Y*X.^2+3*Y.^2;
这是一个问题:在
Y
X.^2
之间应用矩阵。改变它会有很大帮助:

u =Y.*X.^2+3*Y.^2;
出于这个原因,我建议使用非对称输入(至少在开发/调试阶段),例如20x21网格。这样,许多这样的错误可以在早期被发现

结果:

从您的帖子中删除了
curl
标签。您使用的标记指的是终端命令
curl
。。。不是实际的MATLAB函数。删除此项以避免混淆。MATLAB必须以数值方式近似任何解,而解析解直接考虑导数。例如,请参阅关于复杂导数的帖子。我使用以下公式计算旋度:Vx Uy nd给出了以下公式:-X^2+2X-4Y。我对比较数值解和解析解感兴趣。但是这些方程的数值结果与解析解相差甚远,谢谢@AndrasDeak!!