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
Al acercarse (2.5,3.5):
Alejar y luego acercar en el mismo lugar
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