0
终于有时间整理《非线性光学》的作业题了,提供一道画图题的Matlab代码吧~
利用塞尔迈耶公式:
结合表格中的参数数据:
1
这是题目中要求作出的图:
2
色散参量公式:
时延差公式:
利用上面的公式和参数值就可以画出图啦~
代码如下👇
clear all
lambda = 1:0.0001:1.5;
lambda3 = double(9.896161);
lambda2 = double(0.1162414);
lambda1 = double(0.0684043);
G1 = double(0.6961633);
G2 = double(0.4079426);
G3 = double(0.8974794);
c = 300;
n = sqrt(1+G1.*lambda.^2./(lambda.^2-lambda1^2)+...
G2.*lambda.^2./(lambda.^2-lambda2^2)+G3.*lambda.^2./(lambda.^2-lambda3^2));
n2 = diff(n,2);
lambda1 = linspace(1,1.5,length(n2));
D = (-lambda1./c).*n2;
tau = D.*(lambda1-1.27).*0.0001;
figure;
subplot(3,1,1);
plot(lambda,n,'Color',[0 0 0],'linewidth',3);
xlabel('Wavelength(μm)');
ylabel('n');
subplot(3,1,2);
plot(lambda1,D,'Color',[1 0 0],'linewidth',3);
xlabel('Wavelength(μm)');
ylabel('D');
subplot(3,1,3);
plot(lambda1,tau,'Color',[0 0 1],'linewidth',3);
xlabel('Wavelength(μm)');
ylabel('\Delta \tau');
输出结果:
更喜欢用Mathematica画这种数学公式的图,如果追求美观,导出数据到Origin重新画也可以的,也附上代码吧~👇
\[Lambda]3 = 9.896161;
\[Lambda]2 = 0.1162414;
\[Lambda]1 = 0.0684043;
G1 = 0.6961633;
G2 = 0.4079426;
G3 = 0.8974794;
c = 300;
n = Sqrt[1 + (G1*x^2)/(x^2 - \[Lambda]1^2) + (G2*x^2)/(
x^2 - \[Lambda]2^2) + (G3*x^2)/(x^2 - \[Lambda]3^2)];
n21 = D[n, {x, 2}];
n2 = -x/c*n21;
n3 = n2*(x - 1.27)*0.0001;
f1 = Plot[n, {x, 1, 1.5}];
f2 = Plot[n2, {x, 1, 1.5}];
f3 = Plot[n3, {x, 1, 1.5}];
Show[f1]
Show[f2]
dat1 = Table[{x, n}, {x, 1, 1.5, 0.0001}];
dat2 = Table[{x, n2}, {x, 1, 1.5, 0.0001}];
dat3 = Table[{x, n3}, {x, 1, 1.5, 0.0001}];
Show[f3]
Export["D:\data11.xls", dat1]
Export["D:\data12.xls", dat2]
Export["D:\data13.xls", dat3]
输出结果: