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
Ao aproximar o zoom (2.5,3.5):
Diminuir o zoom e depois aumentar o zoom no mesmo local
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