版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、電磁場實驗仿真指導(dǎo)書1、Matlab 基礎(chǔ)2、實驗內(nèi)容 2.1 預(yù)習(xí) 點電荷電場分布 2.2 實驗一 電偶極子電場分布仿真 2.3 實驗二 特殊邊界條件的電場分布 2.4 實驗三 直導(dǎo)線的磁場分布 2.5 實驗四 磁偶極子的磁場分布1 MATLAB 基礎(chǔ)1.1 簡介MATLAB是一門計算機程序語言,取名源于Matrix Laboratory,意在以矩陣方式處理數(shù)據(jù)。一般認為MATLAB的典型應(yīng)用包括:數(shù)值計算與分析、符號運算、建模與仿真、數(shù)據(jù)可視化、圖形處理及可視化、基于圖形用戶界面的應(yīng)用程序開發(fā)。MATLAB7.3.0啟動后界面如圖1所示。圖1 MATLAB7.3.0啟動后界面命令窗口(Co
2、mmand Window):(1) 用于執(zhí)行MATLAB命令,正常情況下提示符為“>>”,表示MATLAB進入工作狀態(tài)。(2) 在提示符后輸入運算指令和函數(shù)調(diào)用等命令(不帶“;”),MATLAB將迅速顯示出結(jié)果并再次進入準備工作狀態(tài)。(3) 若命令后帶有“;”,MATLAB執(zhí)行命令后不顯示結(jié)果。(4) 在準備工作狀態(tài)下,如果按上下鍵,MATLAB會按順序依次顯示以前輸入的命令,若要執(zhí)行它,則直接回車即可。工作空間(Workspace):(1) 顯示計算機內(nèi)存中現(xiàn)有變量的名稱、類型、結(jié)構(gòu)及其占用子節(jié)數(shù)等。(2) 如果直接雙擊某變量,則彈出Array Editor窗口供用戶查看及修改變
3、量內(nèi)容。(3) 該窗口上有工具條支持用戶將某變量存儲到文件中或者從文件中載入某變量。命令歷史記錄(Command History):(1) 保存并顯示用戶在命令窗口中輸入過的命令,以及每次啟動MATLAB的時間等信息。(2) 若雙擊某條命令記錄,則MATLAB會再次執(zhí)行該命令。當(dāng)前路徑窗口(Current Directory):(1) 先是當(dāng)前路徑內(nèi)的所有文件。(2) 用戶可以在這里新建或刪除一個文件,也可以雙擊一個文件,在編輯/調(diào)試窗口中打開。設(shè)置當(dāng)前路徑(Current Directory):(1) 用于選擇當(dāng)前工作路徑。(2) 可以在命令窗口中輸入文件名來直接調(diào)用工作路徑下的文件。使用M
4、ATLAB時獲取幫助的兩種方法:一是直接在命令窗口中輸入help 函數(shù)名或命令;二是在幫助窗口中瀏覽或搜索相應(yīng)信息。還可以參考MATLAB的Demo程序來學(xué)習(xí)MATLAB編程。1.2 基本語法(一)變量及其賦值1、標識符與數(shù)(1)標識符是標識變量名、常量名、函數(shù)名和文件名的字符串的總稱。在MATLAB中,變量和常量的標志符最長允許19個字符;函數(shù)和文件名通常不超過8個字符(受操作系統(tǒng)文件管理器的限制)。這些字符包括全部的英文字母(區(qū)分大小寫)、阿拉伯?dāng)?shù)字和下劃線等符號。標識符的第一個字符必須是英文字母。(2)MATLAB中只有雙精度一種數(shù)據(jù)格式,它把簡化編程作為主要目標,以運算速度和內(nèi)存消耗為
5、代價,省去了多種數(shù)據(jù)格式,唯一采用雙精度格式進行數(shù)據(jù)的存儲和運算。雖然它的數(shù)據(jù)格式只有一種,但是為了人機交互方便,輸出顯示格式有8種。下表顯示了在各格式控制命令下圓周率的顯示結(jié)果。MATLAB命令顯示形式說明format long3.1415926535897916位十進制數(shù)format long e3.141592653589793e+00016位十進制數(shù)加指數(shù)format short(默認)3.1416二位整數(shù),四位小數(shù)format short e3.1416e+0005位十進制數(shù)加指數(shù)format hex400921fb54442d1816位十六進制數(shù)format bank3.14兩位小
6、數(shù)format +正、負或零format rat355/113分數(shù)近似MATLAB默認的顯示格式是format loose(稀疏格式),屏幕的顯示會有很多空行,而如果用顯示格式命令format compact(緊湊格式),則會用緊湊格式顯示。2、矩陣及其元素的賦值(1)MATLAB中的變量或常量都代表矩陣,標量應(yīng)看作1×1階的矩陣。(2)矩陣的賦值:矩陣的值放在方括號中;一行中各元素之間以逗號或者空格分開,不同的行則以分號隔開;句的結(jié)尾可用回車符或逗號,此時會立即顯示運算結(jié)果。如果不希望顯示結(jié)果,就以分號結(jié)尾。此時運算仍然執(zhí)行,只是不顯示。變量的元素用圓括號“()”中的數(shù)字(也稱為下
7、標)來注明,一維矩陣(也稱為數(shù)組或向量)中的元素用一個下標表示,二維的矩陣可有兩個下標數(shù),以逗號分開。賦值語句一般形式為:變量=表達式(或數(shù))例如:輸入語句a=1 2 3;4 5 6;7 8 9則顯示結(jié)果為a = 1 2 3 4 5 6 7 8 9 Ø 元素可以用表達式代替。如輸入x=-1.3 sqrt(3) (1+2+3/5*4)則顯示結(jié)果為x = -1.3000 1.7321 4.8000Ø 可以單獨給矩陣的元素賦值。如x(2)=1.7321,a(2,3)=6等。如果賦值元素的下標超出了原來矩陣的大小,矩陣的行列會自動擴展。跳空的元素會被自動賦值為0。如x(5)=abs
8、(x(1)則得x=-1.3000 1.7321 4.800001.3000又如鍵入a(4,3)=6.5,則得a = 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 0 0 6.5000Ø 給全行賦值,可用冒號。如給a的第5行賦值。鍵入a(5,:)=5,4,3得a =1.0000 2.0000 3.00004.0000 5.0000 6.00007.0000 8.0000 9.00000 0 6.50005.0000 4.0000 3.0000Ø 要取出a的第2、4 行及第1、3列交點上的元素取出,
9、構(gòu)成一個新矩陣b。可鍵入b=a(2,4,1,3)得b = 4.0000 6.00000 6.5000Ø 要抽除a中的第2、4、5行,可利用空矩陣(指沒有元素的矩陣,對任何一個矩陣賦值,就是使它的元素都消失,注意它與“零矩陣”不同)。鍵入 a(2,4,5,:)=得a =1 2 37 8 9對于“變量=表達式(或數(shù))”的賦值形式,如果不要等式左端而只剩下右端,則MATLAB會自動給出一個臨時變量ans,把右端的結(jié)果暫存于ans中。例如鍵入a/7得ans = 0.1429 0.2857 0.42861.0000 1.1429 1.28573、復(fù)數(shù)矩陣、運算及其賦值(1)MATLAB的每一個
10、元素都可以是復(fù)數(shù),復(fù)數(shù)的虛數(shù)部分用i或j表示,這是在MATLAB啟動時就在內(nèi)部設(shè)定的。MATLAB中所有的運算符和函數(shù)都對復(fù)數(shù)有效。例如:鍵入c=3+5.2i或c=3+5.2j得c = 3.0000 + 5.2000i(2)復(fù)數(shù)矩陣有兩種賦值方法。Ø 對復(fù)數(shù)矩陣的元素逐個賦值。如鍵入z=1+2i,3+4i;5+6i,7+8i得z = 1.0000 + 2.0000i 3.0000 + 4.0000i 5.0000 + 6.0000i 7.0000 + 8.0000iØ 對其實部矩陣和虛部矩陣分別賦值。如鍵入z=1,3;5,7+2,4;6,8*i得z = 1.0000 + 2
11、.0000i 3.0000 + 4.0000i 5.0000 + 6.0000i 7.0000 + 8.0000i注意:只有數(shù)字與i的乘積可以省略乘號,在上述矩陣式中若省略乘號*,就會出錯。如果在前面程序中曾給i或j賦過其他值,則i或j已不是虛數(shù)符號,那么這些虛數(shù)賦值語句就不對了。此時應(yīng)鍵入clear i, j,即把原賦的i,j清掉,然后再執(zhí)行復(fù)數(shù)賦值語句。(3)復(fù)數(shù)矩陣的轉(zhuǎn)置、共軛運算Ø 函數(shù)conj對矩陣的每個元素求共軛,即把各元素的虛部反號。Ø 運算符 ' 對矩陣作共軛和轉(zhuǎn)置,即把其行列互換,同時把各元素的虛部反號。Ø 因此,如果只求轉(zhuǎn)置而不要共軛,
12、就把conj和 ' 結(jié)合起來使用。例如鍵入w=z',u=conj(z),v=conj(z)'得w = 1.0000 - 2.0000i 5.0000 - 6.0000i 3.0000 - 4.0000i 7.0000 - 8.0000iu = 1.0000 - 2.0000i 3.0000 - 4.0000i 5.0000 - 6.0000i 7.0000 - 8.0000iv = 1.0000 + 2.0000i 5.0000 + 6.0000i 3.0000 + 4.0000i 7.0000 + 8.0000i4、基本矩陣Ø 單位矩陣eye(n)是n
13、15;n階的方陣,其對角線上的元素為1,其余元素均等于0。Ø 全0矩陣zeros(m,n)是m×n的所有元素均為0的矩陣。Ø 全1矩陣ones(m,n)是m×n的所有元素均為1的矩陣。Ø 均分向量linspace(a,b,n)是在a與b之間均勻地產(chǎn)生n個點值,形成n維向量。如:鍵入f1=ones(3,2),f2=zeros(2,3),f3=eye(2)得f1 = 1 1 1 1 1 1f2 = 0 0 0 0 0 0f3 = 1 0 0 1鍵入f4=linspace(0,1,5)得f4 = 0 0.2500 0.5000 0.7500 1.00
14、00Ø 大矩陣可由小矩陣組成,但必須其行列數(shù)正確,恰好填滿全部元素。如鍵入f5=1 1 1;2 2 2;3 3 3得f5 = 1 1 1 2 2 2 3 3 3則鍵入fb=f1,f5;f3,f2可得fb = 1 1 1 1 1 1 1 2 2 2 1 1 3 3 3 1 0 0 0 0 0 1 0 0 0(二)矩陣的初等運算1、矩陣的加減乘法(1)矩陣加減法兩矩陣相加(減)就是其對應(yīng)元素的相加(減),通過+、-運算符實現(xiàn),要求相加(減)的兩個矩陣的結(jié)構(gòu)必須相同。用MATLAB的size語句來檢查結(jié)構(gòu)是否相同。例如:鍵入m,n=size(fb)得m = 5n = 5當(dāng)兩個矩陣相加(減)
15、時,如果有一個是標量,則MATLAB承認算式有效,并自動將該標量擴展成同結(jié)構(gòu)的等元素矩陣,再進行加(減)運算。例如:鍵入x=-1 0 1;y=x-1得y =-2 -1 0對于一維矩陣(數(shù)組),可以用length語句來求其長度,它不區(qū)分列或行,只有一個輸出量,而size有兩個輸出量,所以,作加減法的結(jié)構(gòu)檢驗時只能用size。(2)矩陣乘法n×p的矩陣A與p×m的矩陣B的乘積C是一個n×m的矩陣,通過運算符*實現(xiàn)。p是A矩陣的列數(shù),也是B矩陣的行數(shù),稱為這兩個相乘矩陣的內(nèi)階數(shù),這里要注意,兩矩陣相乘的必要條件是它們的內(nèi)階數(shù)相等。如果兩個相乘的矩陣有一個是標量,則MAT
16、LAB不檢查其內(nèi)階數(shù),而用該標量乘以矩陣的每個元素。若把y轉(zhuǎn)置,即y為3×1的矩陣,而x是1×3的矩陣,則x*y的內(nèi)階數(shù)相等為3鍵入x*y得ans=2該式子稱為x左乘y。如果使x右乘y,則y*x內(nèi)階數(shù)為1,鍵入y*x得ans = 2 0 -2 1 0 -1 0 0 0所以要注意左乘與右乘結(jié)果一般不同,只有單位矩陣例外,單位矩陣乘以任何矩陣,無論左乘還是右乘,其乘積仍等于該矩陣,但要保證單位矩陣的階數(shù)與相乘矩陣的階數(shù)相等。即eye(n)*A=AA*eye(n)=A2、矩陣除法及線性方程組的解(1)線性代數(shù)中沒有除法,只有逆矩陣,矩陣的除法是MATLAB從逆矩陣的概念引伸來的。
17、有左除和右除兩種情況。B左除矩陣D相當(dāng)于矩陣B左乘矩陣D的逆矩陣,記作DB。左除條件是:兩矩陣的行數(shù)必須相等。(D*X=B,X=D-1*B=DB,可見需要D與B的行數(shù)相等)B右除矩陣D相當(dāng)于矩陣B右乘矩陣D的逆矩陣,記作B/D。右除條件是:兩矩陣的列數(shù)必須相等。(X*D=B,X=B*D-1=B/D,可見需要D與B的列數(shù)相等)(2)矩陣除法可以用來方便地解線性方程組。例如要求下列方程組的解x=x1;x2;x3。6 x1+3x2+4 x3=3-2x1+5x2+7x3=-48x1-4x2-3 x3=-7此方程組可以寫成矩陣形式Ax=B,求解的MATLAB程序為A=6 3 4;-2 5 7;8 -4
18、-3; B=3;-4;-7; x=AB得x = 0.6000 7.0000 -5.4000下面來看矩陣左右乘除的一些示例。設(shè)A=1 2 3;4 5 6,B=2 4 0;1 3 5,D=1 4 7;8 5 2;3 6 0,即A = 1 2 3 4 5 6B = 2 4 0 1 3 5D = 1 4 7 8 5 2 3 6 0則其乘除的結(jié)果見下表。算 式結(jié) 果A*B? Error using => *Inner matrix dimensions must agree.(內(nèi)階數(shù)必須相等) A*B 6 16 20 9 23 25 12 30 30A*B 10 22 28 49DA? Error
19、 using => Matrix dimensions must agree.(行數(shù)必須相等)DA -0.0370 0 0.5185 1.0000 -0.1481 0A/D 0.4074 0.0741 0.0000 0.7407 0.4074 0.00003、矩陣的乘方和冪次函數(shù)MATLAB中只有運算符*、/、和指數(shù)函數(shù)expm、對數(shù)函數(shù)logm、開方函數(shù)sqitm是把矩陣作為一個整體來運算的,其他所有的MATLAB函數(shù)都是對矩陣中的元素分別進行運算的,稱為“元素群運算”,將在后面討論。(1)冪次運算時,指數(shù)和底數(shù)不能同時為矩陣,或者說指數(shù)和底數(shù)至少一個必須為標量;(2)指數(shù)或底數(shù)為矩陣
20、時,必須是方陣,以保證矩陣相乘的內(nèi)階數(shù)相等;(3)注意:sqrtm、expm、logm都是針對矩陣的運算,而sqrt、exp、log是針對矩陣元素的群運算,不要混淆。下面來看一些矩陣運算的示例,其中D=1 4 7;8 5 2;3 6 0,s=1 2;3 4即D = 1 4 7 8 5 2 3 6 0s = 1 2 3 4鍵入語句輸出結(jié)果說明D2 54 66 15 54 69 66 51 42 33按矩陣運算2.D 2 16 128 256 32 4 8 64 1按元素群運算Ds? Error using => At least one operand must be scalar.底數(shù)和
21、指數(shù)不能同時為矩陣u1=sqrtm(s) 0.5537 + 0.4644i 0.8070 - 0.2124i 1.2104 - 0.3186i 1.7641 + 0.1458i按矩陣運算u1*u1=s檢驗u2=sqrt(s) 1.0000 1.4142 1.7321 2.0000按元素群運算u2*u2s, u2.*u2=sv1=expm(s) 51.9690 74.7366 112.1048 164.0738按矩陣運算logm(v1)=sv2=exp(s) 2.7183 7.3891 20.0855 54.5982按元素群運算log(v1)=slogm(D) 1.2447 -0.9170 2.
22、8255 1.6044 2.5760 -1.9132 -0.7539 1.1372 1.6724按矩陣運算log(D) 0 1.3863 1.9459 2.0794 1.6094 0.6931 1.0986 1.7918 -Inf按元素群運算4、矩陣結(jié)構(gòu)形式的提取與變換設(shè)矩陣A=8 1 6 0;3 5 7 1;4 9 2 2即A = 8 1 6 0 3 5 7 1 4 9 2 2函數(shù)名功能語句結(jié)果fliplr矩陣左右翻轉(zhuǎn)B=fliplr(A) 0 6 1 8 1 7 5 3 2 2 9 4flipud矩陣上下翻轉(zhuǎn)B=flipud(A) 4 9 2 2 3 5 7 1 8 1 6 0reshap
23、e階數(shù)重組(元素總數(shù)不變)B=reshape(A,2,6) 8 4 5 6 2 1 3 1 9 7 0 2tril取矩陣的左下三角部分B=tril(A) 8 0 0 0 3 5 0 0 4 9 2 0triu取矩陣的右上三角部分B=triu(A) 8 1 6 0 0 5 7 1 0 0 2 2:將元素按列取出排成一排B=A(:)B =8 3 4 1 5 9 6 7 2 0 1 2(三)元素群運算1、數(shù)組及其賦值數(shù)組通常是指單行或單列的矩陣。MATLAB提供兩種為等間隔數(shù)組賦值的簡易方法。(1)用兩個冒號組成等增量語句,其格式為:t=初值:增量:終值或者t=初值:增量:終值。如:鍵入t=0:0.
24、02:1或t=0:0.02:1得t = 0 0.2000 0.4000 0.6000 0.8000 1.0000鍵入t=10:-3:-5或t=10:-3:-5得t = 10 7 4 1 -2 -5當(dāng)增量為1時,該增量可以略去不寫,變成t=初值:終值或t=初值:終值。如鍵入t=1:6或者t=1:6t = 1 2 3 4 5 6(2)用linspace函數(shù)。調(diào)用格式為:linspace(初值,終值,點數(shù))。如:鍵入linspace(1 10 10)得ans = 1 2 3 4 5 6 7 8 9 10即將1到10之間等分為10個點,或者說等分為9份。2、元素群的四則運算和冪次運算元素群運算也就是矩
25、陣中所有元素按照單個元素進行運算。在運算符*、/、前加上一個點符號“.”,就表示做元素群運算。參與元素群運算的兩個矩陣必須是同階的(只有標量除外,它會自動擴展為同階矩陣參與運算)。設(shè)X=1,2,3;Y=4,5,6運 算 式輸 出 結(jié) 果Z=X.*YZ = 4 10 18Z=X.YZ = 4.0000 2.5000 2.0000Z=X.YZ = 1 32 729Z=X.2Z = 1 4 9Z=2.X YZ = 2 4 8 16 32 64(四)運算符MATLAB中的數(shù)學(xué)運算符名 稱說 明名 稱說 明+ -矩陣加,矩陣減*矩陣乘/ 矩陣右除,矩陣左除矩陣求冪.* .群乘,群求冪./ .數(shù)組右除,數(shù)
26、組左除' . '共軛轉(zhuǎn)置,轉(zhuǎn)置=賦值MATLAB中的比較和邏輯運算符名 稱說 明名 稱說 明=等于=不等于> >=大于,大于等于< <=小于,小于等于&與|或非xor(a,b)a和b異或any(a)a中有元素非零則為真all(a)a中所有元素都非零則為真1.3 M文件及程序調(diào)試主程序文件(script file)(主程序):用戶為解決特定問題而編制函數(shù)文件(function file)(子程序):必須由其他M文件調(diào)用;往往具有一定的通用性M文件由MATLAB語句構(gòu)成的文本文件,以m作為文件擴展名;是ASCII碼文本文件,可以直接閱讀并用任何編輯器
27、來建立。行命令模式:鍵入一行命令后,讓系統(tǒng)立即執(zhí)行該命令。缺點:程序可讀性差,難以存儲。運行模式程序文件模式:可存儲,尤其適于復(fù)雜問題一、主程序文件1、格式及要求(1)程序開頭Ø 最開始一般是注釋行,說明程序用途、對輸入數(shù)據(jù)的要求等。注釋行必須以%開始,表明是注釋行而不是命令行,計算機不會處理以%開頭的任何內(nèi)容。當(dāng)然,在命令行后也可以%引導(dǎo)注釋語句;注釋可以用漢字。MATLAB規(guī)定,在鍵入“help 文件名”時,屏幕上會將該文件中以%起頭的最前面幾行的內(nèi)容顯示出來,使用戶知道如何使用。Ø 程序命令部分以clear、close all等語句開始,用來清除掉工作空間中原有的變量
28、和圖形,避免其他已執(zhí)行的程序殘留數(shù)據(jù)對本程序的影響。CLEAR removes all variables from the workspace.CLOSE ALL closes all the open figure windows.(2)程序主體Ø 如果文件中有在子程序中與主程序共用的全局變量,應(yīng)在程序的起始部分注明。其語句是:global變量名1變量名2Ø 為改善可讀性,應(yīng)注意流程控制語句的縮進及與end的對應(yīng)關(guān)系。Ø 程序中必須都用半角英文字母和符號(只有引號括住的部分和%號后的內(nèi)容可用漢字),否則程序執(zhí)行不通甚至?xí)罊C,因此一般在鍵入程序時,最好從頭到尾
29、用英文,在程序調(diào)試完畢后再插入漢字。(3)文件名及文件存儲Ø 按照MATLAB標志符要求起文件名,并加上后綴m。Ø 文件名即為MATLAB的調(diào)用命令。Ø 文件名中不允許用漢字。Ø 存儲目錄應(yīng)位于MATLAB的搜索路徑下。Ø MATLAB的搜索路徑不應(yīng)出現(xiàn)漢字路徑名。(4)程序執(zhí)行完成主程序文件編制后,在MATLAB的命令窗中鍵入此程序的文件名后,系統(tǒng)就會執(zhí)行文件中的程序,主程序文件中的語句將對工作空間中的所有數(shù)據(jù)進行運算操作。2、示例列出求素數(shù)的程序。素數(shù)即為只能被它自身和1除凈的數(shù)。程序如下:%求素數(shù)(prime number)的程序clea
30、r,close all%清除工作空間中原有的變量和圖形N=input(N=),x=2:N;%列出從2到N的全部自然數(shù)for u=2:sqrt(N)%依次列出除數(shù)(最大到N的平方根)n=find(rem(x,u)=0 & x=u);%找到能被u除凈而u不等于x的數(shù)的序號x(n)=;%剔除該數(shù)end,x%循環(huán)結(jié)束,顯示結(jié)果以prime.m為名存入系統(tǒng)即可執(zhí)行。給出N=40,結(jié)果為x=2 3 5 7 11 13 17 19 23 29 31 373、常用的人機交互命令在執(zhí)行主程序文件時,往往希望在適當(dāng)?shù)牡胤綄Τ绦虻倪\行進行觀察或者干預(yù)(尤其在調(diào)試程序的時候),這時就需要人機交互命令。介紹常用
31、的下面幾條:(1)input('提示符)程序執(zhí)行到此處暫停,在屏幕上顯示引號中的字符串。要求用戶輸入數(shù)據(jù)。如程序為X=input(X=),則會在屏幕上顯示X=,輸入的數(shù)據(jù)將賦給X。數(shù)據(jù)輸入后,程序繼續(xù)運行。Input命令也可以接受字符,其格式為Y=input(提示符,s),此時Y將等于輸入的字符串。(2)pause(n)程序執(zhí)行到此處,暫停n秒,再繼續(xù)執(zhí)行。如果沒有括號參數(shù),則等待用戶鍵入任意鍵后才繼續(xù)執(zhí)行。(3)echo on(off)一般情況下,M文件中的命令不會顯示在屏幕上。而在命令echo on之后,會在執(zhí)行每行程序前先顯示其內(nèi)容。(4)keyboard程序執(zhí)行到此處暫停,在屏
32、幕上顯示字符K,并把程序的輸入和執(zhí)行權(quán)交給用戶(鍵盤)。用戶可以像在普通MATLAB命令窗口中那樣進行任何操作(例如,檢查中間結(jié)果等)。如果需要系統(tǒng)恢復(fù)運行原來的程序,只需要鍵入return。在M文件中設(shè)置該命令,有利于進行程序調(diào)試以及臨時修改變量內(nèi)容。(5)Ctrl+C強行終止程序的運行。當(dāng)程序有錯運行時間太長時,可用此方法終止。二、函數(shù)文件1、格式特征(1)由function起頭;(2)function后跟函數(shù)名,且必須與文件名相同;(3)可以有輸入輸出變量進行變量傳遞;(4)除非用global聲明,程序中的變量均為局部變量,不保存在工作空間中。(5)在鍵入“help 文件名”時,屏幕上顯
33、示的內(nèi)容是位于function語句后對文件的注釋部分(而help 主程序文件時顯示的內(nèi)容是文件罪開頭的注釋語句)。2、示例設(shè)已有函數(shù)文件mean.m鍵入 type mean得到function y=mean(x)%MEAN求平均值。對于向量,mean(x)返回該向量x中各元素的平均值%對于矩陣,mean(x)是一個包含各列元素平均值的行向量m,n=size(x);if m=1 M=n;end%處理單行向量y=sum(x)/m分析:文件的第一條語句定義了函數(shù)名、輸入變量x以及輸出變量y。如果沒有這條語句,該文件就成為程序文件,而不再是函數(shù)文件。輸入變量和輸出變量都可以由若干個,但必須在第一條語句
34、中明確列出。function語句后由%引導(dǎo)的注釋部分,會在help mean命令后顯示于命令窗口中。變量m,n,y都是函數(shù)mean的局部變量,當(dāng)mean.m文件執(zhí)行完畢,這些變量值會自動消失,不保存在工作空間中。如果在該文件執(zhí)行前,工作空間中已經(jīng)有同名的變量,系統(tǒng)會把兩者看作各自無關(guān)的變量,不會混淆。這樣,調(diào)用子程序時就不用考慮其中的變量與程序變量沖突的問題了。如果希望把兩者看成同一變量,則必須在主程序和子程序中都加入global語句,對此共同變量進行聲明。在給輸入變量x賦值時,應(yīng)把x代換成主程序中的已知變量。三、文件編輯器及程序調(diào)試MATLAB提供的編輯器把編輯與調(diào)試結(jié)合在一起。一般來說,主
35、程序比較好調(diào)試,因為MATLAB差錯能力很強,配合工作空間中變量的保存和顯示功能,不需要專門的調(diào)試命令,調(diào)試也可以很方便地進行。需要用調(diào)試命令的主要是函數(shù)程序,因為在函數(shù)程序出錯而停機時,其變量不被保存。雖然它也會指出出錯的語句,但是因為子程序中的變量在程序執(zhí)行完畢后會自動消失,其他現(xiàn)場數(shù)據(jù)都無記錄,會給調(diào)試帶來很大困難。解決此問題可以采用下列措施:Ø 把某些分號改為逗號,使中間結(jié)果能夠顯示在屏幕上,作為差錯的依據(jù)。Ø 在子程序中適當(dāng)部位加keyboard命令。此處,系統(tǒng)會暫停而等待用戶鍵入命令。這時,子程序中的變量還存在于工作空間中,可以對它們進行檢查。Ø 將函
36、數(shù)文件的第一行前加%號,使它成為程序文件,進行初步調(diào)試。第一行中的輸入變量可改為input或者賦值語句來輸入,調(diào)試好后再改回函數(shù)文件。Ø MATLAB共有11條調(diào)試命令,如dbstop設(shè)置斷點,dbclear清除斷點等。一般來說,當(dāng)程序不太長時,用調(diào)試命令反而麻煩。實驗名稱: 利用MATLAB模擬點電荷電勢的分布一、 實驗?zāi)康?.熟悉單個點電荷及一對點電荷的電勢分布情況;2.學(xué)會使用MATLAB進行數(shù)值計算,并繪出相應(yīng)的圖形;二、實驗原理根據(jù)庫侖定律:在真空中,兩個靜止點電荷之間的作用力與這兩個電荷的電量乘積成正比,與它們之間距離的平方成反比,作用力的方向在兩個電荷的連線上,兩電荷同
37、號為斥力,異號為吸引力,它們之間的力滿足: (式1)由電場強度的定義可知: (式2)對于點電荷,根據(jù)場論基礎(chǔ)中的定義,有勢場的勢函數(shù)為 (式3)在MATLAB中,由以上公式算出各點的電勢,可以用MATLAB自帶的庫函數(shù)繪出相應(yīng)的電勢分布情況。三、MATLAB基本語法 (一)標識符與數(shù)標識符是標志變量名、常量名、函數(shù)名和文件名的字符串的總稱。(二)矩陣及其元素的賦值賦值就是把數(shù)賦予代表常量或變量的標識符。MATLAB中的變量或常量都代表矩陣,標量應(yīng)看作1×1價的矩陣。賦值語句的一般形式為變量=表達式(或數(shù))列如,輸入語句a=1 2 3;4 5 6;7 8 9則顯示結(jié)果為a=1 2 3
38、4 5 6 7 8 9輸入 x=1 2 3 4 5 6 7 8 9結(jié)果為x= 1 2 3 4 5 6 7 8 9可以看出,矩陣的值放在方括號中,同一行中各元素之間以逗號或空格分開,不同行的元素以分號隔開。語句的結(jié)尾可用回車或逗號“,”,此時會立即顯示運算結(jié)果;如果不希望顯示結(jié)果,就以分號“;”結(jié)尾再回車,此時運算仍然執(zhí)行,只是不作顯示。變量的元素用圓括號“()”中的數(shù)字(也稱為下標)來注明,一維矩陣(也稱數(shù)組)中的元素用一個下標表示,二維矩陣可有兩個下標數(shù),以逗號分開。在MATLAB中可以單獨給元素賦值,例如,a(2,3)=6,x(2)=2等。(三)元素群運算把n×m矩陣中的每個元素
39、當(dāng)作對象,成群地執(zhí)行某種運算,稱為元素群運算。元素群運算能大大簡化編程,提高運算的效率,這是MATLAB優(yōu)于其它許多語言的一個特色。1、數(shù)組及其賦值數(shù)組通常是指單行或單列的矩陣,一個N階數(shù)組就是1×N或N×1階矩陣。N階數(shù)組可以表示N維向量。在求某些函數(shù)值或曲線時,常常要設(shè)定自變量的一系列值,例如,設(shè)間隔n在x軸上從-3到3之間,每隔1取一個點,共7個點,這是1×7階的數(shù)組。如果逐點給它賦值,將非常麻煩。MATLAB提供了兩種給等間隔數(shù)組賦值的簡易方法。(1)用兩個冒號組成等增量語句,其格式為x=初值:增量:終值。例如,鍵入x=-3:1:3得x=-3 -2 -1
40、0 1 2 3 當(dāng)然增量為1時,這個增量值是可以略去的。(2)linspace函數(shù)表述等距離分割,其格式為x=linspace(初值,終值,點數(shù))。例如鍵入x=linspace(-3,3,7)得x=-3 -2 -1 0 1 2 3 在x軸上-3和3實際上是一個點,所以這個命令是把x軸分為7份。第三個變元也可以不寫,此時取默認值100.2、元素群的四則運算和冪次運算元素群運算也就是單個元素之間的運算。為了與矩陣作為整體的運算符號相區(qū)別,要在運算符“*”、“/”、“”、“”前加一個點符號“.”,以表示進行元素群運算。矩陣的加減法本來就是對元素進行的,故不再有元素群運算符。參與元素群運算的兩個矩陣必
41、須是同價的(標量除外)。下列的例子可以說明利用元素群運算的優(yōu)越性。例如,要求列出一個三角函數(shù)表。這在MATLAB中只要一下兩個語句鍵入 x=0:0.1:pi/4;x, sin(x), cos(x), tan(x)第一條語句把數(shù)組x賦值,經(jīng)轉(zhuǎn)置后成為一個列向量。因為sin, cos,tan函數(shù)都對元素群有效,得出的都是同階的列向量。第二條語句把4個列向量組成一個矩陣,進行顯示。得 0 0 1.0000 0 0.1000 0.0998 0.9950 0.1003 0.2000 0.1987 0.9801 0.2027 0.3000 0.2955 0.9553 0.3093 0.4000 0.389
42、4 0.9211 0.4228 0.5000 0.4794 0.8776 0.5463 0.6000 0.5646 0.8253 0.6841 0.7000 0.6442 0.7648 0.8432第一列是x,以下各列依次是sin(x), cos(x), tan(x)。for語句for語句的結(jié)構(gòu)形式為for k=初值:增量:終值 語句組A,end即它把語句組A反復(fù)執(zhí)行N次。在每次執(zhí)行時程序中k值不同??梢运愠鲅h(huán)次數(shù)為N=1+(終值初值)/增量用for 語句求三角函數(shù)表的程序為for x=0:0.1:pi/4disp(x, sin(x), cos(x), tan(x);end所得結(jié)果將和上個例
43、題中的答案相同。可以看出,MATLAB的元素群運算功能與一個for循環(huán)相當(dāng),由于它不需要每次檢驗表達式,運算速度比for語句快得多。for 語句可以嵌套使用。四、MATLAB現(xiàn)用函數(shù)介紹MATLAB語言的難點是函數(shù)較多,僅基本部分就有700多個,其中常用的近200個,要盡量多記少查,以提高編程效率,而且這是終生受益的。1、線型分隔函數(shù)linspace(-xm,xm,n):在-xm與xm之間均分地產(chǎn)生n個點值,形成1×n元向量。其中-xm是初值,xm是終值,n是點數(shù)。2、兩個變量的標量指令 X,Y=meshgrid(x,y):將向量x,y變換為數(shù)組X,Y,這樣就可以將兩個一維向量生成兩
44、個二維矩陣。其中,數(shù)組X的各行是向量x的拷貝,總行數(shù)為y向量的元素個數(shù);數(shù)組Y的各列是向量y的拷貝,總列數(shù)為x向量的元素個數(shù)。例如x=-3:3; y=1:5; X,Y=meshgrid(x,y) X=-3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 Y= 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 4 5 5 5 5 5 5 5Z=(X+Y).2 Z= 4 1 0 1 4 9 16 1 0 1 4 9 16 25
45、 0 1 4 9 16 25 36 1 4 9 16 25 36 49 4 9 16 25 36 49 643、二維空間中繪制等高線函數(shù) contour(X,Y,U,u):就是挑選出電勢相等的點,并在向量u指定的值上繪制等高線。注意u取值要恰當(dāng)。四、實驗編程1.畫單個點電荷的平面電場線與等勢線clear %清除變量E0=8.85e-12; %真空電介質(zhì)常數(shù)C0=1/4/pi/E0; %歸并常數(shù)q=1.6*10(-19); %元電荷電量xm=2.5; %橫坐標范圍ym=4; %縱坐標范圍x=linspace(-xm,xm); %橫坐標向量y=linspace(-ym,ym); %縱坐標向量X,Y=meshgrid(x,y); %設(shè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度煤礦公司員工崗位責(zé)任與勞動合同2篇
- 2024微信搖一搖互動營銷方案制作合同3篇
- 二零二五年度冰淇淋原料采購合同3篇
- 2024年度外貿(mào)行業(yè)員工勞務(wù)派遣與國際市場拓展協(xié)議3篇
- 2024年標準電子產(chǎn)品供應(yīng)協(xié)議模板版B版
- 應(yīng)急產(chǎn)品課程設(shè)計
- 2025年度水電站經(jīng)營權(quán)承包與電力系統(tǒng)優(yōu)化合同3篇
- 巖土鉆掘課程設(shè)計
- 2024版房產(chǎn)銷售支持與市場分析顧問服務(wù)合同一
- 2025版搬運行業(yè)安全生產(chǎn)管理合同2篇
- 《中國傳統(tǒng)文化》課件模板(六套)
- 民航客艙服務(wù)管理Ⅱ?qū)W習(xí)通超星期末考試答案章節(jié)答案2024年
- 兒科主任年終總結(jié)
- 2023年上海市錄用公務(wù)員考試真題
- 期末 (試題) -2024-2025學(xué)年人教PEP版英語四年級上冊
- 第三單元 (單元測試)-2024-2025學(xué)年-四年級上冊語文統(tǒng)編版
- 浪潮銷售在線測評題
- 總經(jīng)理年會發(fā)言稿模板怎么寫(8篇素材參考)
- 《完善中國特色社會主義法治體系》課件
- 2024年人教版小學(xué)四年級信息技術(shù)(上冊)期末試卷附答案
- 空氣動力學(xué)優(yōu)化技術(shù):拓撲優(yōu)化:拓撲優(yōu)化項目設(shè)計與實踐
評論
0/150
提交評論