MatLab 在不同縮放等級上顯示不同的圖

MatLab 在不同縮放等級上顯示不同的圖

我在 MatLab 上運行了這段程式碼:

function main
fimplicit (@(x,y)f(x,y),[2 5])
end
function fun = f(x,y)
nc=1.45;    %cladding
nf=1.5;
ns=1.4;    %substrate
h=5;  %width of waveguide
kappa=sqrt(x^2*nf^2-y.^2);
gammas=sqrt(y^2-x^2*ns^2);
gammac=sqrt(y^2-x^2*nc^2);
z=sin(h.*kappa);
%TE mode
fun=z.*(kappa.^2-gammas.*gammac)-cos(h.*kappa).*(gammac+gammas).*kappa;
end

並得到了這個情節: 在此輸入影像描述

放大到 (2.5,3.5) 附近時:

在此輸入影像描述

在同一位置縮小然後放大 在此輸入影像描述

現在我怎麼知道這三個中哪一個是正確的,有什麼方法可以消除這些錯誤的情節嗎?

同樣在 Desmos 中

答案1

MATLAB隱含的是一個很好的函數,可以了解根據其變數隱式給出的函數的行為方式。但是,如果您的函數不是“好”,它可能會隱藏或顯示一些細節,這取決於您正在繪製的範圍。根據 Matlab 文檔,

尖端

  • 當您放大圖表時,fimplicit 會重新計算數據,這可以揭示隱藏的細節。

Matlab 函數將對函數進行數值計算,以便找到(x,y)要繪製的點對,並且會自動選擇幾個點,因此當軸限制太大時(繪製曲線的點數量較少),小細節可能會消失。您可以嘗試增加 MeshDensity 屬性,為曲線添加更多點以檢查哪一個是正確的:

fimplicit(f,'MeshDensity',500)  % 151 is the default. Increase this number to add more evaluation points per direction

相關內容