MatLab muestra diferentes gráficos en diferentes niveles de zoom

MatLab muestra diferentes gráficos en diferentes niveles de zoom

Ejecuté este código en 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

Y obtuve esta trama: ingrese la descripción de la imagen aquí

Al acercarse (2.5,3.5):

ingrese la descripción de la imagen aquí

Alejar y luego acercar en el mismo lugar ingrese la descripción de la imagen aquí

Ahora bien, ¿cómo sé cuál de estos tres es correcto y hay alguna manera de deshacerme de tramas tan erróneas?

Lo mismo en Desmos

Respuesta1

matlabimplícitoEs una función excelente para tener una idea de cómo se comporta una función dada implícitamente en términos de sus variables. Sin embargo, si su función no es "buena", puede ocultar o revelar algunos detalles, según el rango que esté trazando. Siguiendo la documentación de Matlab,

Consejos

  • Cuando hace zoom en el gráfico, fimplicit vuelve a calcular los datos, lo que puede revelar detalles ocultos.

La función Matlab evaluará numéricamente la función para encontrar los pares (x,y)a trazar y elegirá automáticamente algunos puntos, por lo que los pequeños detalles pueden desaparecer cuando los límites de los ejes son demasiado grandes (pequeña cantidad de puntos para trazar las curvas). Puedes intentar aumentar la propiedad MeshDensity para agregar más puntos a tus curvas y comprobar cuál es la correcta:

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

información relacionada