MatLab mostrando gráficos diferentes em diferentes níveis de zoom

MatLab mostrando gráficos diferentes em diferentes níveis de zoom

Executei este código no 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

E consegui esse enredo: insira a descrição da imagem aqui

Ao aproximar o zoom (2.5,3.5):

insira a descrição da imagem aqui

Diminuir o zoom e depois aumentar o zoom no mesmo local insira a descrição da imagem aqui

Agora, como posso saber qual desses três está correto e há alguma maneira de me livrar dessas tramas errôneas?

Da mesma forma em Desmos

Responder1

Matlabfimplícitoé uma função excelente para se ter uma ideia de como se comporta uma função dada implícita em termos de suas variáveis. Porém, se sua função não for "boa", ela poderá ocultar ou revelar alguns detalhes, dependendo do intervalo que você está traçando. Seguindo a documentação do Matlab,

Pontas

  • Quando você amplia o gráfico, o fimplicit recalcula os dados, o que pode revelar detalhes ocultos.

A função Matlab avaliará numericamente a função para encontrar os pares (x,y)a serem plotados e escolherá automaticamente alguns pontos, de modo que pequenos detalhes podem desaparecer quando os limites dos eixos forem muito grandes (pequeno número de pontos para traçar as curvas). Você pode tentar aumentar a propriedade MeshDensity, para adicionar mais pontos às suas curvas e verificar qual está correta:

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

informação relacionada