欒國杰
摘要: 本文對光的雙縫干涉進行了分析,利用MATLAB與C#混合編程,實現(xiàn)了光的干涉仿真。
關鍵詞: MATLABC#混合編程光學規(guī)律干涉仿真
1.開發(fā)背景
光學是物理學教學和實驗的重要組成部分。而光學實驗需要用到復雜貴重的實驗儀器,一般的中學不具備這樣的實驗條件,另外教師上課時做演示實驗也不太方便,而利用計算機進行仿真,就可以解決以上問題,使得一些抽象的概念形象化,更易于學生接受,具有很好的教學效果。
MATLAB是由MathWorks公司開發(fā)的一種主要用于數(shù)值計算及可視化圖形處理的工程語言,是當今最優(yōu)秀的科技應用軟件之一。它將數(shù)值分析、矩陣運算、圖形圖像處理、信號處理和仿真等諸多強大的功能集成在較易使用的交互式計算機環(huán)境中,為科學研究、工程應用提供了一種功能強、效率高的編程工具,但是MATLAB有界面開發(fā)能力較差、執(zhí)行速度不高、局限于MATLAB運行環(huán)境等缺點。
C#是針對.NET平臺而設計的,是微軟.NET計劃中的主要開發(fā)語言。利用C#開發(fā)的系統(tǒng)具有界面友好、執(zhí)行速度快、易維護和升級等優(yōu)點,能夠生成可執(zhí)行文件,有效地保護算法和數(shù)據(jù),并可脫離編程環(huán)境運行。但是在工程計算方面和MATLAB相比編程顯得復雜。
2.數(shù)學模型
兩束頻率相同的單色光在空間某點相遇時,討論光強和干涉條紋的分布規(guī)律。根據(jù)波的疊加理論,兩束同頻率單色光在空間某一點光矢量的大小為
E=Ecos(ωt+Φ),E=Ecos(ωt+Φ),(1)
其中,E和E分別是兩個光矢量的振幅,Φ和Φ分別是初相。如果兩個光矢量的方向相同,合成的光矢量為
E=Ecos(ωt+Φ),(2)
其中,振幅和初相分別為
E=,(3a)
Φ=arctan。(3b)
在一定時間內(nèi)觀察到的平均光強I與光矢量的平方的平均值成正比
I=a=a[++2EE],(4)
其中a是比例系數(shù)。對于普通光源,兩光波之間的相位差Φ-Φ是隨機變化的,平均值為零,因此
I=a+a=I+I。(5)
這就是光的非相干疊加,總光強等于兩束光各自照射時的光強之和。
如果兩束光的相位差恒定,則合成光強為
I=I+I+2cos△Φ,(6a)
其中ΔΦ=Φ-Φ,第三項是干涉項。這就是光的相干疊加。如果I=I,則合成光強為
I=2I(1+cos△Φ)=4Icos。(6b)
當兩個光源的強度相等時,相對光強為
I==2+2cos△Φ=4cos。(7)
3.仿真實現(xiàn)
(1)首先在MATLAB中寫下Interference.m程序,實現(xiàn)繪圖。
functionInterference(n,dphi)
%n條紋的最高階數(shù)dphi相差的增量
%兩束相干光的干涉強度和干涉條紋
(2)使用MATLAB的deploytool工具,將m文件編譯成Matlab_Optical.dll文件。
(3)創(chuàng)建C#項目,添加引用MWArray.dll和Matlab_Optical.dll文件。
using Math Works.MATLAB.NET.Utility;
using Math Works.MATLAB.NET.Arrays;
using Matlab_Optical;
仿真代碼:
Optical dr=newOptical();
MWArray n=(MWArray)Convert.ToDouble(textBox1.Text);
MWArray dphi=(MWArray)Convert.ToDouble(textBox2.Text);
dr.Interference(n,dphi);
Bitmap bp=newBitmap("interference.jpg");
this.pictureBox1.Image=bp;
(4)仿真結(jié)果。
4.結(jié)論
本文對光的雙縫干涉進行了分析,應用C#與MATLAB混合編程,畫出光強的曲線和干涉圖樣,掌握了光的干涉的規(guī)律,計算機模擬不但能夠再現(xiàn)實驗過程和結(jié)果,而且有利于理解和掌握光學規(guī)律。
參考文獻:
[1]莊建.基于Matlab的光學實驗仿真平臺.成都大學學報,2006,25(3).
[2]王娟.C#.net與Matlab混合編程的快速實現(xiàn).科技資訊,2006,33.