




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一篇緒論§1.1計算物理學概述
一、計算物理學:以計算機技術為手段,運用數學方法,解決復雜物理問題的一門應用學科。說明:1、邊緣學科;是物理、數學、計算機科學相結合的交叉科學;2、物理學的一個分支,與理論物理和實驗物理密切相關。3、對復雜物理規律進行研究的重要手段。合肥工業大學理學院第一篇緒論§1.1計算物理學概述11)實驗數據的處理;2)實時控制;3)自動控制。實驗物理:例如:在核物理和高能物理實驗中,計算機能自動處理數據,并挑選出對研究最有用的一些數據。再如:計算分析宇宙飛船的最優飛行路線等。神洲六。
另外,非線性物理學問題,微觀結構計算……。合肥工業大學理學院1)實驗數據的處理;實驗物理:例如:在核物理和高能物理實驗中2雜志的發展1966年,美國,伯尼、奧爾德等,《計算物理雜志》;1969年,西歐(英),伯基,《計算物理通訊》;1984年,中國,核學會,《計算物理》。1)經過簡化假設,實驗上升到理論模型;2)利用現有數學知識進行分析,遇到計算困難;3)計算機導致了數值分析方法、蒙特卡羅方法、分子動力學方法……;4)量子物理、統計物理、非線性物理……;理論物理合肥工業大學理學院雜志的發展1)經過簡化假設,實驗上升到理論模型;理論物理合肥3二、計算物理學研究方法:
分析物理問題→建立模型→選擇算法→計算機上運算、分析和模擬→結果。1、算法的選擇:當確定了物理問題的模型后,就要選擇算法進行數值或非數值計算求解。它是計算物理的基礎;算法選擇的好壞,直接影響到能否計算出結果、運算精度的高低、計算量的大小等;如果提出新的算法,對算法進行分析。合肥工業大學理學院二、計算物理學研究方法:
分析物理問題→建立模4(1)模型誤差:將實際的物理問題歸結為數學問題時,忽略了某些次要因素,是理想化的“數學模型”,模型本身存在著一定的誤差。(2)觀測誤差:數學模型中含有實驗測量的物理參數,帶有一定的誤差。如:物質密度、比熱等。(3)截斷(方法)誤差:計算機有限次運算,不能獲得精確解而引來的誤差。(4)舍入誤差:計算機有限字長帶來的舍入誤差。2、算法的誤差:所有數值計算方法(逼近)都存在誤差。來源主要有以下四個方面:合肥工業大學理學院(1)模型誤差:將實際的物理問題歸結為數學問題時,忽略了某些53、計算的收斂性和穩定性:(2)穩定性:更關注舍入誤差的問題,這是由于計算機的有限字長帶來的誤差在一定條件下,兩者是關聯的和等價的,兩者的關系表現得很復雜,要弄清所采取的方法是否具有收斂性或穩定性往往非常困難。(1)收斂性:主要是研究算法誤差的變化問題。有時隨著計算的進行,誤差越來越大,達到完全不可靠的程度,這時收斂性就差或稱發散。合肥工業大學理學院3、計算的收斂性和穩定性:(2)穩定性:更關注舍入誤差的問題6§1.2MATLAB語言基礎§1.2.1
MATLAB的窗口環境一、MATLAB語言的顯著特點1、具有強大的矩陣運算能力:MatrixLaboratory(矩陣實驗室),使得矩陣運算非常簡單。2、MATLAB是一種演算式語言基本數據單元的維數和類型不需要特別說明;數學表達式和運算規則與通常的習慣類同;含有豐富的數學函數、數學處理方法和繪圖功能;合肥工業大學理學院§1.2MATLAB語言基礎§1.2.1MATLAB71、啟動MATLAB命令窗口啟動:安裝好MATLAB后,雙擊MATLAB圖標進入命令窗口,在命令窗口中直接輸入命令語句。命令:MATLAB語句格式>>XXXX,如:>>變量=表達式;將表達式的值賦予變量。當鍵入回車鍵時,該語句被執行。語句執行之后,窗口自動顯示出語句執行的結果。如果希望結果不被顯示,則只要在語句之后加上一個分號(;)即可。二、MATLAB命令窗口合肥工業大學理學院1、啟動MATLAB命令窗口二、MATLAB命令窗口合肥工業8(1)編輯修改命令用方向鍵和控制鍵來完成↑:回上一行命令↓:回下一行命令……(2)分頁輸出命令moreoff:不允許分頁moreon:允許分頁“回車鍵”前進一行,“空格鍵”顯示下一頁,“q”結束當前顯示。(3)多行的續行命令(…)如果命令語句太長希望分行輸入,則可用此命令。2、命令行編輯器>>S=1-12+13+4+…9-4-18;例、jswlx_1_4_1.m合肥工業大學理學院(1)編輯修改命令用方向鍵和控制鍵來完成91、變量(1)變量的命名:規則與其它語言類同。三、變量和數值顯示格式(2)一些特殊的標示符(其中有些可以認為是變量或常量)ans:用于結果的缺省變量名i、j:虛數單位realmax:最大正實數2+1023pi:圓周率realmin:最小正實數2-1022eps:運算最小數10-52Inf:無窮大NaN:不定值合肥工業大學理學院1、變量三、變量和數值顯示格式(2)一些特殊的標示符(其中有10變量值的提取:在命令窗口中,變量值可以在任何需要的時候被調用。命令格式如:>>a(3)變量操作2、數值顯示格式語句后不加“;”時,執行結果可以在屏幕上顯示,同時賦值給指定的變量。如果沒有指定變量,則賦值給一個特殊的變量ans。如果結果為整數,則顯示沒有小數;如果結果不是整數,則輸出形式由format命令來控制。合肥工業大學理學院變量值的提?。涸诿畲翱谥?,變量值可以在任何需要的時候被調用111、常用的數學運算符+;—;*;/(右除);\(左除);^(冪)在運算式中,多條命令可以放在一行中,它們之間需要用“;”或“,”隔開。“,”要求顯示結果,而“;”則禁止結果顯示。四、簡單的數學運算例、jswlx_1_4_2.m2、常用數學函數
abs;sin;cos;tan;asin;sqrt;exp;sign;mod(求余);log;imag(復數虛部);real(復數實部);conj(共扼復數)等合肥工業大學理學院1、常用的數學運算符四、簡單的數學運算例、jswlx_1_4121、MATLAB的工作空間常用命令:who:顯示工作空間中所有變量的一個簡單列表whos:列出變量的大小、數據格式等詳細信息clear:清除工作空間中所有的變量clear+變量名:清除指定的變量clc:清屏五、MATLAB的工作空間(workspace)1、help+命令:在命令窗口中顯示某命令幫助信息>>helpgraphics_____通用圖形函數的幫助信息。2、demo:打開示例窗口3、Help菜單六、使用幫助合肥工業大學理學院1、MATLAB的工作空間常用命令:五、MATLAB的工作空13>>y=[2,4,5368]y=245368一、向量與矩陣的創建§1.2.2向量與矩陣運算>>a=1;b=2;c=3;>>x=[5bc;a*ba+cc/b]x=5.0002.0003.0002.0004.0001.5001、在命令窗口中輸入矩陣的元素:純數字(含復數)或變量(表達式)。矩陣的元素放在方括號內,行與行之間用“;”隔開,行內元素用空格或“,”隔開。回車鍵同“;”。一行的矩陣就是向量。大的矩陣可用分行輸入。合肥工業大學理學院>>y=[2,4,5一、向量與矩陣的創建§1.2.214(1)用線性等間距生成向量矩陣[start:step:end]>>a=[1:2:10]a=13579start為起始值,step為步長,end為終止值。當步長為1時可省略step參數;另外step也可以取負數。2、語句生成(2)a=linspace(n1,n2,n)在線性空間上,行矢量的值從n1到n2,數據個數為n,缺省n為100。>>a=linspace(1,10,10)a=12345678910合肥工業大學理學院(1)用線性等間距生成向量矩陣[start:step:end15單位矩陣:eye(m,n);%m行n列對角線為1的矩陣eye(m);%m階單位方陣(3)一些常用的特殊矩陣零矩陣:zeros(m,n);%m行n列全0矩陣zeros(m);%m階全0方陣>>eye(2,3)ans=100
010>>eye(2)ans=1001>>zeros(2,3)ans=000000>>zeros(2)ans=0000合肥工業大學理學院單位矩陣:eye(m,n);%m行n列對角線為1的矩陣(16>>ones(2)ans=1111>>ones(2,3)ans=111111全一矩陣:ones(m,n);ones(m)(0,1)均勻分布隨機矩陣:rand(m,n)產生一個m×n的均勻分布在(0,1)間的隨機矩陣合肥工業大學理學院>>ones(2)>>ones(2,3)全一矩陣:ones(171、轉置:對于實矩陣用(’)符號或(.’)求轉置結果是一樣的;然而對于含復數的矩陣,則(’)將同時對復數進行共軛處理,而(.’)則只是將其排列形式進行轉置。>>a=[123;456]'a=142536>>a=[123;456].'a=142536>>b=[1+2i2-7i]'b=1.0000-2.0000i2.0000+7.0000i>>b=[1+2i2-7i].'b=1.0000+2.0000i2.0000-7.0000i二、矩陣的運算合肥工業大學理學院1、轉置:對于實矩陣用(’)符號或(.’)求轉置結果是一樣的18+;-;*;\和/;^;.*;.\;./;.^如:a=[12;34];b=[35;59]>>c=a+bd=a-b>>c=d=47-2-3813-2-5>>a*b→[1323;2951]>>a/b→[-0.500.50;3.50–1.50]>>a\b→[-1-1;23]>>a^3→[3754;81118]>>a.*b→[310;1536]>>a./b→[0.330.40;0.600.44]>>a.\b→[3.002.50;1.672.25]>>a.^3→[18;2764]2、四則運算與冪運算只有維數相同的矩陣才能進行加減運算。注意矩陣乘運算條件(前列后行相同)。a\b左除運算等效于求a*x=b的解;而右除a/b等效于求b*x=a的解。只有方陣才可以求冪?!?”運算是兩個維數相同矩陣對應元素之間的運算。合肥工業大學理學院+;-;*;\和/;^;.*193、逆矩陣與行列式計算(方陣)求逆:inv(A);求行列式:det(A)>>a=[123;456;235];>>b=inv(a)b=-2.33330.33331.00002.66670.3333-2.0000-0.6667-0.33331.0000>>det(a)ans=-3合肥工業大學理學院3、逆矩陣與行列式計算(方陣)>>a=[123;45201、矩陣下標操作A(m,n):提取第m行,第n列元素A(:,n):提取第n列元素A(m,:):提取第m行元素A(m1:m2,n1:n2):提取第m1行到第m2行和第n1列到第n2列的所有元素(提取子塊)。三、矩陣的操作合肥工業大學理學院1、矩陣下標操作三、矩陣的操作合肥工業大學理學院21[m,n]=size(A,x):返回矩陣的行列數m與n,當x=1,則只返回行數m,當x=2,則只返回列數n。>>a=[123;345];>>[m,n]=size(a)m=2n=32、矩陣的大小>>length(a)ans=3>>max(size(a))ans=3length(A)或max(size(A)):返回行或列數的最大值。>>rank(a)ans=2rank(A):求矩陣的秩合肥工業大學理學院[m,n]=size(A,x):返回矩陣的行列數m與n,當x22§1.4.3MATLAB繪圖簡介MATLAB提供了豐富的繪圖功能helpgraph2d可得到所有畫二維圖形的命令helpgraph3d可得到所有畫三維圖形的命令1、基本的繪圖命令plot(x1,y1,option1,x2,y2,option2,…)x1,y1給出的數據分別為x,y軸坐標值,option1為選項參數,以逐點連折線的方式繪制1個二維圖形;同時類似地繪制第二個二維圖形,...。合肥工業大學理學院§1.4.3MATLAB繪圖簡介MATLAB提供了豐富23例如:plot(x,y);plot(x,y,option)選項參數option定義了圖形曲線的顏色、線型及標示符號,它由一對單引號括起來。例、jswlx_1_4_3.mjswlx_1_4_3_.m2、選擇圖像figure(1);figure(2);…;figure(n)打開不同的圖形窗口,以便繪制不同的圖形。3、gridon:在所畫出的圖形坐標中加入柵格gridoff:除去圖形坐標中的柵格合肥工業大學理學院例如:plot(x,y);plot(x,y,option)244、holdon:把當前圖形保持在屏幕上不變,同時允許在這個坐標內繪制另外一個圖形。holdoff:使新圖覆蓋舊的圖形例、jswlx_1_4_4.mjswlx_1_4_4_.m5、設軸的范圍axis([xminxmaxyminymax])例jswlx_1_4_5.maxis(‘equal’):將x坐標軸和y坐標軸的單位刻度大小調整為一樣。合肥工業大學理學院4、holdon:把當前圖形保持在屏幕上不變,同時5、設軸25title(‘字符串’):在圖形的上端顯示字符串(標題)。xlabel(‘字符串’),ylabel(‘字符串’):設置x,y坐標軸的名稱。text(x,y,’字符串’):在圖的坐標(x,y)處,標示單引號內的字符串。特殊文字要用反斜杠(\)開頭。7、legend(‘字符串1’,‘字符串2’,…,‘字符串n’)在屏幕上開啟一個小視窗,依據繪圖命令的先后,用對應的字符串區分圖形上的線。例、jswlx_1_4_6.m6、文字標示合肥工業大學理學院title(‘字符串’):在圖形的上端顯示字符串(標題)。6268、subplot(mnk):分割圖形顯示窗口m:上下分割個數,n:左右分割個數,k:子圖編號例、jswlx_1_4_7.m9、了解應用型繪圖指令:可用于數值統計分析或離散數據處理
bax(x,y);x、y的高度條形圖hist(x,y);x在y的范圍直方圖 stairs(x,y);臺階圖stem(x,y);火柴桿圖
例、jswlx_1_4_8.m合肥工業大學理學院8、subplot(mnk):分割圖形顯示窗口9、了解應用型27§1.2.4
MATLAB程序設計入門一、MATLBA程序的基本設計原則1、%程序的注釋:使程序更具可讀性。(_1_4_4_.m)2、主程序開頭用clear:消除工作空間中其他變量對程序運行的影響。但注意在子程序中不要用clear。3、參數值集中放在程序的開始部分:便于維護。4、語句行之后輸入“;”:中間結果不顯示。5、程序盡量模塊化:采用主程序調子程序的方法。6、工作路徑:設置好MATLAB的工作路徑。合肥工業大學理學院§1.2.4MATLAB程序設計入門一、MATLBA程28Editor/Debugger窗口:MATLAB的程序編輯器。在編輯器中,文字的不同顏色表明不同的屬性。 綠色:注解;黑色:程序主體;紅色:屬性值的設定;藍色:控制流程。工作路徑的設置:在運行程序之前,必須設置好MATLAB的工作路徑,使得所要運行的程序及運行程序所需要的其他文件處在設置的目錄之下。通過路徑瀏覽器(pathbrowser)就可進行設置二、M文件的編輯合肥工業大學理學院Editor/Debugger窗口:MATLAB的程序編輯器291、程序文件以.m格式進行存取,包含一連串的MATLAB指令。需要在工作空間中創建變量,沒有輸入參數,也不會返回參數。程序運行:用快捷菜單;或在工作空間中鍵入其名稱(注意當前路徑CurrentDirectory)。三、MATLAB的程序類型MATLAB的程序類型主要有兩種:(1)程序文件;(2)函數(function)文件。合肥工業大學理學院1、程序文件三、MATLAB的程序類型MATLAB的程序類30(1)函數定義行(關鍵字function)格式:function[out1,out2,..]=filename(in1,in2,..)放在函數的最開始。輸入和輸出(返回)的參數個數分別由MATLAB的保留變量來定。filename:函數名與文件名同名。2、函數文件函數接受輸入參數,然后執行并輸出結果。函數中語句順序是:合肥工業大學理學院(1)函數定義行(關鍵字function)2、函數文件函數接31(3)函數體語句與命令窗口的語句一樣書寫。(2)函數注釋(或help)行在定義行之后。以(%)開頭和空行結束的連續數個注釋行組成。用help命令可以顯示它的注釋說明。例jswlx_1_4_9.m合肥工業大學理學院(3)函數體語句(2)函數注釋(或help)行合肥工業大學理321、函數程序調用:函數程序與主程序之間的數據是通過參數進行傳遞的。函數程序是采用主程序傳遞來的參數進行計算后,將結果返回主程序的。
例jswlx_1_4_10.m四、函數程序中的變量2、局部變量、全局變量:如果函數內的變量沒有特別聲明,那么這個變量只在函數內部使用,即為局部變量。如果多個函數共用一個變量,那么可以用global來將它聲明為全局變量。
例jswlx_1_4_11.m合肥工業大學理學院1、函數程序調用:函數程序與主程序之間的數據是通過參數進行傳33五、常用的編程命令pause:停止m文件的執行直至有鍵按下。pause(n)將使程序暫停n秒。echoon/off:控制是否在屏幕上顯示程序內容。x=input(‘prompt’):把輸入的字符串作為提示符,等待使用者輸入一個響應,然后把它賦值到x。合肥工業大學理學院五、常用的編程命令pause:停止m文件的執行直至有鍵按下。34MATLAB的運算符有三種類型:算術運算符、關系運算符、邏輯運算符。計算優先順序依次為算術運算符、關系運算符、邏輯運算符。六、關系與邏輯運算符1、關系運算符假設有:A=[12-1-5]B=[0231]<小于A<Bans=[0011];A<1ans=[0011]>大于A>Bans=[1000];A>1ans=[0100]<=小于等于A<=Bans=[0111]>=大于等于A>=Bans=[1100]==等于A==Bans=[0100];A==1ans=[1000]~=不等于A~=Bans=[1011];A~=1ans=[0111]合肥工業大學理學院MATLAB的運算符有三種類型:算術運算符、關系運算符、邏輯35~非
~A→[0010]~1→02、邏輯運算符注意:在處理邏輯運算時,運算元只有兩個值即0和1(非0)。如果指定的數為0,則MATLAB認為其為0;若數不為0,則認為是1。設有:A=[5-40-0.5]B=[0109]&與(串聯)A&B→[0101]A&1→[1101]|或(并聯)A|B→[1101]A|1→[1111]合肥工業大學理學院~非2、邏輯運算符注意:在處理邏輯運算時,運算36步長缺省值為1,可以在正實數或負實數范圍內任意指定。對于正數,循環變量的值大于終止值時,循環結束;對于負數,循環變量的值小于終止值時,循環結束。循環結構可以嵌套使用。例jswlx_1_4_12.m七、程序流程控制1、for循環語句for循環變量=起始值:步長:終止值循環體end合肥工業大學理學院步長缺省值為1,可以在正實數或負實數范圍內任意指定。對于正數372、while循環語句while表達式循環體end若表達式為真,則執行循環體的內容,執行后再判斷表達式是否為真,若不為真,則跳出循環體,向下繼續執行。
例jswlx_1_4_13.mWhile循環和for循環的區別在于,while循環結構的循環體被執行的次數不是確定的,而for結構中循環體的執行次數是確定的。合肥工業大學理學院2、while循環語句若表達式為真,則執行循環體的內容,執行383、if,else語句(1)if邏輯表達式執行語句end當邏輯表達式的值為真時,執行該結構中的執行語句,執行完之后繼續向下進行;若為假,則跳過結構中的內容,向下執行。(2)if邏輯表達式(3)if邏輯表達式1執行語句1執行語句1elseelseif邏輯表達式2執行語句2執行語句2…endendif-else的執行方式為:如果邏輯表達式的值為真,則執行語句1,然后跳過語句2,向下執行;如果為假,則執行語句2,然后向下執行。例jswlx_1_4_14.m
合肥工業大學理學院3、if,else語句當邏輯表達式的值為真時,執行該結構中的39格式:switch表達式(%可以是標量或字符串)case值1語句1case值2語句2….otherwise語句3end
例jswlx_1_4_15.m執行方式:表達式的值和哪種情況(case)的值相同,就執行哪種情況中的語句,如果不同,則執行otherwise中的語句。格式中也可以不包括otherwise,這時如果表達式的值與列出的各種情況都不相同,則繼續向下執行。4、switch語句合肥工業大學理學院格式:switch表達式(%可以是標量或字符串)執行方40§1.2.5幾個簡單的模擬實例實例一、振動合成和拍頻模擬(例jswlx_1_5_1.m)t=0:0.001:10;a1=5;w1=300;v1=3;a2=10;w2=310;v2=4;%振幅;角頻率;初位相y1=a1*sin(w1*t+v1);%振動一y2=a2*sin(w2*t+v2);%振動二y=y1+y2;%振動合成subplot(3,1,1),plot(t,y1),ylabel('y1');subplot(3,1,2),plot(t,y2),ylabel('y2');subplot(3,1,3),plot(t,y),ylabel('y'),xlabel('t');pause,sound(y1);%pause:等待用戶按鍵再執行;sound(x):x聲音pause(2),sound(y2);%pause(n):等待n秒后繼續執行pause(2),sound(y);pause;合肥工業大學理學院§1.2.5幾個簡單的模擬實例實例一、振動合成和拍頻模擬41實例二、阻尼振動模擬(例jswlx_1_5_2.m)單自由度阻尼系統振動方程:mx’’+cx’+kx=0解得:x(t)=Aexp(-ξωnt)sin(ωdt+φ)其中x0和v0分別為初位置和初速度。程序中取ωn=10,x0=2,v0=1,計算終點時間tf=3,ξ從0.1到0.9。合肥工業大學理學院實例二、阻尼振動模擬(例jswlx_1_5_2.m)單自由度42實例三、赫姆霍茲線圈磁場分布模擬(例jswlx_1_5_3.m)赫姆霍茲線圈就是間距正好等于線圈半徑的一對相同的共軸載流圓線圈。軸線附近的磁場的大小十分均勻,而且都是沿x方向。程序模擬結果是其中一個線圈在軸線x=[-R,R]內的磁場分布。y是R方向。實例四、邁克爾遜干涉現象模擬(例jswlx_1_5_4.m)實例五、楊氏雙縫干涉現象模擬(例jswlx_1_5_5.m)實例六、夫朗和費孔衍射現象模擬(例jswlx_1_5_6.m)合肥工業大學理學院實例三、赫姆霍茲線圈磁場分布模擬(例jswlx_1_5_3.43作業及上機內容1、簡述計算物理學概念及研究內容。2、簡述計算物理學中算法的主要誤差來源。3、熟悉MATLAB命令窗口及部分命令。主要有:行編輯命令↑、↓;分頁輸出moreon/off;續行…4、變量定義、數值顯示、特殊標示符識別,主要有ans、i、j、pi、eps、inf、NaN等。5、熟悉常用數學運算符+、-、*、/、\、^、.;熟悉常用數學函數abs、sin、cos、sqrt、exp、mod、log、imag、real、conj等。合肥工業大學理學院作業及上機內容1、簡述計算物理學概念及研究內容。合肥工業大學446、熟悉工作空間命令who、whos、clear、clc、help、demo等。7、熟悉矩陣(向量)的創建:直接生成[,;];語句生成[xmin:n:xmax],linspace(xmin,xmax,m);特殊矩陣生成eye()、zeros()、ones()、rand()。8、熟悉矩陣的運算,主要有:四則與冪+、-、*、/、\、^、.*、./、.\、.^;轉置’、.’;逆inv()、行列式det();求秩rank()等。9、熟悉矩陣的操作,提取矩陣元素或子塊A(m,n)、A(:,n)、A(m,:)、A(m1:m2,n1:n2)合肥工業大學理學院6、熟悉工作空間命令who、whos、clear、clc、h4510、熟悉繪圖命令,主要有plot()、figure()、gridon/off、holdon/off、axis()、text()、title()、x/ylabel()、subplot()等。11、熟悉程序文件和函數文件的編寫,主要有函數文件編寫基本原則;變量運用;數學、關系、邏輯運算符運用;條件語句和循環語句運用。合肥工業大學理學院10、熟悉繪圖命令,主要有plot()、figure()、g46ENDEND47《計算物理(研究生用)》[第1篇]課件48第一篇緒論§1.1計算物理學概述
一、計算物理學:以計算機技術為手段,運用數學方法,解決復雜物理問題的一門應用學科。說明:1、邊緣學科;是物理、數學、計算機科學相結合的交叉科學;2、物理學的一個分支,與理論物理和實驗物理密切相關。3、對復雜物理規律進行研究的重要手段。合肥工業大學理學院第一篇緒論§1.1計算物理學概述491)實驗數據的處理;2)實時控制;3)自動控制。實驗物理:例如:在核物理和高能物理實驗中,計算機能自動處理數據,并挑選出對研究最有用的一些數據。再如:計算分析宇宙飛船的最優飛行路線等。神洲六。
另外,非線性物理學問題,微觀結構計算……。合肥工業大學理學院1)實驗數據的處理;實驗物理:例如:在核物理和高能物理實驗中50雜志的發展1966年,美國,伯尼、奧爾德等,《計算物理雜志》;1969年,西歐(英),伯基,《計算物理通訊》;1984年,中國,核學會,《計算物理》。1)經過簡化假設,實驗上升到理論模型;2)利用現有數學知識進行分析,遇到計算困難;3)計算機導致了數值分析方法、蒙特卡羅方法、分子動力學方法……;4)量子物理、統計物理、非線性物理……;理論物理合肥工業大學理學院雜志的發展1)經過簡化假設,實驗上升到理論模型;理論物理合肥51二、計算物理學研究方法:
分析物理問題→建立模型→選擇算法→計算機上運算、分析和模擬→結果。1、算法的選擇:當確定了物理問題的模型后,就要選擇算法進行數值或非數值計算求解。它是計算物理的基礎;算法選擇的好壞,直接影響到能否計算出結果、運算精度的高低、計算量的大小等;如果提出新的算法,對算法進行分析。合肥工業大學理學院二、計算物理學研究方法:
分析物理問題→建立模52(1)模型誤差:將實際的物理問題歸結為數學問題時,忽略了某些次要因素,是理想化的“數學模型”,模型本身存在著一定的誤差。(2)觀測誤差:數學模型中含有實驗測量的物理參數,帶有一定的誤差。如:物質密度、比熱等。(3)截斷(方法)誤差:計算機有限次運算,不能獲得精確解而引來的誤差。(4)舍入誤差:計算機有限字長帶來的舍入誤差。2、算法的誤差:所有數值計算方法(逼近)都存在誤差。來源主要有以下四個方面:合肥工業大學理學院(1)模型誤差:將實際的物理問題歸結為數學問題時,忽略了某些533、計算的收斂性和穩定性:(2)穩定性:更關注舍入誤差的問題,這是由于計算機的有限字長帶來的誤差在一定條件下,兩者是關聯的和等價的,兩者的關系表現得很復雜,要弄清所采取的方法是否具有收斂性或穩定性往往非常困難。(1)收斂性:主要是研究算法誤差的變化問題。有時隨著計算的進行,誤差越來越大,達到完全不可靠的程度,這時收斂性就差或稱發散。合肥工業大學理學院3、計算的收斂性和穩定性:(2)穩定性:更關注舍入誤差的問題54§1.2MATLAB語言基礎§1.2.1
MATLAB的窗口環境一、MATLAB語言的顯著特點1、具有強大的矩陣運算能力:MatrixLaboratory(矩陣實驗室),使得矩陣運算非常簡單。2、MATLAB是一種演算式語言基本數據單元的維數和類型不需要特別說明;數學表達式和運算規則與通常的習慣類同;含有豐富的數學函數、數學處理方法和繪圖功能;合肥工業大學理學院§1.2MATLAB語言基礎§1.2.1MATLAB551、啟動MATLAB命令窗口啟動:安裝好MATLAB后,雙擊MATLAB圖標進入命令窗口,在命令窗口中直接輸入命令語句。命令:MATLAB語句格式>>XXXX,如:>>變量=表達式;將表達式的值賦予變量。當鍵入回車鍵時,該語句被執行。語句執行之后,窗口自動顯示出語句執行的結果。如果希望結果不被顯示,則只要在語句之后加上一個分號(;)即可。二、MATLAB命令窗口合肥工業大學理學院1、啟動MATLAB命令窗口二、MATLAB命令窗口合肥工業56(1)編輯修改命令用方向鍵和控制鍵來完成↑:回上一行命令↓:回下一行命令……(2)分頁輸出命令moreoff:不允許分頁moreon:允許分頁“回車鍵”前進一行,“空格鍵”顯示下一頁,“q”結束當前顯示。(3)多行的續行命令(…)如果命令語句太長希望分行輸入,則可用此命令。2、命令行編輯器>>S=1-12+13+4+…9-4-18;例、jswlx_1_4_1.m合肥工業大學理學院(1)編輯修改命令用方向鍵和控制鍵來完成571、變量(1)變量的命名:規則與其它語言類同。三、變量和數值顯示格式(2)一些特殊的標示符(其中有些可以認為是變量或常量)ans:用于結果的缺省變量名i、j:虛數單位realmax:最大正實數2+1023pi:圓周率realmin:最小正實數2-1022eps:運算最小數10-52Inf:無窮大NaN:不定值合肥工業大學理學院1、變量三、變量和數值顯示格式(2)一些特殊的標示符(其中有58變量值的提?。涸诿畲翱谥校兞恐悼梢栽谌魏涡枰臅r候被調用。命令格式如:>>a(3)變量操作2、數值顯示格式語句后不加“;”時,執行結果可以在屏幕上顯示,同時賦值給指定的變量。如果沒有指定變量,則賦值給一個特殊的變量ans。如果結果為整數,則顯示沒有小數;如果結果不是整數,則輸出形式由format命令來控制。合肥工業大學理學院變量值的提?。涸诿畲翱谥?,變量值可以在任何需要的時候被調用591、常用的數學運算符+;—;*;/(右除);\(左除);^(冪)在運算式中,多條命令可以放在一行中,它們之間需要用“;”或“,”隔開?!埃币箫@示結果,而“;”則禁止結果顯示。四、簡單的數學運算例、jswlx_1_4_2.m2、常用數學函數
abs;sin;cos;tan;asin;sqrt;exp;sign;mod(求余);log;imag(復數虛部);real(復數實部);conj(共扼復數)等合肥工業大學理學院1、常用的數學運算符四、簡單的數學運算例、jswlx_1_4601、MATLAB的工作空間常用命令:who:顯示工作空間中所有變量的一個簡單列表whos:列出變量的大小、數據格式等詳細信息clear:清除工作空間中所有的變量clear+變量名:清除指定的變量clc:清屏五、MATLAB的工作空間(workspace)1、help+命令:在命令窗口中顯示某命令幫助信息>>helpgraphics_____通用圖形函數的幫助信息。2、demo:打開示例窗口3、Help菜單六、使用幫助合肥工業大學理學院1、MATLAB的工作空間常用命令:五、MATLAB的工作空61>>y=[2,4,5368]y=245368一、向量與矩陣的創建§1.2.2向量與矩陣運算>>a=1;b=2;c=3;>>x=[5bc;a*ba+cc/b]x=5.0002.0003.0002.0004.0001.5001、在命令窗口中輸入矩陣的元素:純數字(含復數)或變量(表達式)。矩陣的元素放在方括號內,行與行之間用“;”隔開,行內元素用空格或“,”隔開?;剀囨I同“;”。一行的矩陣就是向量。大的矩陣可用分行輸入。合肥工業大學理學院>>y=[2,4,5一、向量與矩陣的創建§1.2.262(1)用線性等間距生成向量矩陣[start:step:end]>>a=[1:2:10]a=13579start為起始值,step為步長,end為終止值。當步長為1時可省略step參數;另外step也可以取負數。2、語句生成(2)a=linspace(n1,n2,n)在線性空間上,行矢量的值從n1到n2,數據個數為n,缺省n為100。>>a=linspace(1,10,10)a=12345678910合肥工業大學理學院(1)用線性等間距生成向量矩陣[start:step:end63單位矩陣:eye(m,n);%m行n列對角線為1的矩陣eye(m);%m階單位方陣(3)一些常用的特殊矩陣零矩陣:zeros(m,n);%m行n列全0矩陣zeros(m);%m階全0方陣>>eye(2,3)ans=100
010>>eye(2)ans=1001>>zeros(2,3)ans=000000>>zeros(2)ans=0000合肥工業大學理學院單位矩陣:eye(m,n);%m行n列對角線為1的矩陣(64>>ones(2)ans=1111>>ones(2,3)ans=111111全一矩陣:ones(m,n);ones(m)(0,1)均勻分布隨機矩陣:rand(m,n)產生一個m×n的均勻分布在(0,1)間的隨機矩陣合肥工業大學理學院>>ones(2)>>ones(2,3)全一矩陣:ones(651、轉置:對于實矩陣用(’)符號或(.’)求轉置結果是一樣的;然而對于含復數的矩陣,則(’)將同時對復數進行共軛處理,而(.’)則只是將其排列形式進行轉置。>>a=[123;456]'a=142536>>a=[123;456].'a=142536>>b=[1+2i2-7i]'b=1.0000-2.0000i2.0000+7.0000i>>b=[1+2i2-7i].'b=1.0000+2.0000i2.0000-7.0000i二、矩陣的運算合肥工業大學理學院1、轉置:對于實矩陣用(’)符號或(.’)求轉置結果是一樣的66+;-;*;\和/;^;.*;.\;./;.^如:a=[12;34];b=[35;59]>>c=a+bd=a-b>>c=d=47-2-3813-2-5>>a*b→[1323;2951]>>a/b→[-0.500.50;3.50–1.50]>>a\b→[-1-1;23]>>a^3→[3754;81118]>>a.*b→[310;1536]>>a./b→[0.330.40;0.600.44]>>a.\b→[3.002.50;1.672.25]>>a.^3→[18;2764]2、四則運算與冪運算只有維數相同的矩陣才能進行加減運算。注意矩陣乘運算條件(前列后行相同)。a\b左除運算等效于求a*x=b的解;而右除a/b等效于求b*x=a的解。只有方陣才可以求冪。“.”運算是兩個維數相同矩陣對應元素之間的運算。合肥工業大學理學院+;-;*;\和/;^;.*673、逆矩陣與行列式計算(方陣)求逆:inv(A);求行列式:det(A)>>a=[123;456;235];>>b=inv(a)b=-2.33330.33331.00002.66670.3333-2.0000-0.6667-0.33331.0000>>det(a)ans=-3合肥工業大學理學院3、逆矩陣與行列式計算(方陣)>>a=[123;45681、矩陣下標操作A(m,n):提取第m行,第n列元素A(:,n):提取第n列元素A(m,:):提取第m行元素A(m1:m2,n1:n2):提取第m1行到第m2行和第n1列到第n2列的所有元素(提取子塊)。三、矩陣的操作合肥工業大學理學院1、矩陣下標操作三、矩陣的操作合肥工業大學理學院69[m,n]=size(A,x):返回矩陣的行列數m與n,當x=1,則只返回行數m,當x=2,則只返回列數n。>>a=[123;345];>>[m,n]=size(a)m=2n=32、矩陣的大小>>length(a)ans=3>>max(size(a))ans=3length(A)或max(size(A)):返回行或列數的最大值。>>rank(a)ans=2rank(A):求矩陣的秩合肥工業大學理學院[m,n]=size(A,x):返回矩陣的行列數m與n,當x70§1.4.3MATLAB繪圖簡介MATLAB提供了豐富的繪圖功能helpgraph2d可得到所有畫二維圖形的命令helpgraph3d可得到所有畫三維圖形的命令1、基本的繪圖命令plot(x1,y1,option1,x2,y2,option2,…)x1,y1給出的數據分別為x,y軸坐標值,option1為選項參數,以逐點連折線的方式繪制1個二維圖形;同時類似地繪制第二個二維圖形,...。合肥工業大學理學院§1.4.3MATLAB繪圖簡介MATLAB提供了豐富71例如:plot(x,y);plot(x,y,option)選項參數option定義了圖形曲線的顏色、線型及標示符號,它由一對單引號括起來。例、jswlx_1_4_3.mjswlx_1_4_3_.m2、選擇圖像figure(1);figure(2);…;figure(n)打開不同的圖形窗口,以便繪制不同的圖形。3、gridon:在所畫出的圖形坐標中加入柵格gridoff:除去圖形坐標中的柵格合肥工業大學理學院例如:plot(x,y);plot(x,y,option)724、holdon:把當前圖形保持在屏幕上不變,同時允許在這個坐標內繪制另外一個圖形。holdoff:使新圖覆蓋舊的圖形例、jswlx_1_4_4.mjswlx_1_4_4_.m5、設軸的范圍axis([xminxmaxyminymax])例jswlx_1_4_5.maxis(‘equal’):將x坐標軸和y坐標軸的單位刻度大小調整為一樣。合肥工業大學理學院4、holdon:把當前圖形保持在屏幕上不變,同時5、設軸73title(‘字符串’):在圖形的上端顯示字符串(標題)。xlabel(‘字符串’),ylabel(‘字符串’):設置x,y坐標軸的名稱。text(x,y,’字符串’):在圖的坐標(x,y)處,標示單引號內的字符串。特殊文字要用反斜杠(\)開頭。7、legend(‘字符串1’,‘字符串2’,…,‘字符串n’)在屏幕上開啟一個小視窗,依據繪圖命令的先后,用對應的字符串區分圖形上的線。例、jswlx_1_4_6.m6、文字標示合肥工業大學理學院title(‘字符串’):在圖形的上端顯示字符串(標題)。6748、subplot(mnk):分割圖形顯示窗口m:上下分割個數,n:左右分割個數,k:子圖編號例、jswlx_1_4_7.m9、了解應用型繪圖指令:可用于數值統計分析或離散數據處理
bax(x,y);x、y的高度條形圖hist(x,y);x在y的范圍直方圖 stairs(x,y);臺階圖stem(x,y);火柴桿圖
例、jswlx_1_4_8.m合肥工業大學理學院8、subplot(mnk):分割圖形顯示窗口9、了解應用型75§1.2.4
MATLAB程序設計入門一、MATLBA程序的基本設計原則1、%程序的注釋:使程序更具可讀性。(_1_4_4_.m)2、主程序開頭用clear:消除工作空間中其他變量對程序運行的影響。但注意在子程序中不要用clear。3、參數值集中放在程序的開始部分:便于維護。4、語句行之后輸入“;”:中間結果不顯示。5、程序盡量模塊化:采用主程序調子程序的方法。6、工作路徑:設置好MATLAB的工作路徑。合肥工業大學理學院§1.2.4MATLAB程序設計入門一、MATLBA程76Editor/Debugger窗口:MATLAB的程序編輯器。在編輯器中,文字的不同顏色表明不同的屬性。 綠色:注解;黑色:程序主體;紅色:屬性值的設定;藍色:控制流程。工作路徑的設置:在運行程序之前,必須設置好MATLAB的工作路徑,使得所要運行的程序及運行程序所需要的其他文件處在設置的目錄之下。通過路徑瀏覽器(pathbrowser)就可進行設置二、M文件的編輯合肥工業大學理學院Editor/Debugger窗口:MATLAB的程序編輯器771、程序文件以.m格式進行存取,包含一連串的MATLAB指令。需要在工作空間中創建變量,沒有輸入參數,也不會返回參數。程序運行:用快捷菜單;或在工作空間中鍵入其名稱(注意當前路徑CurrentDirectory)。三、MATLAB的程序類型MATLAB的程序類型主要有兩種:(1)程序文件;(2)函數(function)文件。合肥工業大學理學院1、程序文件三、MATLAB的程序類型MATLAB的程序類78(1)函數定義行(關鍵字function)格式:function[out1,out2,..]=filename(in1,in2,..)放在函數的最開始。輸入和輸出(返回)的參數個數分別由MATLAB的保留變量來定。filename:函數名與文件名同名。2、函數文件函數接受輸入參數,然后執行并輸出結果。函數中語句順序是:合肥工業大學理學院(1)函數定義行(關鍵字function)2、函數文件函數接79(3)函數體語句與命令窗口的語句一樣書寫。(2)函數注釋(或help)行在定義行之后。以(%)開頭和空行結束的連續數個注釋行組成。用help命令可以顯示它的注釋說明。例jswlx_1_4_9.m合肥工業大學理學院(3)函數體語句(2)函數注釋(或help)行合肥工業大學理801、函數程序調用:函數程序與主程序之間的數據是通過參數進行傳遞的。函數程序是采用主程序傳遞來的參數進行計算后,將結果返回主程序的。
例jswlx_1_4_10.m四、函數程序中的變量2、局部變量、全局變量:如果函數內的變量沒有特別聲明,那么這個變量只在函數內部使用,即為局部變量。如果多個函數共用一個變量,那么可以用global來將它聲明為全局變量。
例jswlx_1_4_11.m合肥工業大學理學院1、函數程序調用:函數程序與主程序之間的數據是通過參數進行傳81五、常用的編程命令pause:停止m文件的執行直至有鍵按下。pause(n)將使程序暫停n秒。echoon/off:控制是否在屏幕上顯示程序內容。x=input(‘prompt’):把輸入的字符串作為提示符,等待使用者輸入一個響應,然后把它賦值到x。合肥工業大學理學院五、常用的編程命令pause:停止m文件的執行直至有鍵按下。82MATLAB的運算符有三種類型:算術運算符、關系運算符、邏輯運算符。計算優先順序依次為算術運算符、關系運算符、邏輯運算符。六、關系與邏輯運算符1、關系運算符假設有:A=[12-1-5]B=[0231]<小于A<Bans=[0011];A<1ans=[0011]>大于A>Bans=[1000];A>1ans=[0100]<=小于等于A<=Bans=[0111]>=大于等于A>=Bans=[1100]==等于A==Bans=[0100];A==1ans=[1000]~=不等于A~=Bans=[1011];A~=1ans=[0111]合肥工業大學理學院MATLAB的運算符有三種類型:算術運算符、關系運算符、邏輯83~非
~A→[0010]~1→02、邏輯運算符注意:在處理邏輯運算時,運算元只有兩個值即0和1(非0)。如果指定的數為0,則MATLAB認為其為0;若數不為0,則認為是1。設有:A=[5-40-0.5]B=[0109]&與(串聯)A&B→[0101]A&1→[1101]|或(并聯)A|B→[1101]A|1→[1111]合肥工業大學理學院~非2、邏輯運算符注意:在處理邏輯運算時,運算84步長缺省值為1,可以在正實數或負實數范圍內任意指定。對于正數,循環變量的值大于終止值時,循環結束;對于負數,循環變量的值小于終止值時,循環結束。循環結構可以嵌套使用。例jswlx_1_4_12.m七、程序流程控制1、for循環語句for循環變量=起始值:步長:終止值循環體end合肥工業大學理學院步長缺省值為1,可以在正實數或負實數范圍內任意指定。對于正數852、while循環語句while表達式循環體end若表達式為真,則執行循環體的內容,執行后再判斷表達式是否為真,若不為真,則跳出循環體,向下繼續執行。
例jswlx_1_4_13.mWhile循環和for循環的區別在于,while循環結構的循環體被執行的次數不是確定的,而for結構中循環體的執行次數是確定的。合肥工業大學理學院2、while循環語句若表達式為真,則執行循環體的內容,執行863、if,else語句(1)if邏輯表達式執行語句end當邏輯表達式的值為真時,執行該結構中的執行語句,執行完之后繼續向下進行;若為假,則跳過結構中的內容,向下執行。(2)if邏輯表達式(3)if邏輯表達式1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CCSAS 023-2022危險化學品企業緊急切斷閥設置和使用規范
- T/CCMA 0078-2019土方機械排氣煙度液壓挖掘機測量方法
- T/CBMCA 031-2022負離子功能建筑材料現場檢測方法
- T/CAS 605-2022直埋式天然氣調壓工程技術規程
- T/CAPEC 2-2018燃氣輪機制造監理技術要求
- 法考試題試題及答案
- 工廠單位考試題及答案
- 高中新課標考試題及答案
- 調研軟件面試題及答案
- 試用期個人工作總結及計劃總結
- DB11∕T 1191.2-2018 實驗室危險化學品安全管理規范 第2部分:普通高等學校
- 浙江省中小學心理健康教育課程標準
- 2023-2024學年四川省南充市嘉陵區五年級數學第二學期期末統考模擬試題含解析
- 大眾汽車整車開發標準流程
- 教科版五年級下冊科學期末測試卷含答案
- DL-T5169-2013水工混凝土鋼筋施工規范
- 水暖、電氣施工方案
- 單元三 防火防爆技術 項目三 點火源控制 一、化學點火源
- 原神游戲介紹PPT
- JTT663-2006 公路橋梁板式橡膠支座規格系列
- 學生退學家長委托書
評論
0/150
提交評論