我在 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