電力系統(tǒng)課程設(shè)計(jì)(第一講)_第1頁(yè)
電力系統(tǒng)課程設(shè)計(jì)(第一講)_第2頁(yè)
電力系統(tǒng)課程設(shè)計(jì)(第一講)_第3頁(yè)
電力系統(tǒng)課程設(shè)計(jì)(第一講)_第4頁(yè)
電力系統(tǒng)課程設(shè)計(jì)(第一講)_第5頁(yè)
已閱讀5頁(yè),還剩78頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1電力系統(tǒng)課程設(shè)計(jì)第一講王康元(kywang)浙江大學(xué)電氣工程學(xué)院 2Outline 課程設(shè)計(jì)的目標(biāo)及要求 MATLAB基礎(chǔ)教程電力系統(tǒng)潮流計(jì)算理論基礎(chǔ)電力系統(tǒng)潮流計(jì)算程序的上機(jī)實(shí)現(xiàn)電力系統(tǒng)三相短路計(jì)算程序的上機(jī)實(shí)現(xiàn)3一 課程設(shè)計(jì)的目標(biāo)及要求目標(biāo): 應(yīng)用MATLAB語(yǔ)言編寫具有一定通用性的牛頓-拉夫遜法潮流計(jì)算程序和共用潮流矩陣的三相短路計(jì)算程序。要求:(1)潮流計(jì)算方法為牛頓-拉夫遜法。(2)編程語(yǔ)言為MATLAB。(3)程序具有較強(qiáng)通用性。4Matlab5MATLAB啟動(dòng)圖標(biāo):1.MATLAB的主窗口其它的幾個(gè)窗口都包含在這個(gè)大的主窗口中。2.命令窗口“”為運(yùn)算提示符,表示MATLAB正處

2、在準(zhǔn)備狀態(tài)。當(dāng)在提示符后輸入一段運(yùn)算式并按回車鍵后, MATLAB將給出計(jì)算結(jié)果,然后在進(jìn)入準(zhǔn)備狀態(tài)。3.歷史窗口在默認(rèn)設(shè)置下,歷史窗口中會(huì)保留自安裝起所有命令的歷史記錄,并標(biāo)明使用時(shí)間,這方便了使用者的查詢。雙擊某一行命令,即在命令窗口中執(zhí)行該行命令。6命令窗口歷史窗口當(dāng)前目錄窗口發(fā)行說(shuō)明書窗口74.當(dāng)前目錄窗口 在當(dāng)前目錄窗口中可顯示或改變當(dāng)前目錄,還可以顯示當(dāng)前目錄下的文件。5.發(fā)行說(shuō)明書窗口 用來(lái)說(shuō)明用戶所擁有的產(chǎn)品的工具包、演示及幫助信息。6.工作間管理窗口 在工作間管理窗口中將顯示目前內(nèi)存中所有的MATLAB變量的變量名、字節(jié)數(shù)以及類型等信息。8工作間管理窗口9MATLAB程序設(shè)計(jì)

3、語(yǔ)言1 基本賦值和計(jì)算 MATLAB的基本控制都是通過(guò)命令窗口實(shí)現(xiàn)的。給出一條命令,立即就可以得出該命令的結(jié)果。 MATLAB能被當(dāng)作計(jì)算器使用。 5011+13ans = 5024 “”是MATLAB的提示符,在提示符后鍵入一個(gè)命令,當(dāng)按下回車后,就執(zhí)行該命令。10同一行上可以有多條命令: 25,2*(3+2)ans = 32ans = 10 變量通常用于保存所賦的值和結(jié)果。如果沒(méi)有賦值,MATLAB將結(jié)果存放在名為ans的變量中。 x=14x = 14 y=3*xy = 42 11+ 加法- 減法- 負(fù)* 乘法 冪/ 右除(正常除) 3/4=34 左除 34=43代數(shù)運(yùn)算符 a=exp(1

4、.2); b=sin(2); c=a*bc = 3.0190 a=1 2;3 4; b=5 6;7 8; c=a*bc = 19 22 43 5012所有的基本數(shù)學(xué)函數(shù)在MATLAB中有定義注意MATLAB的內(nèi)部函數(shù)一定是小寫字母。 常用的基本數(shù)學(xué)函數(shù):abs(x), 求x的絕對(duì)值sign(x), 求x的符號(hào),如果是正的得1;負(fù)的得1;零得0sqrt(x) ,求x的平方根exp(x), 求x的指數(shù)函數(shù),即exlog(x), 求x的自然對(duì)數(shù),即lnxlog10(x), 求x以10為底的對(duì)數(shù)log2(x), 求x以2為底的對(duì)數(shù)13 常用的三角函數(shù):sin(x), cos(x), tan(x) ,a

5、sin(x), acos(x), atan(x) ,sinh(x), cosh(x), tanh(x) ,雙曲 asinh(x), acosh(x), atanh(x) 反雙曲注意:所有的三角函數(shù)都需要其自變量以弧度表示。14取整命令和有關(guān)命令round(x),求最接近x的整數(shù)。如果x是一個(gè)向量,則適用于所有元素。 fix(x) , 求0方向最接近x的函數(shù)。即負(fù)x向上取整,正x向下取整。floor(x), 求小于或等于x的最接近的整數(shù)ceil(x) , 求大于或等于x的最接近的整數(shù)rem(x,y) , 求整除x/y的余數(shù)gcd(x,y), 求整數(shù)x和y的最大公因子lcm(x,y), 求整數(shù)x和

6、y的最小公倍數(shù)15有關(guān)復(fù)數(shù)的函數(shù)angle(z) ,求z的相角abs(z), 求z的模 real(z) , 求z的實(shí)部 imag(z) ,求z的虛部 conj(z) , 求z的共軛復(fù)數(shù)16幾個(gè)格式指令和常量特殊變量 ans用于結(jié)果的缺省變量名pi圓周率eps計(jì)算機(jī)的最小數(shù),Inf無(wú)窮大,如1/0NaN不定量,如0/0i和ji=j=()1/2realmin最小可用正實(shí)數(shù)realmax最大可用正實(shí)數(shù) 表中的特殊變量在啟動(dòng)MATLAB之后,自動(dòng)賦予表中取值。如果定義了相同名字的變量,原始特殊取值將會(huì)丟失,直至清除所有變量或重新啟動(dòng)MATLAB。一般來(lái)講,應(yīng)當(dāng)盡量避免重新定義特殊變量。變量名規(guī)則: 1

7、. 必須是不含有空格的單個(gè)詞 2. 變量名區(qū)分字母大小寫3. 變量名最多不超過(guò)19個(gè)字符4. 變量名必須以字母打頭,之后可以是任意字母、數(shù)字或下劃線5.變量名中不允許使用標(biāo)點(diǎn)符號(hào)17clear命令 clear命令可以用來(lái)刪除一些不再使用的變量。這樣可以使得整個(gè)工作空間更簡(jiǎn)潔。例如clear x1 y1將刪除x1和y1變量。但應(yīng)當(dāng)注意,在這一命令下x1和y1之間不能加逗號(hào),否則該命令就會(huì)被錯(cuò)誤地解釋成刪除x1變量,然后開始下一個(gè)語(yǔ)句(其內(nèi)容為y1),而該語(yǔ)句將被解釋成將y1變量的內(nèi)容顯示出來(lái),這樣y1變量就不被同時(shí)刪除了。 如果想刪除整個(gè)工作空間中所有的變量,則可以使用clear命令,在該命令后

8、面不用加任何參數(shù)。 應(yīng)當(dāng)特別注意:使用clear命令,MATLAB工作空間中的全部變量將被無(wú)條件刪除!系統(tǒng)不會(huì)要求你確認(rèn)這個(gè)命令。所有變量都被清除,且不能恢復(fù)! clc 清屏clear 刪除工作變量182 用MATLAB處理矩陣容易 矩陣在MATLAB中是基本的數(shù)據(jù)單元, MATLAB中矩陣變量名必須是以字母開頭的,由字母和數(shù)字組成的字符串。 2.1 形成矩陣 在MATLAB中形成矩陣的辦法有多種。生成小型矩陣的常用辦法是直接從鍵盤輸入。 A=1 3 2;3 1 0;2 1 5A = 1 3 2 3 1 0 2 1 5變量A賦值為一個(gè)3階方陣。1. 矩陣表示原則:(1)矩陣元素列在中。(2)每

9、行元素之間用空格或逗號(hào)隔開。(3)行與行之間用分號(hào)隔開,或在輸入時(shí)用回車鍵代替分號(hào)。19 B=4 3 6;5 1 4;3 4 6;變量B賦值為一個(gè)3階方陣,但結(jié)果并不輸出在命令窗口上。 size(B)ans = 3 3 c=size(B)c = 3 3 函數(shù)size(B)給出矩陣B 的維數(shù)。 length(B)ans = 3 MAX(SIZE(X)創(chuàng)建矩陣的其他方法:(1) 通過(guò)外部數(shù)據(jù)文件加載 通過(guò)“l(fā)oad”命令加載外部數(shù)據(jù)文件創(chuàng)建矩陣。 (2) 在M文件中創(chuàng)建矩陣202.2 特殊矩陣 一些有特殊意義和結(jié)構(gòu)的矩陣,在MATLAB中可以很容易得到它們。最常用的特殊矩陣命令有ones(m,n)

10、 形成一個(gè)mn階矩陣,它的所有元素均為“1”;zeros(m,n) 形成一個(gè)mn階零矩陣;eye(n) 形成一個(gè)n階單位矩陣。 c=ones(2,3)c = 1 1 1 1 1 1 c=zeros(size(B)c = 0 0 0 0 0 0 0 0 0 c=eye(3)c = 1 0 0 0 1 0 0 0 1 212.3 矩陣的運(yùn)算 討論矩陣的算術(shù)運(yùn)算、分塊、轉(zhuǎn)置和求逆。假設(shè)A和B為前面輸入的矩陣 A=1 3 2;3 1 0;2 1 5; B=4 3 6;5 1 4;3 4 6; C=A+BC = 5 6 8 8 2 4 5 5 11 D=A-B D= -3 0 -4 -2 0 -4 -1

11、 -3 -1 E=A*BE = 25 14 30 17 10 22 28 27 4622 F=AF = 1 3 2 3 1 1 2 0 5 G=inv(A)G = -0.1316 0.3421 0.0526 0.3947 -0.0263 -0.1579 -0.0263 -0.1316 0.2105 轉(zhuǎn)置求逆A = 1 3 2 3 1 0 2 1 523 在矩陣的算術(shù)運(yùn)算中“除法”是必須特殊考慮和研究的,設(shè) A x = b其中A為方陣,x為所要求解的向量,b為已知的向量。上述的問(wèn)題稱為線性方程組。使用MATLAB的一個(gè)語(yǔ)句就可以得到該問(wèn)題的解。 b=ones(3,1); x=Abx = 0.26

12、32 0.2105 0.0526 A = 1 3 2 3 1 0 2 1 524 在MATLAB這個(gè)平臺(tái)上,可以很方便地進(jìn)行矩陣元素的運(yùn)算,例如 U(1,2)=A(2,1)+A(3,2)U = 0 4 V(3,1)=B(2,2)*A(1,2)V = 0 0 3 A(1,3)=5; A(2,2)=4; AA = 1 3 5 3 4 0 2 1 5 A = 1 3 2 3 1 0 2 1 5B = 4 3 6 5 1 4 3 4 625 矩陣的分塊 例如,A(2,: )和A(:,3)分別表示矩陣A的第2行和第3列,而且上述符號(hào)可以作為向量直接參與運(yùn)算。 A(2,: )ans = 3 4 0 A(:

13、,3)ans = 5 0 5 A = 1 3 5 3 4 0 2 1 5 設(shè)H是一個(gè)1010矩陣,則H(:,4:8)表示的是H的第4到第8列組成的105矩陣。26 a= 1 3 5 7;2 4 6 8;-2 -3 -4 -5;-4 -5 -6 -7a = 1 3 5 7 2 4 6 8 -2 -3 -4 -5 -4 -5 -6 -7 v=1 3 4; b=a(v,4)b = 7 -5 -7 b=a(v,:)b = 1 3 5 7 -2 -3 -4 -5 -4 -5 -6 -7 27在MATLAB中“:”是十分常用的。例如: x=-10:2:10 x = -10 -8 -6 -4 -2 0 2

14、4 6 8 10得到x為11維的向量 y=0:0.1:2; size(y)ans = 1 21 得到y(tǒng)為21維的向量,元素為0,0.1,0.2,1.9,2.028 z=1:3,2:2:8,6:3:15z = 1 2 3 2 4 6 8 6 9 12 15 c=3.2,4.5;2.4,4.7 d=c ones(size(c);zeros(size(c) eye(size(c)d = 3.2000 4.5000 1.0000 1.0000 2.4000 4.7000 1.0000 1.0000 0 0 1.0000 0 0 0 0 1.0000 29從已存在的矩陣中生成新的矩陣 A=1 2 3 4

15、;5 6 7 8;9 10 11 12;13 14 15 16A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 diag(A)ans = 1 6 11 16diag(A):生成一個(gè)由矩陣A主對(duì)角線元素組成的列向量。30 x=-5 -10 -15x = -5 -10 -15 diag(x)ans = -5 0 0 0 -10 0 0 0 -15 diag(x):生成一個(gè)n維的方陣,它的主對(duì)角線元素取自向量x ,其余元素的值都為0。31 triu(A)ans = 1 2 3 4 0 6 7 8 0 0 11 12 0 0 0 16 triu(A,1)ans =

16、0 2 3 4 0 0 7 8 0 0 0 12 0 0 0 0triu(A):生成一個(gè)和A大小相同的上三角矩陣。該矩陣的主對(duì)角線及以上元素取自A中相應(yīng)元素,其余元素都為零。triu(A,k):生成一個(gè)和A大小相同的上三角矩陣。該矩陣的第k條對(duì)角線及以上元素取自A中相應(yīng)元素,其余元素都為零。32 tril(A)ans = 1 0 0 0 5 6 0 0 9 10 11 0 13 14 15 16 tril(A,-1)ans = 0 0 0 0 5 0 0 0 9 10 0 0 13 14 15 0 tril(A):生成一個(gè)和A大小相同的下三角矩陣。該矩陣的主對(duì)角線及以上元素取自A中相應(yīng)元素,其

17、余元素都為零。tril(A,k):生成一個(gè)和A大小相同的下三角矩陣。該矩陣的第k條對(duì)角線及以下元素取自A中相應(yīng)元素,其余元素都為零。負(fù)數(shù)k表示主對(duì)角線下的對(duì)角線。332.4 矩陣的特殊運(yùn)算 這里主要介紹矩陣的乘冪運(yùn)算和矩陣元素的運(yùn)算。A = 1 3 5 3 4 0 2 1 5 A2ans = 20 20 30 15 25 15 15 15 35 Ap得到與A同階的矩陣為A的p次冪,其中p可以是任何的正數(shù)。34假設(shè)A和B是同階的矩陣(或向量),A = 1 3 5 3 4 0 2 1 5B = 4 3 6 5 1 4 3 4 6p=A.*B得到與A與B同階的矩陣,其中p( i, j)=A( i,

18、j)*B( i, j) p=A.*Bp = 4 9 30 15 4 0 6 4 30 35A = 1 3 5 3 4 0 2 1 5B = 4 3 6 5 1 4 3 4 6q =A.B得到與A與B同階的矩陣,其中q( i, j)=A( i, j)B( i, j) q=A.Bq = 1 27 15625 243 4 0 8 1 15625 36A = 1 3 5 3 4 0 2 1 5B = 4 3 6 5 1 4 3 4 6r =A./B得到與A與B同階的矩陣,其中r( i, j)=A( i, j)/B( i, j) r=A./Br = 0.2500 1.0000 0.8333 0.6000

19、 4.0000 0 0.6667 0.2500 0.8333 37s =A.B得到與A與B同階的矩陣,其中s( i, j)=B( i, j)/A( i, j)A = 1 3 5 3 4 1 2 1 5B = 4 3 6 5 1 4 3 4 6 s=A.Bs = 4.0000 1.0000 1.2000 1.6667 0.2500 4.0000 1.5000 4.0000 1.2000 38:冒號(hào);在MATLAB中,它表示“全部”;用于分隔行;禁止顯示結(jié)果,用于分隔列;要求顯示結(jié)果;函數(shù)參數(shù)分隔符等.小數(shù)點(diǎn)矩陣或向量轉(zhuǎn)置( )指出在算術(shù)表達(dá)式中計(jì)算的先后次序,矩陣元素提取 用于構(gòu)成向量和矩陣%用

20、于注釋=用于賦值39 MATLAB提供了許多可以選用的圖形功能,這里只作簡(jiǎn)單介紹3 用MATLAB繪圖容易3.1 二維圖形函數(shù)plot 最常用和最簡(jiǎn)單的繪圖命令例如 plot(x,y,-);將向量x和y對(duì)應(yīng)元素定義的點(diǎn)依次用實(shí)線聯(lián)接(x和y的維數(shù)必須一樣);如果x和y為矩陣,則按列依次處理 plot(x1,y1,*,x2,y2, +);將向量 x1和y1對(duì)應(yīng)元素定義的點(diǎn)用星號(hào)標(biāo)出,將向量x2和y2對(duì)應(yīng)元素定義的點(diǎn)用+標(biāo)出。MATLAB可以劃線或者點(diǎn),它提供的點(diǎn)和線類型如下表40線符號(hào)點(diǎn)符號(hào)實(shí)線-實(shí)心圓點(diǎn).虛線-加號(hào)+點(diǎn):星號(hào)*虛線間點(diǎn)-.空心原點(diǎn)。叉號(hào)藍(lán)色b黃色y紅色r綠色g41例如 plot

21、(x,y,-b) 將x和y對(duì)應(yīng)的元素定義的點(diǎn)依次用藍(lán)色實(shí)線聯(lián)接。 x = 0:.002:4*pi; y=sin(x); plot(x,y,-b);423.2 繪圖輔助函數(shù)利用這一族函數(shù)可以為畫出的圖像加上標(biāo)題等內(nèi)容。title(.); 在圖形的上方顯示 中指定的內(nèi)容;xlabel(.);將 中指定的內(nèi)容標(biāo)在x軸;ylabel(.);將 中指定的內(nèi)容標(biāo)在y軸;grid;在圖上顯示虛線的格;text(x,y, );將 中指定的內(nèi)容顯示在x,y所定義的位置上;gtext();運(yùn)行到該命令時(shí),屏幕光標(biāo)位置顯示符號(hào)“”等待,它將 中指定的內(nèi)容標(biāo)在鼠標(biāo)指定的位置;43axis(xl xr yl yr);

22、其中的4個(gè)實(shí)數(shù)分別定義x和y方向顯示的范圍;hold on;后面plot的圖將迭在一起;hold off;解除hold on命令,plot將沖去圖形窗口已有圖形;注意上述輔助函數(shù)必須放在相應(yīng)的“plot”語(yǔ)句之后。 x =0:0.1:100; y = sin(x).*x./(1+cos(x); plot(x,y, b) grid; axis(0 100 -2e4 3e4); title(a simple function) ; xlabel(x); ylabel(|Error|);443.3 多窗口繪圖函數(shù)subplot 該函數(shù)的形式 subplot(p,q,r)該命令將圖形窗口分成p行q列共

23、計(jì)pq個(gè)格子,在第r 個(gè)格子上畫圖,格子是從上到下按行依次記數(shù)的。 例如考慮Chebeshev多項(xiàng)式,它可以用其遞推公式定義如下:45將-1,1上的前四個(gè)Chebeshev多項(xiàng)式畫在一張圖上x=-1:0.05:1;t0=1.0+0*x;t1=x;t2=2*x.*t1-t0;t3=2*x.*t2-t1;plot(x,t0,-r);gtext(T0);title(Chebeshev P);xlabel(x);ylabel(y);hold onplot(x,t1,-b);gtext(T1);plot(x,t2,:b);gtext(T2);plot(x,t3,-.r);gtext(T3);hold o

24、ff46 將一個(gè)完整的命令集合寫入M文件便是一段MATLAB程序,但要注意,編程是在MATLAB的編輯窗口而不是命令窗口。M文件必須有后綴.m(filename.m)。每當(dāng)用戶輸入文件名,這些命令就由MATLAB執(zhí)行。474849使用subplot則程序?yàn)閤=-1:0.05:1;t0=1.0+0*x;t1=x;t2=2*x.*t1-t0;t3=2*x.*t2-t1;subplot(2,2,1);plot(x,t0,-r);title(Chebeshev T0);xlabel(x);ylabel(y);subplot(2,2,2);plot(x,t1,-b);title(Chebeshev T1

25、);xlabel(x);ylabel(y);subplot(2,2,3);plot(x,t2,:b);title(Chebeshev T2);xlabel(x);ylabel(y);subplot(2,2,4);plot(x,t3,-.r);title(Chebeshev T3);xlabel(x);ylabel(y);50514 用MATLAB編程簡(jiǎn)潔 將一個(gè)完整的命令集合寫入M文件便是一段MATLAB程序,但要注意,編程是在MATLAB的編輯窗口而不是命令窗口。M文件必須有后綴.m(filename.m)。每當(dāng)用戶輸入文件名,這些命令就由MATLAB執(zhí)行。52M文件的兩種形式:命令/腳本(

26、script)文件:命令的簡(jiǎn)單疊加,MATLAB會(huì)自動(dòng)按順序執(zhí)行文件中的命令。這樣就解決了在命令窗中運(yùn)行許多命令的麻煩,還可以避免做許多重復(fù)性的工作。函數(shù) (function)文件:進(jìn)行參數(shù)傳遞和函數(shù)調(diào)用,第一句以function語(yǔ)句為引導(dǎo)。 命令式文件在運(yùn)行過(guò)程中可以調(diào)用MATLAB工作域內(nèi)所有的數(shù)據(jù),而且,所產(chǎn)生的所有變量均為全局變量。即這些變量一旦生成,就一直保存在內(nèi)存空間中,直到用戶執(zhí)行clear為止。 在函數(shù)文件中的變量除特殊聲明外,均為局部變量。5354命令式文件: 由于命令式文件的運(yùn)行相當(dāng)于在命令窗口中逐行輸入并運(yùn)行命令。因此,在編此類文件時(shí),只需把所有要執(zhí)行的命令按行編輯到指定

27、的文件中,且變量不需要預(yù)先定義,也不存在文件名對(duì)應(yīng)問(wèn)題。1)標(biāo)點(diǎn)符號(hào)的運(yùn)用要恰到好處;2)建立好的書寫風(fēng)格,保持程序的可讀性;3)不要忘記m為文件的擴(kuò)展名,最好不要用中文,容易出錯(cuò);4)以%引導(dǎo)的行使注釋行,不可執(zhí)行;5)不需要用end語(yǔ)句作為M文件的結(jié)束標(biāo)志;6)在運(yùn)行此文件時(shí),需要把它所在目錄加到MATLAB的搜索路徑上去,或?qū)⑽募谀夸浽O(shè)為當(dāng)前目錄。55565758用戶自定義函數(shù) MATLAB允許用戶使用M文件定義函數(shù)。函數(shù)名與文件名相同。將下面一段程序存為funsim.mfunction p=funsim(x)% define a simple functionp=sqrt(x)-2

28、*x3+cos(x);y=funsim(1)調(diào)用所給出的函數(shù)是例 求解函數(shù)值解:定義函數(shù)M文件f.m如下:function y=f(a)y=a*(exp(50/a)+exp(-50/a)/2-a-1;保存成文件名為f.m的M文件后,取初值a=5000,在命令窗口輸入 y=f(5000)y =-0.750059注意: (1)函數(shù)名和文件名必須相同 (2)開頭應(yīng)以function語(yǔ)句開始,function后的語(yǔ)句定義函數(shù)名和輸入、輸出參數(shù),在函數(shù)被調(diào)用過(guò)程中將按此輸入輸出格式執(zhí)行。第2條以后可加入注釋行和其他運(yùn)算語(yǔ)句。(3) M函數(shù)中使用的變量,除輸入和輸出變量以外,所有變量都是局部變量,即在該函

29、數(shù)返回之后,這些變量會(huì)自動(dòng)在MATLAB的工作空間中清除掉。如果想使這些中間變量在工作空間中起作用,則應(yīng)該把它們?cè)O(shè)置成全局變量。 全局變量是由MATLAB提供的global命令來(lái)設(shè)置的,一般在M函數(shù)的開頭定義。命令形式為:global a b c 不同的全局變量名用空格隔開。global命令應(yīng)當(dāng)在工作空間和M函數(shù)中都出現(xiàn)。如果只在一方出現(xiàn),則不被承認(rèn)為全局變量。 (4)函數(shù)文件中可調(diào)用其它一般M文件 60函數(shù)的輸出可以多于一個(gè)function x1,x2=quadroot(a,b,c)% solve quadratic equation % ax2+bx+c=0ds=sqrt(b*b-4*a*

30、c);x1=(-b+ds)/2/a;x2=(-b-ds)/2/a;將它存為quadroot.m,它給出二次方程的根,如此定義的函數(shù)可以與MATLAB的內(nèi)部函數(shù)同樣使用。 y1,y2=quadroot(1,8,15)y1 = -3y2 = -561 MATLAB還提供了一般程序語(yǔ)言的基本功能。4.1 for循環(huán)語(yǔ)句 for i=1:n for j=1:m A(i,j)=sin(i+j)/(m+n)+B(i,j); endend for語(yǔ)句一定要有end 作為結(jié)束標(biāo)志,否則下面的輸入都被認(rèn)為是for 循環(huán)之內(nèi)的內(nèi)容;循環(huán)語(yǔ)句中的分號(hào)“;”,可防止中間結(jié)果的輸出;循環(huán)語(yǔ)句書寫成鋸齒形將增加可讀性。6

31、2循環(huán)中的步長(zhǎng)是可以選擇的。如for i=n:-2:n/2 A(i)=sin(i+n);end即循環(huán)控制變量從n開始,步長(zhǎng)是-2到n/2結(jié)束。創(chuàng)建矩陣63A=zeros(5);for k=1:4 A(k,k)=5; A(k,k+1)=1; A(k+1,k)=1;end A(5,5)=5;644.2 while循環(huán)語(yǔ)句 與計(jì)算機(jī)的其他高級(jí)語(yǔ)言一樣,while循環(huán)語(yǔ)句要由關(guān)系運(yùn)算和邏輯運(yùn)算給出的邏輯值控制,該語(yǔ)句的一般形式為while 邏輯表達(dá)式 一族可執(zhí)行語(yǔ)句endMATLAB中的關(guān)系運(yùn)算有= 相等 = 不等 小于 大于 = 大于等于 MATLAB中的邏輯運(yùn)算有 & 與 | 或 非65用x=0.

32、5代入,并把Maclaurin序列的各項(xiàng)相加,直至要加的下一項(xiàng)系數(shù)小于內(nèi)建變量eps.計(jì)算出所加項(xiàng)的個(gè)數(shù)。例 函數(shù)ln(1+x)的Maclaurin序列為:lnsum=0;x=0.5;k=1;while abs(xk)/k)=eps lnsum=lnsum+(-1)(k+1)*(xk)/k); k=k+1;end disp(The sum= ,num2str(lnsum),. ,number of iter= ,num2str(k); The sum= 0.40547,number of iter= 47 給出的結(jié)果66檢驗(yàn)這個(gè)結(jié)果 ln=log(1.5)ln = 0.4055 有時(shí)在循環(huán)正常

33、結(jié)束前終止循環(huán)是有用的,這可以用命令break來(lái)實(shí)現(xiàn)。如果break命令用于嵌套循環(huán)的內(nèi)循環(huán),那么只能終止內(nèi)部循環(huán),外部循環(huán)仍然繼續(xù)。 sum=0;for m=1:100if(sum100)m%當(dāng)sum100時(shí),顯示mbreak;%中止運(yùn)算endsum=sum+m;end 67if logical expression1 statements 1elseif logical expression2 statements2else statements3endif logical expression1 statements 1elseif logical expression2 stateme

34、nts2endif logical expression statements endif logical expression statements 1else statements2end4.3 if條件語(yǔ)句 68for k=1:5 for j=1:5 if k=j A(k,k)=5; elseif abs(k-j)=1 A(k,j)=1; else A(k,j)=0; end endend 創(chuàng)建矩陣69switch logical expressioncase value 1 statements1case value 2 statements2otherwise statementse

35、nd4.4 switch-case條件語(yǔ)句 70function dicetest(result)switch result case 1,3,5 disp(odd number of eyes); case 2,4,6 disp(even number of eyes) otherwise disp(What kind of dice do you have?)end dicetest(1)odd number of eyes dicetest(4)even number of eyes dicetest(7)What kind of dice do you have?檢測(cè)擲一次骰子所得的點(diǎn)

36、數(shù)是單數(shù)還是雙數(shù)714.5 內(nèi)部函數(shù) MATLAB有許多內(nèi)置的庫(kù)函數(shù),除數(shù)學(xué)函數(shù)外,MATLAB還提供許多機(jī)器函數(shù)pause 程序?qū)和T谠摵瘮?shù)所在的位置,擊任意鍵程序繼續(xù)執(zhí)行echo on 在命令窗口顯示正在執(zhí)行的程序指令tic,toc 記時(shí)函數(shù):tic開始記時(shí),toc給出前一個(gè)tic開始的機(jī)器時(shí)間725 其他入門使用MATLAB并不困難,但要非常有效地使用和駕御它,充分發(fā)揮它的效力,則要有比較多的經(jīng)驗(yàn)。5.1 輸入與輸出 在MATLAB的一個(gè)可執(zhí)行語(yǔ)句后,如果不加“;”,語(yǔ)句的執(zhí)行結(jié)果便會(huì)輸出到命令窗口上。所以輸出一個(gè)變量值最簡(jiǎn)單的方法是鍵入變量名并按回車鍵。但這樣的輸出缺少可控性,顯然不

37、能滿足要求。常用的輸出命令主要有“disp”和“fprintf”兩類函數(shù)。 disp(The iteration starts);The iteration starts disp(x);在命令窗口顯示x , x為字符串,如73利用該命令也可以同時(shí)顯示字符和數(shù)字,但要將數(shù)值轉(zhuǎn)化為字符顯示。如 x=3.45; disp(The value of x is ,num2str(x), at this stage); The value of x is 3.45 at this stage更加方便的輸出方式是使用“ fprintf ”函數(shù),例如myf=fopen( output.dat, w);% a

38、fprintf(myf, -計(jì)算結(jié)果-n);status=fclose(myf);74常用文件打開方式文件使用方式含義r(只讀)為輸入打開一個(gè)文本文件w(只寫)為輸出打開(創(chuàng)建)一個(gè)文本文件a向文本文件尾追加數(shù)據(jù)(創(chuàng)建)myf為調(diào)用文件時(shí)返回的文件句柄,文件打開后,可用句柄來(lái)代替該文件。當(dāng)文件成功打開后,會(huì)得到一個(gè)值為正整數(shù)的句柄。有了句柄,在以后對(duì)該文件進(jìn)行操作時(shí),用該句柄代替指定的文件。文件打開失敗時(shí),返回句柄值”-1”。文件使用完后,利用fclose關(guān)閉,當(dāng)關(guān)閉失敗時(shí),返回值為-1,成功為0。75x = 0:.1:1; y = x; exp(x);fid = fopen(exp.txt,w);fprintf(fid,%6.2f %12.8fn,y);fprintf(%6.2f %12.8fn,y);fclose(fid); 0.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論