




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第五講 MatlabMatlab程序設(shè)計(jì)課程提綱 引子引子 M M文件介紹文件介紹 控制語(yǔ)句控制語(yǔ)句 函數(shù)變量及變量作用域函數(shù)變量及變量作用域 程序設(shè)計(jì)的輔助函數(shù)程序設(shè)計(jì)的輔助函數(shù) 程序設(shè)計(jì)的優(yōu)化程序設(shè)計(jì)的優(yōu)化 程序調(diào)試程序調(diào)試 信息接口信息接口 小結(jié)小結(jié)page2引子華氏溫度和攝氏溫度的轉(zhuǎn)換Problem: Problem: 設(shè)計(jì)一個(gè)設(shè)計(jì)一個(gè)MATLAB MATLAB 程序,讀取一個(gè)華氏溫度的程序,讀取一個(gè)華氏溫度的輸入,輸出攝氏溫度。輸入,輸出攝氏溫度。Solution:Solution:Step 1: Step 1: 清晰地陳述出你要解決的問(wèn)題;清晰地陳述出你要解決的問(wèn)題; “將華氏溫度
2、轉(zhuǎn)換為攝氏溫度并輸出將華氏溫度轉(zhuǎn)換為攝氏溫度并輸出”Step 2: Step 2: 確定程序的輸入變量和輸出變量;確定程序的輸入變量和輸出變量; “輸入變量輸入變量:華氏溫度;:華氏溫度;輸出變量輸出變量:攝氏溫度:攝氏溫度”Step 3: Step 3: 設(shè)計(jì)程序偽代碼;設(shè)計(jì)程序偽代碼; % % 讀取華氏溫度:讀取華氏溫度:input input T T(F)(F) % % 溫度轉(zhuǎn)換:溫度轉(zhuǎn)換: % % 輸出攝氏溫度:輸出攝氏溫度:print print T T(C)(C)5(C)( (F)32)9TTpagepage3 3Step 4: Step 4: 將偽代碼轉(zhuǎn)換為將偽代碼轉(zhuǎn)換為Matl
3、abMatlab程序語(yǔ)句程序語(yǔ)句% Script file:temp_conversion.m% Script file:temp_conversion.m% % Purpose:% Purpose:% To convert an input temperature from degrees Fahrenheit to% To convert an input temperature from degrees Fahrenheit to% an output temperature in Celsius.% an output temperature in Celsius.% % Record
4、 of revisions:% Record of revisions:% Date Programmer Description of change% Date Programmer Description of change% = = =% = = =% 21/10/13 Y.Y.Guo Original code% 21/10/13 Y.Y.Guo Original code% % Define variables:% Define variables:% temp_f -Temperature in degrees Fahrenheit% temp_f -Temperature in
5、degrees Fahrenheit% temp_k -Temperature in Celsius% temp_k -Temperature in Celsius% Prompt the user for the input temperature.% Prompt the user for the input temperature.temp_f=input(Enter the temperature in degrees Fahrenheit:);temp_f=input(Enter the temperature in degrees Fahrenheit:);% Convert to
6、 Celsius.% Convert to Celsius.temp_k=(5/9)temp_k=(5/9)* *(temp_f-32);(temp_f-32);% Write out the result.% Write out the result.fprintf(%6.2f degrees Fahrenheit = %6.2f fprintf(%6.2f degrees Fahrenheit = %6.2f Celsius.n,temp_f,temp_k);Celsius.n,temp_f,temp_k);“程序信息程序信息”“名字名字”“用途用途”“修改記錄修改記錄”“變量定義變量定義
7、”“讀取華氏溫度讀取華氏溫度”“溫度轉(zhuǎn)換溫度轉(zhuǎn)換”“輸出攝氏溫度輸出攝氏溫度”pagepage4 4Step 5: Step 5: 調(diào)試程序調(diào)試程序 run(C:Program FilesMATLABR2010abintemp_conversion.m) run(C:Program FilesMATLABR2010abintemp_conversion.m)Enter the temperature in degrees Fahrenheit:120Enter the temperature in degrees Fahrenheit:120120.00 degrees Fahrenheit
8、= 48.89 Celsius.120.00 degrees Fahrenheit = 48.89 Celsius.Enter the temperature in degrees Fahrenheit:100Enter the temperature in degrees Fahrenheit:100100.00 degrees Fahrenheit = 37.78 Celsius.100.00 degrees Fahrenheit = 37.78 Celsius.MatlabMatlab初學(xué)者總是期望,拿到問(wèn)題就能寫(xiě)出漂亮的代碼與完初學(xué)者總是期望,拿到問(wèn)題就能寫(xiě)出漂亮的代碼與完美無(wú)誤的程序
9、,而實(shí)際上這是不可能的!美無(wú)誤的程序,而實(shí)際上這是不可能的!MatlabMatlab程序設(shè)計(jì)中,寫(xiě)代碼只是簡(jiǎn)單的一半,另一半則是程序設(shè)計(jì)中,寫(xiě)代碼只是簡(jiǎn)單的一半,另一半則是問(wèn)題的分析與偽代碼的設(shè)計(jì)!問(wèn)題的分析與偽代碼的設(shè)計(jì)!MatlabMatlab的變量、語(yǔ)句與語(yǔ)法只是的變量、語(yǔ)句與語(yǔ)法只是血肉血肉般的簡(jiǎn)單存在,在任何般的簡(jiǎn)單存在,在任何一種語(yǔ)言中都能找到,而一個(gè)良好的編程習(xí)慣則是一種語(yǔ)言中都能找到,而一個(gè)良好的編程習(xí)慣則是靈魂靈魂般的般的永恒存在!永恒存在!pagepage5 5M M文件介紹MatlabMatlab是一種高級(jí)計(jì)算機(jī)語(yǔ)言,因而也能夠編制一種以是一種高級(jí)計(jì)算機(jī)語(yǔ)言,因而也能夠編
10、制一種以.m.m為為擴(kuò)展名的文本文件,簡(jiǎn)稱擴(kuò)展名的文本文件,簡(jiǎn)稱M M文件文件。MatlabMatlab是一種解釋性語(yǔ)言,命令在運(yùn)行時(shí)被翻譯為機(jī)器語(yǔ)言是一種解釋性語(yǔ)言,命令在運(yùn)行時(shí)被翻譯為機(jī)器語(yǔ)言被執(zhí)行,被執(zhí)行,M M文件就是文件就是命令的集合命令的集合。M M文件是純文本(文件是純文本(ASCIIASCII碼)文件,因而便于進(jìn)行編寫(xiě)和修改。碼)文件,因而便于進(jìn)行編寫(xiě)和修改。擴(kuò)展名必須為擴(kuò)展名必須為.m.m。M M文件分類:文件分類:p 命令式(命令式(ScriptScript):命令行的簡(jiǎn)單疊加):命令行的簡(jiǎn)單疊加p 函數(shù)式(函數(shù)式(FunctionFunction):參數(shù)傳遞和函數(shù)調(diào)用):
11、參數(shù)傳遞和函數(shù)調(diào)用pagepage6 6M M文件建立與編輯M M文件建立:文件建立:p Matlab Matlab窗口中菜單項(xiàng)窗口中菜單項(xiàng)FileFile-OpenOpenp 單擊圖標(biāo)單擊圖標(biāo) ,打開(kāi)一個(gè),打開(kāi)一個(gè)M M文件文件p 找到找到M M文件,直接雙擊打開(kāi)文件,直接雙擊打開(kāi)M M文件編輯:文件編輯:p Matlab Matlab窗口中菜單項(xiàng)窗口中菜單項(xiàng)FileFile-NewNew-ScriptScript/ /FunctionFunctionp 單擊圖標(biāo)單擊圖標(biāo) ,新建一個(gè),新建一個(gè)M M文件文件pagepage7 7命令式文件(ScriptScript)命令式文件的運(yùn)行相當(dāng)于在命
12、令窗口(命令式文件的運(yùn)行相當(dāng)于在命令窗口(Command WindowCommand Window)中逐行輸入并運(yùn)行命令。需注意一下幾點(diǎn):中逐行輸入并運(yùn)行命令。需注意一下幾點(diǎn): 標(biāo)點(diǎn)符號(hào)的運(yùn)用要恰當(dāng)好處,每行命令結(jié)束時(shí)用分號(hào)隔標(biāo)點(diǎn)符號(hào)的運(yùn)用要恰當(dāng)好處,每行命令結(jié)束時(shí)用分號(hào)隔開(kāi),以免程序運(yùn)行時(shí)數(shù)據(jù)輸出造成不便;開(kāi),以免程序運(yùn)行時(shí)數(shù)據(jù)輸出造成不便; 建立良好的書(shū)寫(xiě)風(fēng)格,保持程序的可讀性,比如程序的建立良好的書(shū)寫(xiě)風(fēng)格,保持程序的可讀性,比如程序的層次感,注釋行的書(shū)寫(xiě);層次感,注釋行的書(shū)寫(xiě); 注釋行以符號(hào)注釋行以符號(hào)% %開(kāi)頭,在程序運(yùn)行中不被執(zhí)行,只起解開(kāi)頭,在程序運(yùn)行中不被執(zhí)行,只起解釋說(shuō)明作用;
13、釋說(shuō)明作用; 不需要用不需要用endend語(yǔ)句作為命令式文件的結(jié)束標(biāo)志;語(yǔ)句作為命令式文件的結(jié)束標(biāo)志; 運(yùn)行此文件時(shí),將其目錄設(shè)置為當(dāng)前目錄。運(yùn)行此文件時(shí),將其目錄設(shè)置為當(dāng)前目錄。pagepage8 8實(shí)例實(shí)例1 1:建立一命令式:建立一命令式M M文件繪制文件繪制MatlabMatlab的的LOGOLOGO圖圖Life is too short to spend writing DO loops.% Script file: logotu.m% Script file: logotu.m% % Purpose:% Purpose:% This file is to create the %
14、This file is to create the Logo of Logo of % Matlab software% Matlab softwareload logoload logosurf(L,R), colormap(M)surf(L,R), colormap(M)n=size(L,1)n=size(L,1)axis offaxis offaxis(1 n 1 n -.2 .8)axis(1 n 1 n -.2 .8)view(-37.5,30)view(-37.5,30)title(Life is too short to title(Life is too short to s
15、pend writing DO loops.)spend writing DO loops.)pagepage9 9函數(shù)式文件(FunctionFunction)函數(shù)式文件可以實(shí)現(xiàn)計(jì)算中的參數(shù)傳遞。函數(shù)式的標(biāo)志是第函數(shù)式文件可以實(shí)現(xiàn)計(jì)算中的參數(shù)傳遞。函數(shù)式的標(biāo)志是第1 1行為行為functionfunction語(yǔ)句。語(yǔ)句。 函數(shù)式可以有返回值,函數(shù)式可以有返回值,也可有無(wú)返回值;也可有無(wú)返回值; 函數(shù)式文件名與函數(shù)函數(shù)式文件名與函數(shù)名應(yīng)名應(yīng)一一對(duì)應(yīng)一一對(duì)應(yīng); 函數(shù)式中的變量?jī)H在函數(shù)式中的變量?jī)H在函數(shù)內(nèi)部起作用,為局部函數(shù)內(nèi)部起作用,為局部變量;變量; 養(yǎng)成良好的注釋習(xí)慣,養(yǎng)成良好的注釋習(xí)慣,方
16、便自己,方便他人。方便自己,方便他人。functionfunction outarg1, outarg1, outarg2, . = outarg2, . = fnamefname(inarg1, inarg2, .)(inarg1, inarg2, .)% H1 comment line% H1 comment line% Other comment lines% Other comment lines.( (Executable codeExecutable code) ).(return)(return)helphelp命令運(yùn)行后將顯示命令運(yùn)行后將顯示M M文件注釋語(yǔ)句中的第一個(gè)連續(xù)塊,
17、文件注釋語(yǔ)句中的第一個(gè)連續(xù)塊,被空行隔離的其它注釋語(yǔ)句,將被忽略;被空行隔離的其它注釋語(yǔ)句,將被忽略;lookforlookfor顯示第一個(gè)注釋行內(nèi)容,為了便于被搜索,第一顯示第一個(gè)注釋行內(nèi)容,為了便于被搜索,第一行注釋盡可能包含特征信息。行注釋盡可能包含特征信息。pagepage1010實(shí)例實(shí)例2 2:建立求一個(gè)向量元素平均值的函數(shù):建立求一個(gè)向量元素平均值的函數(shù)function y=average(x)function y=average(x)% AVERAGE % AVERAGE 求向量元素的平均值求向量元素的平均值% % 語(yǔ)法語(yǔ)法%y=average(x)%y=average(x)%
18、% 其中,其中,x x是向量,是向量,y y為計(jì)算得到向量元為計(jì)算得到向量元素的均值素的均值% % 若輸入?yún)?shù)為非向量時(shí)則出錯(cuò)若輸入?yún)?shù)為非向量時(shí)則出錯(cuò)% % 代碼行代碼行m,n=size(x);m,n=size(x);% % 判斷輸入?yún)?shù)是否為向量判斷輸入?yún)?shù)是否為向量if(m=1)|(n=1)|(m=1& n=1)if(m=1)|(n=1)|(m=1& n=1) % % 若輸入?yún)?shù)不是向量,則出錯(cuò)若輸入?yún)?shù)不是向量,則出錯(cuò) error(Input must be a vector!)error(Input must be a vector!)endend% % 計(jì)算向量元素的平均值計(jì)算向量
19、元素的平均值y=sum(x)/length(x);y=sum(x)/length(x); x=1:10; x=1:10; y=average(x) y=average(x)y =y = 5.5000 5.5000 x=2 4 6 8 10; x=2 4 6 8 10; y=average(x) y=average(x)y =y = 6 6pagepage1111控制語(yǔ)句p 順序語(yǔ)句順序語(yǔ)句p 選擇語(yǔ)句選擇語(yǔ)句p 分支語(yǔ)句分支語(yǔ)句p 循環(huán)語(yǔ)句循環(huán)語(yǔ)句p 人機(jī)交互語(yǔ)句人機(jī)交互語(yǔ)句pagepage1212順序語(yǔ)句MatlabMatlab程序的命令語(yǔ)句按固定的順序一個(gè)接一個(gè)的執(zhí)行,這程序的命令語(yǔ)句按固
20、定的順序一個(gè)接一個(gè)的執(zhí)行,這樣的程序稱為樣的程序稱為順序語(yǔ)句順序語(yǔ)句。% Script file: % Script file: logotu.mlogotu.m% % Purpose:% Purpose:% This file is to create the % This file is to create the Logo of Logo of % Matlab software% Matlab softwareload logoload logosurf(L,R), surf(L,R), colormapcolormap(M)(M)n=size(L,1)n=size(L,1)axis
21、offaxis offaxis(1 n 1 n -.2 .8)axis(1 n 1 n -.2 .8)view(-37.5,30)view(-37.5,30)title(Life is too short to title(Life is too short to spend writing DO loops.)spend writing DO loops.)順序語(yǔ)句只能實(shí)現(xiàn)簡(jiǎn)單的功順序語(yǔ)句只能實(shí)現(xiàn)簡(jiǎn)單的功能,而在解決實(shí)際問(wèn)題時(shí)往能,而在解決實(shí)際問(wèn)題時(shí)往往會(huì)面臨往會(huì)面臨選擇執(zhí)行特定命令選擇執(zhí)行特定命令及及重復(fù)性執(zhí)行特定命令重復(fù)性執(zhí)行特定命令的情的情形,因而需要學(xué)習(xí)選擇語(yǔ)句形,因而需要學(xué)習(xí)選擇語(yǔ)
22、句及循環(huán)語(yǔ)句。及循環(huán)語(yǔ)句。pagepage1313選擇語(yǔ)句選擇語(yǔ)句可以使選擇語(yǔ)句可以使MATLAB MATLAB 選擇性執(zhí)行指定區(qū)域內(nèi)的代碼選擇性執(zhí)行指定區(qū)域內(nèi)的代碼( (稱之為語(yǔ)句塊稱之為語(yǔ)句塊blocks)blocks),而跳過(guò)其他區(qū)域的代碼。,而跳過(guò)其他區(qū)域的代碼。ifif control_expr_1control_expr_1Statements (Statements (block block 1 1) )elseifelseif control_expr_2control_expr_2Statements (Statements (block block 2 2) )elseif
23、elseif control_expr_3control_expr_3Statements (Statements (block block 3 3) )elseelseStatements (Statements (block block 4 4) )endend 判斷表達(dá)式判斷表達(dá)式control_exprcontrol_expr緊跟在緊跟在ifif或或elseifelseif后面;后面; 若判斷表達(dá)式的結(jié)果為若判斷表達(dá)式的結(jié)果為1 1,則執(zhí)行其后的命令語(yǔ)句塊則執(zhí)行其后的命令語(yǔ)句塊(blockblock),若結(jié)果為),若結(jié)果為0 0,則,則跳過(guò)其后的命令語(yǔ)句塊;跳過(guò)其后的命令語(yǔ)句塊; 某一
24、命令語(yǔ)句塊被執(zhí)行后,某一命令語(yǔ)句塊被執(zhí)行后,程序跳至程序跳至endend語(yǔ)句后一可執(zhí)語(yǔ)句后一可執(zhí)行語(yǔ)句;行語(yǔ)句; elseifelseif語(yǔ)句可有任意個(gè),語(yǔ)句可有任意個(gè),elseelse語(yǔ)句最多只有一個(gè)。語(yǔ)句最多只有一個(gè)。pagepage1414實(shí)例實(shí)例3 3:輸入三角形三邊長(zhǎng),求面積:輸入三角形三邊長(zhǎng),求面積 % Script file: triarea.m % Script file: triarea.m% This program is to calculate the area % This program is to calculate the area of a triangula
25、rof a triangularA=input(A=input(請(qǐng)輸入三角形的三條邊請(qǐng)輸入三角形的三條邊( (數(shù)組形式數(shù)組形式) ):);); if A(1)+A(2)A(3) & A(1)+A(3)A(2) & if A(1)+A(2)A(3) & A(1)+A(3)A(2) & A(2)+A(3)A(1)A(2)+A(3)A(1) p=(A(1)+A(2)+A(3)/2; p=(A(1)+A(2)+A(3)/2; s=sqrt(p s=sqrt(p* *(p-A(1)(p-A(1)* *(p-A(2)(p-A(2)* *(p-(p-A(3);A(3); disp(s); disp(s);
26、else else disp( disp(不能構(gòu)成一個(gè)三角形。不能構(gòu)成一個(gè)三角形。) end end run(C:Program run(C:Program FilesMATLABR2010abintriarea.FilesMATLABR2010abintriarea.m)m)請(qǐng)輸入三角形的三條邊請(qǐng)輸入三角形的三條邊( (數(shù)組形式數(shù)組形式) ):3 4 53 4 5 6 6 run(C:Program run(C:Program FilesMATLABR2010abintriarea.FilesMATLABR2010abintriarea.m)m)請(qǐng)輸入三角形的三條邊請(qǐng)輸入三角形的三條邊( (
27、數(shù)組形式數(shù)組形式) ):1 2 31 2 3不能構(gòu)成一個(gè)三角形。不能構(gòu)成一個(gè)三角形。()()()Sp papbpc三角形面積三角形面積海倫公式海倫公式:1()2pabc其中:其中:pagepage1515實(shí)例實(shí)例4 4:求一元二次方程的根:求一元二次方程的根20(0)axbxcaStep 1: Step 1: 清晰地陳述出你要解決的問(wèn)題;清晰地陳述出你要解決的問(wèn)題; “求一個(gè)一元二次方程的根求一個(gè)一元二次方程的根”Step 2: Step 2: 確定程序的輸入變量和輸出變量;確定程序的輸入變量和輸出變量; “輸入變量輸入變量:方程系數(shù):方程系數(shù)a a, , b b, , c c;輸出變量輸出變
28、量:兩根:兩根x x1 1, , x x2 2”Step 3: Step 3: 設(shè)計(jì)程序偽代碼;設(shè)計(jì)程序偽代碼;% % 輸入方程系數(shù)輸入方程系數(shù) input input a a, , b b, , c c% % 求根過(guò)程求根過(guò)程:% % 求根公式求根公式242bbacxa 偽代碼整體框架:偽代碼整體框架: 輸入方程系數(shù);輸入方程系數(shù); 求根過(guò)程;求根過(guò)程; 輸出求根結(jié)果。輸出求根結(jié)果。pagepage1616Step 3: Step 3: 設(shè)計(jì)程序偽代碼設(shè)計(jì)程序偽代碼- -續(xù)續(xù)% % ifif% % % else ifelse if% % elseelse ( (對(duì)對(duì)應(yīng)應(yīng) ) )% % end
29、 end% % 輸出結(jié)果輸出結(jié)果 print print x x1 1, , x x2 2240bac21224242bbacxabbacxa 240bac122bxxa 240bac2122422422bacbxiaabacbxiaa TipsTips: 偽代碼的設(shè)計(jì)偽代碼的設(shè)計(jì)由上由上而下而下,先分析總體框架,先分析總體框架,再局部細(xì)化;再局部細(xì)化; 偽代碼不是真實(shí)的偽代碼不是真實(shí)的MatlabMatlab代碼,其書(shū)寫(xiě)類代碼,其書(shū)寫(xiě)類似于數(shù)學(xué)表達(dá)式;似于數(shù)學(xué)表達(dá)式; 偽代碼只需在草稿偽代碼只需在草稿紙上書(shū)寫(xiě),力求簡(jiǎn)潔、紙上書(shū)寫(xiě),力求簡(jiǎn)潔、整齊、清晰。整齊、清晰。pagepage1717St
30、ep 4: Step 4: 將偽代碼轉(zhuǎn)換為將偽代碼轉(zhuǎn)換為MatlabMatlab程序語(yǔ)句程序語(yǔ)句% % Script fileScript file: calc_roots.m: calc_roots.m% % % PurposePurpose: :% This program solves for the roots of a quadratic equation% This program solves for the roots of a quadratic equation% of the form a% of the form a* *x2 + bx2 + b* *x + c = 0
31、. It calculates the answersx + c = 0. It calculates the answers% regardless of the type of roots that the equation possesses.% regardless of the type of roots that the equation possesses.% % % Record of revisionsRecord of revisions: :% Date Programmer Description of change% Date Programmer Descripti
32、on of change% = = =% = = =% 21/10/13 Y.Y.Guo Original code% 21/10/13 Y.Y.Guo Original code% % % Define variablesDefine variables: :% a -Coefficient of x2 term of equation% a -Coefficient of x2 term of equation% b -Coefficient of x term of equation% b -Coefficient of x term of equation% c -Constant t
33、erm of equation% c -Constant term of equation% discriminant -Discriminant of the equation% discriminant -Discriminant of the equation% imag_part -Imag part of equation (for complex roots)% imag_part -Imag part of equation (for complex roots)% real_part -Real part of equation (for complex roots)% rea
34、l_part -Real part of equation (for complex roots)% x1 -First solution of equation (for real roots)% x1 -First solution of equation (for real roots)% x2 -Second solution of equation (for real roots)% x2 -Second solution of equation (for real roots)“名字名字”“用途用途”“修改記錄修改記錄”“變量定義變量定義”“程序信息程序信息”TipsTips: 一
35、般而言,變一般而言,變量的定義可以在量的定義可以在后續(xù)程序編寫(xiě)過(guò)后續(xù)程序編寫(xiě)過(guò)程中進(jìn)行,每出程中進(jìn)行,每出現(xiàn)一個(gè)新的變量現(xiàn)一個(gè)新的變量時(shí),則在程序段時(shí),則在程序段前面進(jìn)行定義;前面進(jìn)行定義; 若為物理變量,若為物理變量,則最好將其單位則最好將其單位列出。列出。pagepage1818Step 4: Step 4: 將偽代碼轉(zhuǎn)換為將偽代碼轉(zhuǎn)換為MatlabMatlab程序語(yǔ)句程序語(yǔ)句- -續(xù)續(xù)% Prompt the user for the coefficients of the equation% Prompt the user for the coefficients of the equ
36、ationdisp (This program solves for the roots of a quadratic );disp (This program solves for the roots of a quadratic );disp (equation of the form Adisp (equation of the form A* *X2 + BX2 + B* *X + C = 0.);X + C = 0.);a = input(Enter the coefficient A: );a = input(Enter the coefficient A: );b = input
37、(Enter the coefficient B: );b = input(Enter the coefficient B: );c = input(Enter the coefficient C: );c = input(Enter the coefficient C: );% % Calculate discriminantCalculate discriminantdiscriminant = b2 - 4 discriminant = b2 - 4 * * a a * * c; c;% Solve for the roots, depending on the value of the
38、 % Solve for the roots, depending on the value of the discriminant.discriminant.ifif discriminant 0 discriminant 0 % there are two real roots, so .% there are two real roots, so .x1 = (-b + sqrt(discriminant) / (2x1 = (-b + sqrt(discriminant) / (2* *a);a);x2 = (-b - sqrt(discriminant) / (2x2 = (-b -
39、 sqrt(discriminant) / (2* *a);a);disp(This equation has two real roots:);disp(This equation has two real roots:);fprintf(x1 = %fn, x1);fprintf(x1 = %fn, x1);fprintf(x2 = %fn, x2);fprintf(x2 = %fn, x2);elseifelseif discriminant = 0 discriminant = 0 % there is one repeated root, so .% there is one rep
40、eated root, so .x1 = ( -b ) / (2x1 = ( -b ) / (2* *a);a);disp(This equation has two identical real roots:);disp(This equation has two identical real roots:);fprintf(x1 = x2 = %fn, x1);fprintf(x1 = x2 = %fn, x1);“輸入方程系數(shù)輸入方程系數(shù)”“計(jì)算方程判別式計(jì)算方程判別式”“方程有兩不等方程有兩不等 實(shí)根的情況實(shí)根的情況”“方程有兩相等方程有兩相等 實(shí)根的情況實(shí)根的情況”pagepage1
41、919Step 4: Step 4: 將偽代碼轉(zhuǎn)換為將偽代碼轉(zhuǎn)換為MatlabMatlab程序語(yǔ)句程序語(yǔ)句- -續(xù)續(xù)elseelse % there are complex roots, % there are complex roots, so .so .real_part = (-b) / (2real_part = (-b) / (2* *a);a);imag_part = sqrt( abs(discriminant) imag_part = sqrt( abs(discriminant) / (2/ (2* *a);a);disp(This equation has complex
42、disp(This equation has complex roots:);roots:);fprintf(x1 = %f + i %f fprintf(x1 = %f + i %f n,real_part, imag_part);n,real_part, imag_part);fprintf(x1 + %f - i %f n, fprintf(x1 + %f - i %f n, real_part, imag_part);real_part, imag_part);endend“方程有兩共軛方程有兩共軛復(fù)根的情況復(fù)根的情況”Step 5: Step 5: 調(diào)試程序調(diào)試程序 run(C:Pr
43、ogram run(C:Program FilesMATLABR2010abincalc_roots.m)FilesMATLABR2010abincalc_roots.m)This program solves for the roots of a quadratic This program solves for the roots of a quadratic equation of the form Aequation of the form A* *X2 + BX2 + B* *X + C = 0.X + C = 0.Enter the coefficient A: 1Enter th
44、e coefficient A: 1Enter the coefficient B: 4Enter the coefficient B: 4Enter the coefficient C: 3Enter the coefficient C: 3This equation has two real roots:This equation has two real roots:x1 = -1.000000 x2 = -3.000000 x1 = -1.000000 x2 = -3.000000212430(1,3)xxxx pagepage2020Step 5: Step 5: 調(diào)試程序調(diào)試程序-
45、 -續(xù)續(xù) run(C:Program run(C:Program FilesMATLABR2010abincalc_roots.m)FilesMATLABR2010abincalc_roots.m)This program solves for the roots of a quadratic This program solves for the roots of a quadratic equation of the form Aequation of the form A* *X2 + BX2 + B* *X + C = 0.X + C = 0.Enter the coefficient
46、 A: 1Enter the coefficient A: 1Enter the coefficient B: 2Enter the coefficient B: 2Enter the coefficient C: 1Enter the coefficient C: 1This equation has two identical real roots:This equation has two identical real roots:x1 = x2 = -1.000000 x1 = x2 = -1.000000212210(1)xxxx run(C:Program run(C:Progra
47、m FilesMATLABR2010abincalc_roots.m)FilesMATLABR2010abincalc_roots.m)This program solves for the roots of a quadratic This program solves for the roots of a quadratic equation of the form Aequation of the form A* *X2 + BX2 + B* *X + C = 0.X + C = 0.Enter the coefficient A: 1Enter the coefficient A: 1
48、Enter the coefficient B: 1Enter the coefficient B: 1Enter the coefficient C: 1Enter the coefficient C: 1This equation has complex roots:This equation has complex roots:x1 = -0.500000 + i 0.866025 x1 = -0.500000 + i 0.866025 x1 = -0.500000 - i 0.866025x1 = -0.500000 - i 0.866025212101313(,)2222xxxixi
49、 pagepage2121分支語(yǔ)句switchswitch ( (switch_exprswitch_expr) )casecase case_expr_1, case_expr_1,Statements (Statements (block 1block 1) )casecase case_expr_2, case_expr_2,Statements (Statements (block 2block 2) )otherwiseotherwise, ,Statements (Statements (block 3block 3) )endend分支語(yǔ)句是一種特殊的選擇語(yǔ)句,可以實(shí)現(xiàn)多種情況下
50、分支語(yǔ)句是一種特殊的選擇語(yǔ)句,可以實(shí)現(xiàn)多種情況下的開(kāi)關(guān)控制。的開(kāi)關(guān)控制。 switch_exprswitch_expr 可以是數(shù)可以是數(shù)字、字符串或者邏輯變量;字、字符串或者邏輯變量; 當(dāng)當(dāng)case_exprcase_expr表達(dá)式與表達(dá)式與switch_exprswitch_expr相符時(shí),其后相符時(shí),其后的命令語(yǔ)句塊的命令語(yǔ)句塊(block)(block)將被將被執(zhí)行,不符時(shí),其后的命令執(zhí)行,不符時(shí),其后的命令語(yǔ)句塊將被跳過(guò);語(yǔ)句塊將被跳過(guò); 當(dāng)某一命令語(yǔ)句塊被執(zhí)當(dāng)某一命令語(yǔ)句塊被執(zhí)行后,程序跳至行后,程序跳至endend語(yǔ)句后語(yǔ)句后一可執(zhí)行語(yǔ)句。一可執(zhí)行語(yǔ)句。pagepage2222實(shí)例
51、實(shí)例5 5:分支語(yǔ)句的簡(jiǎn)單應(yīng)用:分支語(yǔ)句的簡(jiǎn)單應(yīng)用num=input(num=input(請(qǐng)輸入一個(gè)數(shù):請(qǐng)輸入一個(gè)數(shù):););switch numswitch numcase -1case -1disp(I am a teacher.);disp(I am a teacher.);case 0case 0disp(I am a student.);disp(I am a student.);case 1case 1disp(You are a teacher.);disp(You are a teacher.);otherwiseotherwisedisp(You are a student.
52、);disp(You are a student.);endendpagepage2323循環(huán)語(yǔ)句實(shí)際問(wèn)題中,需要反復(fù)執(zhí)行某些語(yǔ)句,這時(shí)就需要用到實(shí)際問(wèn)題中,需要反復(fù)執(zhí)行某些語(yǔ)句,這時(shí)就需要用到循環(huán)語(yǔ)句。循環(huán)語(yǔ)句。在循環(huán)語(yǔ)句中,一組被重復(fù)執(zhí)行的語(yǔ)句稱為在循環(huán)語(yǔ)句中,一組被重復(fù)執(zhí)行的語(yǔ)句稱為循環(huán)體循環(huán)體,每,每循環(huán)一次,都必須做出判斷,是繼續(xù)循環(huán)執(zhí)行還是終止循環(huán)一次,都必須做出判斷,是繼續(xù)循環(huán)執(zhí)行還是終止執(zhí)行跳出循環(huán),這個(gè)判斷的依據(jù)稱為執(zhí)行跳出循環(huán),這個(gè)判斷的依據(jù)稱為循環(huán)的終止條件循環(huán)的終止條件。循環(huán)語(yǔ)句分類:循環(huán)語(yǔ)句分類:p forfor循環(huán):循環(huán)前循環(huán)次數(shù)已知;循環(huán):循環(huán)前循環(huán)次數(shù)已知;p
53、whilewhile循環(huán):循環(huán)前循環(huán)次數(shù)未知。循環(huán):循環(huán)前循環(huán)次數(shù)未知。pagepage2424循環(huán)語(yǔ)句之“forfor循環(huán)”forfor循環(huán)以指定的數(shù)目重復(fù)地執(zhí)行特定的語(yǔ)句塊。循環(huán)以指定的數(shù)目重復(fù)地執(zhí)行特定的語(yǔ)句塊。for for index=index=exprexpr1:1:exprexpr2:2:expexpr r3 3 statement 1statement 1 statement statement n nendend exprexpr1 1為循環(huán)變量為循環(huán)變量indexindex的初始值,的初始值,exprexpr2 2為為indexindex的步長(zhǎng),的步長(zhǎng),exprexpr3
54、 3為為indexindex的終值;的終值; 當(dāng)步長(zhǎng)當(dāng)步長(zhǎng)exprexpr2=12=1時(shí),時(shí),可以省略不寫(xiě)??梢允÷圆粚?xiě)。Example 1Example 1:for for i=1:2:9i=1:2:9 endendExample 2Example 2:for for i=1:9i=1:9 endendpagepage2525實(shí)例實(shí)例6 6:已知向量:已知向量t=-1 0 13 5t=-1 0 13 5,生成其,生成其VandermondeVandermonde矩陣矩陣 t=-1 0 1 3 5; t=-1 0 1 3 5; n=max(size(t); n=max(size(t); for
55、for j=1:n j=1:nforfor i=1:n i=1:na(i,j)=t(i)(n-j);a(i,j)=t(i)(n-j);endendendend a aa =a = 1 -1 1 -1 1 -1 1 -1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 81 27 9 3 81 27 9 3 1 1 625 125 25 5 625 125 25 5 1 1 a(:,n)=ones(n,1); a(:,n)=ones(n,1); for for j=n-1:-1:1j=n-1:-1:1a(:,j)=t.a(:,j)=t.* *a(:,j+1
56、);a(:,j+1);endend a aa =a = 1 -1 1 -1 1 1 -1 1 -1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 81 27 9 3 1 81 27 9 3 1 625 125 25 5 1 625 125 25 5 1另一種方案另一種方案pagepage2626實(shí)例實(shí)例7 7:計(jì)算給定日期是一年中的第幾天:計(jì)算給定日期是一年中的第幾天Step 1: Step 1: 清晰地陳述出你要解決的問(wèn)題;清晰地陳述出你要解決的問(wèn)題; “計(jì)算給定的一天是這一年中的第幾天計(jì)算給定的一天是這一年中的第幾天”Step 2: Step 2: 確
57、定程序的輸入變量和輸出變量;確定程序的輸入變量和輸出變量; “輸入變量輸入變量:年:年year, year, 月月month, month, 日日dayday; 輸出變量輸出變量:一年中的第幾天:一年中的第幾天day_of_yearday_of_year”Step 3: Step 3: 設(shè)計(jì)程序偽代碼;設(shè)計(jì)程序偽代碼;偽代碼整體框架:偽代碼整體框架: 輸入年、月、日;輸入年、月、日; 計(jì)算第幾天計(jì)算第幾天: 先加上當(dāng)月的天數(shù);先加上當(dāng)月的天數(shù); 加上這一年往月的加上這一年往月的天數(shù),若包括二月,天數(shù),若包括二月,則需考慮是否為閏年;則需考慮是否為閏年; 輸出計(jì)算結(jié)果。輸出計(jì)算結(jié)果。% % 輸入
58、年、月、日輸入年、月、日input year, month, dayinput year, month, day% % 計(jì)算第幾天計(jì)算第幾天% % 首先判斷年份是否為閏年首先判斷年份是否為閏年ifif year/400 year/400余余0 0 是閏年是閏年 leap_day=1leap_day=1else if else if year/100year/100余余0 0 不是閏不是閏年年 leap_day=0leap_day=0pagepage2727Step 3: Step 3: 設(shè)計(jì)程序偽代碼設(shè)計(jì)程序偽代碼- -續(xù)續(xù)elseifelseif year/4 year/4余余0 0 是閏年
59、是閏年 leap_day=1leap_day=1elseelse 不是閏年不是閏年 leap_day=0 %leap_day=0 %四年一閏;百年不閏四年一閏;百年不閏, ,四百年再閏四百年再閏endend% % 開(kāi)始計(jì)算第幾天開(kāi)始計(jì)算第幾天% % 首先加上當(dāng)月的天數(shù)首先加上當(dāng)月的天數(shù)day_of_year=dayday_of_year=day% % 加上這一年往月的天數(shù)加上這一年往月的天數(shù)forfor i=1:month-1 i=1:month-1 switchswitch (i) (i) case 1, 3, 5, 7, 8,10 case 1, 3, 5, 7, 8,10 day_of_
60、year=day_of_year+31day_of_year=day_of_year+31 case 4, 6, 9, 11 case 4, 6, 9, 11 day_of_year=day_of_year+30day_of_year=day_of_year+30 case 2 case 2 day_of_year=day_of_year+28+leap_dayday_of_year=day_of_year+28+leap_day endendendend% % 輸出結(jié)果輸出結(jié)果 print day_of_yearprint day_of_yearpagepage2828Step 4: Ste
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 乳品工藝技術(shù)創(chuàng)新與發(fā)展考核試卷
- 勘察項(xiàng)目項(xiàng)目管理氣候變化與勘察應(yīng)對(duì)策略考核試卷
- 批發(fā)市場(chǎng)的產(chǎn)品陳列與促銷(xiāo)技巧考核試卷
- 施工監(jiān)督與試車(chē)開(kāi)車(chē)中安全注意事項(xiàng)考核試卷
- 小學(xué)生天氣安全教育課件
- 農(nóng)田土壤售賣(mài)合同范本
- 個(gè)人產(chǎn)品交易合同范本
- 玻璃浴房合同范本
- 委托裝修安全合同范本
- 礦供銷(xiāo)合同范本
- 《供熱工程》課件
- 半導(dǎo)體安全培訓(xùn)
- 倉(cāng)管員業(yè)務(wù)技能培訓(xùn)
- 安全管理人員七大職責(zé)
- 《國(guó)民經(jīng)濟(jì)行業(yè)分類與代碼》
- 音樂(lè)教育國(guó)際化進(jìn)程-洞察分析
- 2025年中鐵特貨物流股份限公司招聘畢業(yè)生52人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 1學(xué)會(huì)尊重-尊重自己(說(shuō)課稿 )-2023-2024學(xué)年道德與法治六年級(jí)下冊(cè)統(tǒng)編版
- 植入式靜脈給藥裝置護(hù)理技術(shù)課件
- 單兵綜合演練
- 疼痛中醫(yī)護(hù)理
評(píng)論
0/150
提交評(píng)論