我在 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
Matlab fimplicit是一个很好的函数,可以了解根据变量隐式给出的函数的行为方式。但是,如果您的功能不是“好”,它可能会隐藏或显示一些细节,具体取决于您绘制的范围。根据 Matlab 文档,
Matlab 函数将对函数进行数值评估以找到
(x,y)
要绘制的对,并会自动选择几个点,因此当轴限制太大时(绘制曲线的点数较少),小细节可能会消失。您可以尝试增加 MeshDensity 属性,以向曲线添加更多点以检查哪一个是正确的: