ezplot畫圖時,會自動將解得虛部省略。用fsove求解,然後再畫圖即可。
具體程序如下:
%參數賦值
k0=4.0516e+06;
em=-127.8+3.21i;
ed=2.25;?
%先設定d的值,再對方程進行求解
d=1:500;
z=d;?
%把每壹個d帶入,對應求出壹個x
for?i=1:500
f?=?@(x)(em*k0*sqrt(x(1)^2-ed)*tanh(sqrt(x(1)^2-ed)*k0*d(i)/2/(10^9))+ed*k0*sqrt(x(1)^2-em));
x=fsolve(f,1.5+0.0003i,optimset('Display','off'));
z(i)=x(1);
end
%至此所有的d對應的x全部求出,也就是z,下面開始畫圖
subplot(2,2,[1?2]);
plot(d,real(z),d,1.5133,'--');
xlabel('d(nm)');ylabel('Real?part?of?N_{eff}');
axis([0,500,1.4,4]);gtext('1.5133');legend('MIM','SP');
subplot(2,2,[3?4]);
plot(d,imag(z),d,0.0003,'--');
xlabel('d(nm)');ylabel('Imaginary?part?of?N_{eff}');
axis([0,500,-0.001,0.03]);gtext('0.0003');legend('MIM','SP');
得到的結果如下: