다양한 확대/축소 수준에서 다양한 플롯을 보여주는 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) 근처를 확대하면:

여기에 이미지 설명을 입력하세요

축소한 다음 같은 지점에서 확대 여기에 이미지 설명을 입력하세요

이제 이 세 가지 중 어느 것이 올바른지 어떻게 알 수 있으며 그러한 잘못된 플롯을 제거할 수 있는 방법이 있습니까?

마찬가지로 Desmos에서도

답변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

관련 정보