如何用Matlab画出z=tanx/(tanx-tany)的向量场?
我尝试了如下代码:[X,Y]=meshgrid(-80:2:80,-80:2:80);Z=tand(X)./(tand(X)-tan(Y));[DX,DY]=gradie...
我尝试了如下代码:
[X,Y] = meshgrid(-80:2:80,-80:2:80);
Z =tand(X)./(tand(X)-tan(Y));
[DX,DY] = gradient(Z,2,2); %梯度
% contour(X,Y,Z) %等高线
hold on
quiver(X,Y,DX,DY) %向量场
xlabel('x');
ylabel('y');
colormap hsv
hold off
但结果不对,正确的结果应该如图,求帮忙。 展开
[X,Y] = meshgrid(-80:2:80,-80:2:80);
Z =tand(X)./(tand(X)-tan(Y));
[DX,DY] = gradient(Z,2,2); %梯度
% contour(X,Y,Z) %等高线
hold on
quiver(X,Y,DX,DY) %向量场
xlabel('x');
ylabel('y');
colormap hsv
hold off
但结果不对,正确的结果应该如图,求帮忙。 展开
展开全部
主要问题是某些点的梯度是发散的,结果算出来DX,DY里面有一堆Inf。画图的时候,Inf的箭头很长,所以把其它地方的箭头都变成一个点了。解决方法是把Inf都替换成NaN,代码如下(缩进的地方是修改过的代码):
[X,Y] = meshgrid(-80:2:80,-80:2:80);
Z =tand(X)./(tand(X)-tand(Y));
[DX,DY] = gradient(Z,2,2); %梯度
DX(abs(DX)==Inf)=NaN;
DY(abs(DY)==Inf)=NaN;
% contour(X,Y,Z) %等高线
hold on
quiver(X,Y,DX,DY,10) %向量场
xlabel('x');
ylabel('y');
colormap hsv
hold off
[X,Y] = meshgrid(-80:2:80,-80:2:80);
Z =tand(X)./(tand(X)-tand(Y));
[DX,DY] = gradient(Z,2,2); %梯度
DX(abs(DX)==Inf)=NaN;
DY(abs(DY)==Inf)=NaN;
% contour(X,Y,Z) %等高线
hold on
quiver(X,Y,DX,DY,10) %向量场
xlabel('x');
ylabel('y');
colormap hsv
hold off
ZESTRON
2024-09-04 广告
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸...
点击进入详情页
本回答由ZESTRON提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询