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