MatLab показывает разные графики на разных уровнях масштабирования

MatLab показывает разные графики на разных уровнях масштабирования

Я запустил этот код на 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):

введите описание изображения здесь

Уменьшение масштаба и последующее увеличение масштаба в одном и том же месте введите описание изображения здесь

Как мне узнать, какой из этих трех вариантов правильный, и есть ли способ избавиться от таких ошибочных сюжетов?

Аналогично в Десмосе

решение1

Матлабнеявныйявляется превосходной функцией, чтобы иметь представление о том, как ведет себя функция, заданная неявно в терминах ее переменных. Однако, если ваша функция не «хороша», она может скрывать или раскрывать некоторые детали, в зависимости от диапазона, который вы строите. Следуя документации Matlab,

Советы

  • При увеличении масштаба диаграммы fimplicit пересчитывает данные, что может выявить скрытые детали.

Функция Matlab численно оценит функцию, чтобы найти пары (x,y)для построения графика, и автоматически выберет несколько точек, поэтому мелкие детали могут исчезнуть, когда пределы осей слишком велики (небольшое количество точек для построения кривых). Вы можете попробовать увеличить свойство MeshDensity, чтобы добавить больше точек к вашим кривым, чтобы проверить, какая из них правильная:

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

Связанный контент