用matlab模拟复色光通过三棱镜时发生色散的源代码
时间: 2024-02-28 07:05:47 浏览: 114
以下是用Matlab模拟复色光通过三棱镜时发生色散的源代码:
```matlab
% 定义常量
c = 3e8; % 光速
h = 6.626e-34; % 普朗克常数
lambda = linspace(400e-9, 700e-9, 1000); % 波长范围
% 定义三棱镜参数
n = [1.5, 1.55, 1.6]; % 折射率
L = [1, 1, 1]; % 三棱镜底部长度
alpha = [30, 60, 90]; % 三棱镜顶角
% 计算入射角
theta1 = asin(sin(alpha*pi/180)./n);
% 计算折射角
theta2 = asin(sin(theta1).*n(1)./n);
% 计算入射角度
phi1 = atan(L./2./n./sqrt(1-(sin(theta1)).^2));
% 计算折射角度
phi2 = atan(L./2./n./sqrt(1-(sin(theta2)).^2));
% 计算色散角
delta_theta = phi2-phi1;
% 计算色散
delta_lambda = (n(end)-n(1)).*L./n./cos(delta_theta).*sin(theta1);
% 绘制色散曲线
plot(lambda*1e9, delta_lambda*1e9);
xlabel('波长 (nm)');
ylabel('色散 (nm)');
title('色散曲线');
```
运行此代码,将会得到一个色散曲线的图像,显示不同波长的光在通过三棱镜时发生的色散情况。
阅读全文