版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MATLAB 數(shù)學(xué)建?;A(chǔ)教程數(shù)學(xué)建?;A(chǔ)教程主講者:高陳燕主講者:高陳燕MATLAB數(shù)學(xué)建?;A(chǔ)教程數(shù)學(xué)建?;A(chǔ)教程MATLAB的概述的概述MATLAB程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)MATLAB在數(shù)值計(jì)算中的應(yīng)用在數(shù)值計(jì)算中的應(yīng)用MATLAB的符號(hào)計(jì)算的符號(hào)計(jì)算MATLAB的圖形處理的圖形處理MATLAB程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)uMATLAB語(yǔ)言的基本要素uMATLAB語(yǔ)言的核心矩陣u單元型數(shù)據(jù)和結(jié)構(gòu)型數(shù)據(jù)uM文件u流程控制語(yǔ)句2021年12月13日10時(shí)07分4MATLAB語(yǔ)言的基本要素語(yǔ)言的基本要素v變量變量 變量不需要事先聲明,也不需要指定變量類型,它會(huì)自動(dòng)根據(jù)所賦予變量的值或?qū)ψ兞康牟僮鱽?lái)
2、確定變量的類型;賦值過(guò)程中,如果變量已存在,則用新值代替舊值,以新的類型代替舊的類型。 變量的命名規(guī)則:l變量名區(qū)分大小寫;l變量名長(zhǎng)度不超過(guò)31位,第31位之后的字符被忽略;l變量名以字母開頭,變量名中可以包含字母、數(shù)字、下劃線,但不能使用標(biāo)點(diǎn)。 變量一般為局部變量,即僅在其調(diào)用的M文件內(nèi)部有效;若要定義全局變量,須在變量前加關(guān)鍵字global。 Matlab語(yǔ)言主要是由幾個(gè)基本要素構(gòu)建而成的,其中包括變量、常量、數(shù)值、字符串、運(yùn)算符及標(biāo)點(diǎn)等。回到主目錄回到主目錄2021年12月13日10時(shí)07分5v常量常量 matlab中預(yù)定義的一些特殊的量。 i,j 虛數(shù)單位 Realmin 最小的正浮
3、點(diǎn)數(shù), pi 圓周率 Realmax 最大的浮點(diǎn)數(shù), eps 浮點(diǎn)運(yùn)算的相對(duì)精度 Inf 無(wú)窮大 NaN Not-a-Number ,表示不定值 例如:pians = %ans是默認(rèn)的結(jié)果變量 3.14161102221023252102021年12月13日10時(shí)07分61/0Warning: Divide by zero.ans = Inf0/0Warning: Divide by zero.ans = NaN2021年12月13日10時(shí)07分7 定義變量時(shí)應(yīng)避免與常量名相同,如果改變了某個(gè)常量的值,可以用“clear+常量名”命令來(lái)恢復(fù)該常量的初始設(shè)定值。pi=1pi = 1clear p
4、ipians = 3.14162021年12月13日10時(shí)07分8v數(shù)值數(shù)值 數(shù)值缺省為實(shí)數(shù)保留小數(shù)點(diǎn)后4位浮點(diǎn)數(shù)表示。其輸入格式與C語(yǔ)言一致:如:9 -73 0.1999 1.475e6 輸出格式由format命令控制,只是影響屏幕顯示效果,不影響內(nèi)部存儲(chǔ)和計(jì)算。下面以pi為例。format long;pians = 3.14159265358979format long e;pians = 3.141592653589793e+000format long g;pians = 3.141592653589792021年12月13日10時(shí)07分9 z=2*exp(pi/3i)z = 1.00
5、00 + 1.7321iMatlab語(yǔ)言還提供了復(fù)數(shù)的表達(dá)和運(yùn)算功能。復(fù)數(shù)的基本單位表示為i或j。例如: 如果是表達(dá)式,必須在虛部的數(shù)值與i、j之間使用乘號(hào)。 sin(pi/3)+cos(pi/3)j? sin(pi/3)+cos(pi/3)j Error: Unexpected MATLAB expression. sin(pi/3)+cos(pi/3)*jans = 0.8660 + 0.5000i2021年12月13日10時(shí)07分10v字符串字符串字符串用單引號(hào)輸入或賦值;字符串的每個(gè)字符都是都是字符數(shù)組的一個(gè)元素;字符串和字符數(shù)組基本上等價(jià)。 s=i love yous =i love
6、 you size(s)ans = 1 10 s(2)ans = s(10)ans =u字符串的每個(gè)字符(包括空格)都是字符數(shù)組的一個(gè)元素。在matlab中,字符串與字符數(shù)組或矩陣基本上是等價(jià)的。2021年12月13日10時(shí)07分11 如果在字符串內(nèi)使用單引號(hào)時(shí),可以用連續(xù)兩個(gè)單引號(hào)表示。例如: 字符串之間的轉(zhuǎn)換函數(shù): double 字符串轉(zhuǎn)換為數(shù)值代碼 num2str 數(shù)字轉(zhuǎn)換為字符串 int2str 整數(shù)轉(zhuǎn)換為字符串 mat2str 矩陣轉(zhuǎn)換為字符串 str2num 轉(zhuǎn)換字符串為數(shù)字 double(s) %s=i love youans = 105 32 108 111 118 101 3
7、2 121 111 117 s=its goods = its good2021年12月13日10時(shí)07分12 a=1:5a = 1 2 3 4 5 b=num2str(a)b =12 3 4 5 a*2ans = 2 4 6 8 10 b*2ans = 98 64 64 100 64 64 102 64 64 104 64 64 1062021年12月13日10時(shí)07分13 matlab對(duì)字符串的操作與C語(yǔ)言中的幾乎完全相同: strcat 鏈結(jié)串 strcmp 比較串 strvcat 垂直鏈結(jié)串 strncmp 比較串的前n個(gè)字符 findstr 在其他串中找此串 upper 轉(zhuǎn)換串為大寫
8、 lower 轉(zhuǎn)換串為小寫 blanks 生成空串 deblank 移去串中空格 例如:把前面的字符串s轉(zhuǎn)化成大寫。s=“it good” upper(s)ans =ITS GOOD執(zhí)行字符串的功能用eval來(lái)實(shí)現(xiàn)。t=1/(a*b-1);a=2;b=3;c=eval(t) % 可以在一行中表示。c = 0.20002021年12月13日10時(shí)07分14v運(yùn)算符運(yùn)算符 在matlab語(yǔ)言中運(yùn)算符包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符。其中算術(shù)運(yùn)算符見右表: 其中點(diǎn)運(yùn)算是指操作元素點(diǎn)對(duì)點(diǎn)的運(yùn)算,也就是說(shuō)矩陣內(nèi)元素對(duì)元素之間的運(yùn)算,點(diǎn)運(yùn)算要求參與運(yùn)算的變量在結(jié)構(gòu)上必須是相似的。例如:操作符定義+算
9、術(shù)加-算術(shù)減*算術(shù)乘.*點(diǎn)乘算術(shù)乘方.點(diǎn)乘方算術(shù)左除.點(diǎn)左除/算術(shù)右除./點(diǎn)右除2021年12月13日10時(shí)07分15 a=1,2,3;4,5,6;7,8,9a = 1 2 3 4 5 6 7 8 9 b=1 2 34 5 67 8 9b = 1 2 3 4 5 6 7 8 9 c=a*bc = 30 36 42 66 81 96 102 126 150 d=a.*bd = 1 4 9 16 25 36 49 64 81思考:題目:通過(guò)描點(diǎn)法得到sin(x)xcos(x)函數(shù)在0-pi區(qū)間上的曲線。提示:通過(guò)點(diǎn)運(yùn)算獲得。(附件diancheng。txt)2021年12月13日10時(shí)07分16
10、Matlab語(yǔ)言的關(guān)系運(yùn)算符如右表: 當(dāng)判斷一個(gè)矩陣是否為空矩陣時(shí),一般不用“=”,而應(yīng)當(dāng)使用函數(shù)isempty。操作符定義=等于=不等于大于=大于等于小于a=1:3;4:6;7:9;x=5;y=ones(3)*5;xa=xb=0 1 0;1 0 1;0 0 1;ab=a&bab = 0 1 0 1 0 1 0 0 1nb=bnb = 1 0 1 0 1 0 1 1 02021年12月13日10時(shí)07分19a=magic(5);a(:,3)=zeros(5,1)a = 17 24 0 8 15 23 5 0 14 16 4 6 0 20 22 10 12 0 21 3 11 18 0
11、2 9a1=all(a(:,1)a2=all(a3)a2 = 1 1 0 0 0a11=any(a(:,1)10)a11 = 1a22=any(a10)a22 = 1 1 0 1 12021年12月13日10時(shí)07分20v標(biāo)點(diǎn)標(biāo)點(diǎn) 在matlab中一些標(biāo)點(diǎn)符號(hào)也被賦以特殊的意義,或表示要進(jìn)行一定的運(yùn)算等,如下表:標(biāo)點(diǎn)定義標(biāo)點(diǎn)定義:冒號(hào),具有多種應(yīng)用功能續(xù)行符;區(qū)分行,及取消結(jié)果顯示%注釋標(biāo)記,區(qū)分列,及函數(shù)參數(shù)分隔符等!調(diào)用操作系統(tǒng)運(yùn)算( )指定運(yùn)算過(guò)程中的先后次序等 矩陣定義的標(biāo)志等 用于構(gòu)成單元數(shù)組等字符串的標(biāo)示符2021年12月13日10時(shí)07分21 下面對(duì)上表中各標(biāo)點(diǎn)作進(jìn)一步的介紹。
12、首先,用冒號(hào)來(lái)定義行向量?;靖袷剑簒x1:step:x2(初始值:步長(zhǎng):尾元素?cái)?shù)值限) xx1:x2 (默認(rèn)步長(zhǎng)為1)注意注意:這里強(qiáng)調(diào)x2為尾元素?cái)?shù)值限,而不是尾元素值。當(dāng)x2-x1恰為步長(zhǎng)的整數(shù)倍時(shí),x2才能成為尾值。例如:2021年12月13日10時(shí)07分22 a=1:2:12a = 1 3 5 7 9 11 a=12:-2:1a = 12 10 8 6 4 2 a=1:6a = 1 2 3 4 5 6 a=2:2:12a = 2 4 6 8 10 122021年12月13日10時(shí)07分23其次,通過(guò)使用冒號(hào),可以截取指定矩陣中的部分。例如: a=1:18;a=reshape(a,3,
13、6) %重組矩陣a = 1 4 7 10 13 16 2 5 8 11 14 17 3 6 9 12 15 18 a1=a(:,1:3) %提取矩陣a的第1到3列元素組成的子矩陣。 a1 = 1 4 7 2 5 8 3 6 9 a2=a(1:2,3:end)a2 = 7 10 13 16 8 11 14 17思考:B1=a(1:3,:)?2021年12月13日10時(shí)07分24 分號(hào)在matlab語(yǔ)言中所起的作用是作為分隔行的標(biāo)志,這里包括在矩陣定義中對(duì)行的區(qū)分以及在程序代碼中對(duì)行的劃分。在矩陣定義中,分號(hào)之間的數(shù)據(jù)被認(rèn)為是矩陣的同一行。對(duì)于以分號(hào)結(jié)尾的行語(yǔ)句,matlab語(yǔ)言不會(huì)把其運(yùn)算結(jié)果顯
14、示在命令窗口中。 逗號(hào)主要起兩個(gè)作用。其一是逗號(hào)是函數(shù)參數(shù)的分隔符,也是矩陣下標(biāo)的分隔符。其二是逗號(hào)也是區(qū)分矩陣列的標(biāo)志,在同一行中,逗號(hào)分隔開的是各個(gè)列。 括號(hào)是調(diào)整運(yùn)算先后次序的標(biāo)點(diǎn),可以通過(guò)引用括號(hào)來(lái)調(diào)整運(yùn)算次序。 矩陣的定義需要使用中括號(hào)。此外,中括號(hào)可以表示空矩陣,并通過(guò)該空矩陣實(shí)現(xiàn)對(duì)矩陣的部分刪除。以下舉例:2021年12月13日10時(shí)07分25 a=1,2,3,4;5,6,7,8;4,3,2,1;8,7,6,5a = 1 2 3 4 5 6 7 8 4 3 2 1 8 7 6 5 a(:,1:2)=a = 3 4 7 8 2 1 6 5 b=a(1 3,:)b = 3 4 2 1
15、2021年12月13日10時(shí)07分26 大括號(hào)是單元型數(shù)據(jù)所特有的標(biāo)點(diǎn)。后面介紹。 小數(shù)點(diǎn)“.”,它起到了數(shù)學(xué)符號(hào)的作用;而作為點(diǎn)運(yùn)算的標(biāo)志符,它又構(gòu)成了各種各樣的點(diǎn)運(yùn)算;最重要的是它可作為結(jié)構(gòu)型數(shù)組應(yīng)用時(shí)的專有符號(hào)。 “”為matlab語(yǔ)言中的續(xù)行符,但是該續(xù)行符只能出現(xiàn)在各個(gè)語(yǔ)義群之間,也就是說(shuō)不能出現(xiàn)在變量名之間,否則出錯(cuò)。例如: a=sin(pi/4)+cos(pi/4)-tan(pi/4).+cot(pi/4)a = 1.4142 a=sin(pi/4)+cos(pi/4)-t.an(pi/4)? an(pi/4) |Error: Unexpected MATLAB expressi
16、on.2021年12月13日10時(shí)07分27 在matlab語(yǔ)言中,一行內(nèi)在“%”之后的文字均被認(rèn)為是對(duì)M文件或程序代碼的解釋部分。 “!”可以在命令窗口直接調(diào)用操作系統(tǒng)命令,例如DOS命令,并將結(jié)果展示在命令窗口中,比如在命令窗口中調(diào)用“!dir c”,以顯示C盤的文件列表。 單引號(hào)作為字符串的標(biāo)示符而存在,同時(shí),它在矩陣運(yùn)算中也表示矩陣的轉(zhuǎn)置運(yùn)算及復(fù)數(shù)的共軛值。2021年12月13日10時(shí)07分28 a=1,2,3,4;5,6,7,8a = 1 2 3 4 5 6 7 8 aans = 1 5 2 6 3 7 4 8 s=3-4i;sans = 3.0000 + 4.0000i回到主目錄回
17、到主目錄2021年12月13日10時(shí)07分29MATLAB語(yǔ)言的核心語(yǔ)言的核心矩陣矩陣v矩陣的生成矩陣的生成l直接輸入小矩陣(最簡(jiǎn)便的方法)直接輸入小矩陣(最簡(jiǎn)便的方法) 注意點(diǎn):輸入矩陣時(shí)要以“ ”為其標(biāo)識(shí),即矩陣的元素應(yīng)在“”內(nèi)部。矩陣的同行元素之間可由空格或“ ,”分隔,行與行之間用“;”或回車符分隔。矩陣元素可為運(yùn)算表達(dá)式。無(wú)任何元素的空矩陣也合法。回到主目錄回到主目錄2021年12月13日10時(shí)07分30矩陣987654321A的輸入: A = 1,2,3; 4,5,6; 7,8,9A = 1 2 3 4 5 6 7 8 9a=1 2 34 5 67 8 9a = 1 2 3 4 5
18、 6 7 8 9創(chuàng)建帶有運(yùn)算表達(dá)式的矩陣:b=sin(pi/3),cos(pi/4);log(9),tan(pi/4);% 什么樣的結(jié)果?2021年12月13日10時(shí)07分31l利用中括號(hào)將小矩陣合成一個(gè)大矩陣?yán)弥欣ㄌ?hào)將小矩陣合成一個(gè)大矩陣 b=1,2;3,4; a=b,b;b2,b*3a = 1 2 1 3 3 4 2 4 7 10 3 6 15 22 9 12l從外部文件引用矩陣(從外部文件引用矩陣(excel,txt) (shuju1,shuju2)2021年12月13日10時(shí)07分32l特殊矩陣的生成特殊矩陣的生成常用的特殊矩陣常用的特殊矩陣 空 陣: 單 位 陣:eye(m,n);
19、 eye(m) 零 矩 陣:zeros(m,n); zeros(m) 全 1 陣:ones(m,n); ones(m) 對(duì) 角 陣:對(duì)角元素向量 V=a1,a2,an A=diag(V) 隨 機(jī) 陣:rand(m,n) 產(chǎn)生一個(gè)mn的均勻分布的隨機(jī)矩陣2021年12月13日10時(shí)07分33 eye(2,3)ans = 1 0 0 0 1 0 zeros(2,3)ans = 0 0 0 0 0 0 ones(2,3)ans = 1 1 1 1 1 1v=5 6 7;a=diag(v)a = 5 0 0 0 6 0 0 0 7 eye(2)ans = 1 0 0 1 zeros(2)ans = 0
20、 0 0 0 ones(2)ans = 1 1 1 1 如果已知a為方陣,則v=diag(a)可以提取a的對(duì)角元素構(gòu)成向量v。2021年12月13日10時(shí)07分34其他特殊矩陣其他特殊矩陣 compan 友矩陣函數(shù) magic 魔方矩陣 hankel Hankel矩陣 rosser 對(duì)稱特征值測(cè)試矩陣 hilb Hilbert矩陣 pascal Pascal矩陣 invhilb 反Hilbert矩陣 vander 范德蒙矩陣 其中,compan(c),結(jié)果是生成一以向量c為系數(shù)的多項(xiàng)式的特征矩陣。hilb所生成的hilbert矩陣的特點(diǎn)是矩陣中的元素值為1/(i+j-1)。2021年12月13
21、日10時(shí)07分35單元型數(shù)據(jù)和結(jié)構(gòu)型數(shù)據(jù)單元型數(shù)據(jù)和結(jié)構(gòu)型數(shù)據(jù)l單元型變量單元型變量 單元型變量是matlab語(yǔ)言中較為特殊的一種數(shù)據(jù)類型。本質(zhì)上講,單元型變量為任意類型的多維數(shù)組。 單元型變量可有兩種方式:一種是用賦值語(yǔ)句直接定義,另一種是由cell函數(shù)預(yù)先分配存儲(chǔ)空間,然后對(duì)單元元素逐個(gè)賦值。 在直接賦值過(guò)程中,與在矩陣的定義中使用中括號(hào)不同,單元型變量的定義需用大括號(hào),而元素間用逗號(hào)隔開?;氐街髂夸浕氐街髂夸?021年12月13日10時(shí)07分36a=1,2;3,4a = 1 2 3 4b=1:4,a,abcdb = 1x4 double 2x2 double abcdcellplot(b
22、) %圖形顯示單元型變量的內(nèi)容 celldisp(b) %顯示單元型變量的內(nèi)容b1 = 1 2 3 4b2 = 1 2 3 4 b3 = abcdabcd2021年12月13日10時(shí)07分37 單元型變量元素的引用采用大括號(hào)為下標(biāo)標(biāo)識(shí),用小括號(hào)只顯示該元素的壓縮形式。例如:b2ans = 1 2 3 4b(2)ans = 2x2 double注意:?jiǎn)卧妥兞康脑夭皇且灾羔樂绞奖4娴?。思考:如果改變了上例中的a矩陣,那么單元型變量b中的第二個(gè)元素改變不?2021年12月13日10時(shí)07分38 單元型變量與矩陣的另一個(gè)區(qū)別是單元型變量自身可以嵌套。例如: c=cell(1,3) %另一種定義法
23、c1,1=1:4; c1,2=a; c1,3=b;% b=1:4,a,abcd cc = 1x4 double 2x2 double 1x3 cell c33ans =abcd2021年12月13日10時(shí)07分39l結(jié)構(gòu)型變量結(jié)構(gòu)型變量 在matlab語(yǔ)言中結(jié)構(gòu)型變量的定義也有兩種方法,其一是直接賦值定義,其二是由函數(shù)struct定義。以指針操作符“.”連接結(jié)構(gòu)型變量名與屬性名。 直接賦值時(shí),應(yīng)當(dāng)指出結(jié)構(gòu)中的屬性名。例如: A.a1=abcd; %字符串類型 A.a2=1; %數(shù)值類型 A.a3=1,2,3,4; %數(shù)組類型 AA = a1: abcd a2: 1 a3: 1 2 3 4 思考
24、思考:如何引用結(jié)構(gòu)型變量名A中a1屬性的c元素。 2021年12月13日10時(shí)07分40 由函數(shù)struct定義結(jié)構(gòu)型變量,其調(diào)用格式如下: 結(jié)構(gòu)型變量名=struct(元素名1,元素值1,元素2,元素值2,) B=1,2;3,4; C=struct(c1,1,c2,B,c3,abcd)C = c1: 1 c2: 2x2 double c3: abcd C.c2ans = 1 2 3 42021年12月13日10時(shí)07分41 結(jié)構(gòu)型變量可以嵌套定義。例如: C.c1=A %前面結(jié)構(gòu)型變量AC = c1: 1x1 struct c2: 2x2 double c3: abcd C.c1.a1 %嵌
25、套結(jié)構(gòu)型變量的引用ans = abcd2021年12月13日10時(shí)07分42M文件文件 所謂M文件就是由matlab語(yǔ)言編寫的可在matlab語(yǔ)言環(huán)境下運(yùn)行的程序源代碼文件。Matlab語(yǔ)言中的M文件可分為命令式(script)和函數(shù)式(function)兩種形式。M文件可在matlab的程序編輯器中編寫,也可在其他的文本編輯器中編寫,并以“.m”為擴(kuò)展名加以保存。v命令式文件命令式文件 命令式文件就是命令行的簡(jiǎn)單疊加,matlab會(huì)自動(dòng)按順序執(zhí)行文件中的命令。值得注意的是,命令式文件在運(yùn)行過(guò)程中可以調(diào)用matlab工作域內(nèi)所有的數(shù)據(jù),而且所產(chǎn)生的所有變量均為全局變量。回到主目錄回到主目錄20
26、21年12月13日10時(shí)07分43v函數(shù)式文件函數(shù)式文件 函數(shù)式文件主要用于解決計(jì)算中的參數(shù)傳遞和函數(shù)調(diào)用的問(wèn)題。函數(shù)式的標(biāo)志是它的第一行為function語(yǔ)句。函數(shù)式文件可以有返回值,也可以沒有。函數(shù)式文件執(zhí)行之后,只保留最后結(jié)果,不保留任何中間過(guò)程,所定義的變量也僅在函數(shù)內(nèi)部起作用,并隨著調(diào)用的結(jié)束而被清除。即除無(wú)特殊聲明外,其變量均為局部變量。 注意: 存儲(chǔ)函數(shù)式M文件時(shí)文件名要與主函數(shù)名相一致。2021年12月13日10時(shí)07分44函數(shù)式文件:function abcd(a,b)c=a+bd=b-a保存為abcd.m在工作窗口中調(diào)用:a=2;b=3,4,5,6;abcd(a,b)c =
27、 5 6 7 8d = 1 2 3 4c %結(jié)果是什么?命令式文件:a=2;b=3 4 5 6;c=a+b;d=b-a;保存為:abcd.m在工作窗口中調(diào)用:abcd %文件名即可 cc = 5 6 7 8 dd = 1 2 3 42021年12月13日10時(shí)07分45v函數(shù)變量及變量作用域函數(shù)變量及變量作用域 變量主要有輸入變量、輸出變量及函數(shù)內(nèi)部變量。 輸入變量相當(dāng)于函數(shù)的入口數(shù)據(jù),是一個(gè)函數(shù)操作的主要對(duì)象。函數(shù)的作用就是對(duì)輸入變量進(jìn)行加工以實(shí)現(xiàn)一定的功能。函數(shù)的輸入變量為形式參數(shù),即只是傳遞變量的值而不是變量的地址,函數(shù)對(duì)輸入變量的一切的操作和修改如果不依靠輸出變量傳出的話,將不會(huì)影響工
28、作空間 中該變量的值。 matlab語(yǔ)言提供了函數(shù)nargin來(lái)控制輸入變量的個(gè)數(shù),即可以實(shí)現(xiàn)不定參數(shù)輸入的操作。例如:在函數(shù)test1中,如果調(diào)用過(guò)程時(shí)只提供一個(gè)輸入變量,則求該輸入變量的模;如果是兩個(gè)輸入變量,則求兩個(gè)輸入變量的和2021年12月13日10時(shí)07分46%如果調(diào)用過(guò)程時(shí)只提供一個(gè)輸入變量,則求該輸入變量%的模; 如果是兩個(gè)輸入變量,則求兩個(gè)輸入變量的和function c=test1(a,b)if nargin=1 c=norm(a);elseif nargin=2 c=a+b;end在工作窗口調(diào)用: a=2 3 4a = 2 3 4 test1(a)ans = 5.3852
29、 b=3; test1(a,b)ans = 5 6 72021年12月13日10時(shí)07分47 同時(shí),matlab語(yǔ)言還提供了另一個(gè)針對(duì)輸入變量的函數(shù)varargin。該函數(shù)可以實(shí)現(xiàn)不定數(shù)目輸入變量的函數(shù)的程序設(shè)計(jì)。此時(shí),對(duì)函數(shù)的一切輸入變量均將存儲(chǔ)在以varargin命名的單元型數(shù)組中。例:在函數(shù)test2中,實(shí)現(xiàn)如下功能: 通過(guò)使用函數(shù)varargin,用戶可以輸入任意多個(gè)學(xué)生的 數(shù)學(xué)、英語(yǔ)及語(yǔ)文的成績(jī),然后求各科目的平均值。 程序如下:2021年12月13日10時(shí)07分48function mathavg,englishavg,chineseavg=test2(varargin)s=len
30、gth(varargin); %求數(shù)組的長(zhǎng)度mathsum=0;englishsum=0;chinesesum=0;for j=1:s mathsum=mathsum+vararginj(1); englishsum=+vararginj(2); chinesesum=+vararginj(3);endmathavg=mathsum/s;englishavg=englishsum/s;chineseavg=chinesesum/s;思考:此函數(shù)如何調(diào)用。2021年12月13日10時(shí)07分49 與輸入變量相對(duì)應(yīng),matlab語(yǔ)言對(duì)輸出變量也提供了相應(yīng)的函數(shù),如nargout、varargout等
31、。具體的使用與函數(shù)nargin和varargin相似。 下面給出一個(gè)綜合應(yīng)用示例。 示例函數(shù)test3中,綜合使用了函數(shù)nargin、nargout、narargin、narargout等,函數(shù)目的是求各學(xué)生(總數(shù)不確定)的個(gè)人平均成績(jī),以及指定科目的平均成績(jī)等。函數(shù)test2的調(diào)用:90,89,60分別表示數(shù)學(xué)、英語(yǔ)、語(yǔ)文的成績(jī) a,b,c=test2(90,89,60,79,89,66,99,98,100)a = 89.3333b = 32.6667c = 33.3333思考:如果多個(gè)學(xué)生的成績(jī)是同一科目的成績(jī)放在一個(gè)數(shù)組中,如何修改test2函數(shù)。2021年12月13日10時(shí)07分50
32、function vararout=test3(lessons,varargin)inputnum=nargin; lessonnum=length(lessons);outputnum=nargout;for i=1:lessonnum switch lessons(i) case math vararout1=sum(varargin1:inputnum(1); case english vararout2=sum(varargin1:inputnum(2); case chinese vararout3=sum(varargin1:inputnum(3); endendfor i=1:i
33、nputnum varargouti+3=sum(varargini(:);end2021年12月13日10時(shí)07分51 在matlab中,函數(shù)內(nèi)部定義的變量除特殊聲明外均為局部變量。如果需要使用全局變量,則應(yīng)當(dāng)使用命令global定義,而且在任何使用該全局變量的函數(shù)中都應(yīng)加以定義,在命令窗口中也不例外。 注意:變量之間必須以空格分隔,而不能用逗號(hào)分隔。示例:function avgs=test4(A)global s ss %定義全局變量m,n=size(A);for i=1:m s(i)=sum(A(i,:);endss=sum(s);avgs=ss/(m*n);調(diào)用test4: a=4
34、3 5;6 7 8;3 5 7;1 3 4; test4(a)ans = 4.6667 global s ss ssss = 56 ss = 12 21 15 82021年12月13日10時(shí)07分52v子函數(shù)與局部函數(shù)子函數(shù)與局部函數(shù) Matlab中也可以定義子函數(shù),用來(lái)擴(kuò)充函數(shù)的功能。在函數(shù)文件中題頭定義的函數(shù)為主函數(shù),而在函數(shù)體內(nèi)定義的其他函數(shù)均被視為子函數(shù)。子函數(shù)只能為主函數(shù)或同一主函數(shù)下的其他的子函數(shù)所調(diào)用。示例:function c=test(a,b) %主函數(shù)c=test1(a,b)*test2(a,b);function c=test1(a,b) %子函數(shù)1c=a+b;funct
35、ion c=test2(a,b) %子函數(shù)2c=a-b;2021年12月13日10時(shí)07分53 局部函數(shù)與子函數(shù)的區(qū)別是:局部函數(shù)可以被其父目錄下的所有函數(shù)所調(diào)用,而子函數(shù)則只能被其所在M文件的主函數(shù)所調(diào)用;在函數(shù)編輯的結(jié)構(gòu)上,局部函數(shù)與一般的函數(shù)文件的編輯相同,而子函數(shù)則只能在主函數(shù)文件中編輯。2021年12月13日10時(shí)07分54v程序設(shè)計(jì)的輔助函數(shù)程序設(shè)計(jì)的輔助函數(shù)l 用戶交互函數(shù)用戶交互函數(shù) 鍵盤輸入函數(shù)包括函數(shù)input及keyboard。 函數(shù)input用于提示用戶輸入指定參數(shù)的值,調(diào)用格式: var=input(提示性語(yǔ)句) 其中,“提示性語(yǔ)句”將給出相應(yīng)的提示信息以告知用戶輸入
36、的對(duì)象,在這種調(diào)用過(guò)程中,用戶可以有鍵盤輸入任何的可計(jì)算的表達(dá)式或已賦值的當(dāng)前工作空間中的變量名,而且返回至變量var中的值也是數(shù)值型,所有的輸入以回車鍵加以確認(rèn)。 2021年12月13日10時(shí)07分55第一種調(diào)用格式: a=input(input examplen)input example1+4a = 5 ischar(a)ans = 0第二種調(diào)用格式: b=input(input examplen,s)input example1+4b =1+4 ischar(b)ans = 1函數(shù)input的另一種調(diào)用格式: var=input(提示性語(yǔ)句,s)以該格式調(diào)用時(shí),input函數(shù)將視用戶鍵
37、盤輸入的一切字符為字符型賦予變量var,而不對(duì)其進(jìn)行任何計(jì)算。在提示型語(yǔ)句中可以用“n”來(lái)控制顯示時(shí)的換行。例如:2021年12月13日10時(shí)07分56 另一種輸入函數(shù)為keybroad,該函數(shù)出現(xiàn)在M文件中時(shí),將終止程序的運(yùn)行,此時(shí)用戶可以查看運(yùn)算過(guò)程中各變量的值必要時(shí)也可進(jìn)行適當(dāng)?shù)母缮婕熬庉?。同時(shí)該函數(shù)在matlab語(yǔ)言中均可應(yīng)用,直到鍵入return并回車,這時(shí)程序返回中斷處,繼續(xù)執(zhí)行其余代碼。 matlab也提供了一種中斷函數(shù)pause,其調(diào)用格式: pause(n) 該命令的作用是中斷程序運(yùn)行并等待n秒。如果不帶參數(shù),則程序無(wú)限期中斷,直到用戶在鍵盤上鍵入任意鍵。2021年12月13
38、日10時(shí)07分57流程控制語(yǔ)句流程控制語(yǔ)句 Matlab語(yǔ)言的流程控制語(yǔ)句主要有for、while、if-else-end和switch-case這四種語(yǔ)句。vfor語(yǔ)句語(yǔ)句 for循環(huán)語(yǔ)句是流程控制語(yǔ)句中的基礎(chǔ),使用該循環(huán)語(yǔ)句可以以指定的次數(shù)重復(fù)執(zhí)行循環(huán)體內(nèi)的語(yǔ)句。 for循環(huán)語(yǔ)句的調(diào)用形式: for 循環(huán)控制變量=(可以是已定義的向 量,也可在for循環(huán)語(yǔ)句中定義) 循環(huán)體 end回到主目錄回到主目錄2021年12月13日10時(shí)07分58for i = 1:4 % 初始值:步長(zhǎng):終值(步長(zhǎng)默認(rèn)為1)for j = 4:-1:1H(i, j) = 1/(i+j-1);endend結(jié)果: HH
39、 = 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.14292021年12月13日10時(shí)07分59 循環(huán)次數(shù)的設(shè)定還可以由mxn矩陣來(lái)實(shí)現(xiàn),此時(shí),整個(gè)循環(huán)將執(zhí)行n次,并且每次循環(huán)變量為一列向量。例如:a=1 2 3 4;5 6 7 8;s=0;for i=a i s=s+1;endi = 1 5i = 2 6i = 3 7i = 4 8s= ?2021年12月13日10時(shí)07分60vwhile語(yǔ)句語(yǔ)句 while循環(huán)語(yǔ)句與for
40、循環(huán)語(yǔ)句不同的是,前者是以條件的滿足與否來(lái)判斷循環(huán)是否結(jié)束的,而后者則是以執(zhí)行次數(shù)是否達(dá)到指定值來(lái)判斷的。 while循環(huán)語(yǔ)句的一般形式: while 循環(huán)體 end 循環(huán)判斷語(yǔ)句為某種形式的邏輯判斷表達(dá)式。當(dāng)表達(dá)式的值為真時(shí)就執(zhí)行循環(huán)體內(nèi)的語(yǔ)句;否則退出。當(dāng)循環(huán)判斷語(yǔ)句為矩陣時(shí),當(dāng)且僅當(dāng)所有的矩陣元素非零時(shí),邏輯表達(dá)式的值為真。例如:2021年12月13日10時(shí)07分61n = 0;while 2n 100 n = n + 1;end 從例子中可以看出while循環(huán)語(yǔ)句與for循環(huán)語(yǔ)句是有異曲同工之處的。但是兩者還是有區(qū)別的,for循環(huán)語(yǔ)句一般適用于已知到循環(huán)次數(shù),而不知道循環(huán)運(yùn)算目標(biāo)的問(wèn)題
41、;while循環(huán)語(yǔ)句則一般適用于已知循環(huán)運(yùn)算目標(biāo),而循環(huán)次數(shù)未知的問(wèn)題。break語(yǔ)句:當(dāng)程序流程運(yùn)行至該命令時(shí),則不論循環(huán)控制變量是否滿足循環(huán)判斷語(yǔ)句,均將退出當(dāng)前循環(huán),執(zhí)行循環(huán)后的其他語(yǔ)句。continue命令:當(dāng)程序流程運(yùn)行至該命令時(shí),會(huì)忽視其后的循環(huán)體操作轉(zhuǎn)而執(zhí)行下一層的循環(huán)。2021年12月13日10時(shí)07分62例例1.計(jì)算級(jí)數(shù)計(jì)算級(jí)數(shù):S=1+2+22+23+263= 6302nn法一:s=0;i=0;while i n=0:1:63;S=sum(2.n)2021年12月13日10時(shí)07分63vif-else-end語(yǔ)句語(yǔ)句 if-else-end語(yǔ)句的一般形式: if 邏輯值為“
42、真”時(shí)執(zhí)行語(yǔ)句 else 邏輯值為“假”時(shí)執(zhí)行語(yǔ)句 end例如: if a=1 a=a+1; else a=a+2; end2021年12月13日10時(shí)07分64 在程序設(shè)計(jì)中,也常碰到需要進(jìn)行多重邏輯選擇的問(wèn)題,這時(shí)可以采用if-else-end語(yǔ)句的嵌套形式: if 邏輯值1為“真”時(shí)執(zhí)行語(yǔ)句 elseif 邏輯值2為“真”時(shí)執(zhí)行語(yǔ)句 elseif else 當(dāng)以上所有的邏輯值均為“假”時(shí)執(zhí)行語(yǔ)句 end2021年12月13日10時(shí)07分65If AB greaterelseif AB lesselseif A=B equalelse error(Aand B are different
43、data) end解讀這段程序:a=10000; n=0; z=1;while z an = n + 1;if mod(n,2)=1 continueendz=2n-1; if isprime(z)%是否質(zhì)數(shù) break endend2021年12月13日10時(shí)07分66vswitch-case語(yǔ)句 switch-case語(yǔ)句是用于解決多分支判斷選擇的問(wèn)題。 switch-case語(yǔ)句的一般表達(dá)形式: switch case 選擇判斷值1 選擇判斷語(yǔ)句1case 選擇判斷值2 選擇判斷語(yǔ)句2otherwise 判斷執(zhí)行語(yǔ)句end2021年12月13日10時(shí)07分67例如:code=1switc
44、h code case -1 disp(error); case 0 disp(write in English); case 1 disp(write in Chinese); otherwise disp(write in French);end結(jié)果: write in Chinese 注意:在matlab語(yǔ)言中,即使有多條case判斷語(yǔ)句為真,也只執(zhí)行所遇到的第一條為真的語(yǔ)句。不必像C語(yǔ)句那樣,在每條case語(yǔ)句后加上break語(yǔ)句防止繼續(xù)執(zhí)行后面為真的case條件語(yǔ)句。2021年12月13日10時(shí)07分68例:求雞兔同籠問(wèn)題:雞兔同籠,頭共36,腳共100.求雞、兔各幾只? 程序如下:
45、i=1;while 1 if mod(100-2*i,4)=0& i+(100-2*i)/4=36 %函數(shù)mod表示取余 break; endenda1=i;a2=36-i;上述程序中有兩個(gè)錯(cuò)誤,請(qǐng)指出!2021年12月13日10時(shí)07分69MATLAB在數(shù)值計(jì)算中的應(yīng)用在數(shù)值計(jì)算中的應(yīng)用u數(shù)值計(jì)算的基本要素及相關(guān)函數(shù)數(shù)值計(jì)算的基本要素及相關(guān)函數(shù)u數(shù)據(jù)的統(tǒng)計(jì)分析數(shù)據(jù)的統(tǒng)計(jì)分析u曲線擬合及插值曲線擬合及插值u數(shù)值分析數(shù)值分析2021年12月13日10時(shí)07分70數(shù)值計(jì)算的基本要素及相關(guān)函數(shù)數(shù)值計(jì)算的基本要素及相關(guān)函數(shù)MATLAB語(yǔ)言在數(shù)值計(jì)算中的基本要素主要有數(shù)組、多項(xiàng)式和矩陣。v數(shù)組及
46、相關(guān)函數(shù)數(shù)組及相關(guān)函數(shù)l數(shù)組的創(chuàng)建數(shù)組的創(chuàng)建 數(shù)組的定義相當(dāng)簡(jiǎn)捷,主要有三種格式: xx1:step:x2 (初始值:步長(zhǎng):尾元素?cái)?shù)值限)y=linspace(x1,x2,n) (初始值:終止值:數(shù)組元素個(gè)數(shù))n默認(rèn)為100y=logspace(x1,x2,n) (初始值:終止值:數(shù)組元素個(gè)數(shù))n默認(rèn)為50回到主目錄回到主目錄2021年12月13日10時(shí)07分71例如: a=1:2:12a = 1 3 5 7 9 11 b=linspace(1,10,10)b = 1 2 3 4 5 6 7 8 9 10 c=logspace(0,2,10)c = 1.0000 1.6681 2.7826 4
47、.6416 7.7426 12.9155 21.5443 35.9381 59.9484 100.00002021年12月13日10時(shí)07分72l數(shù)組的操作數(shù)組的操作 例如:a = 1 3 5 7 9 11 a(3) %取a數(shù)組中的第3個(gè)元素ans = 5 a(2:5) %取數(shù)組a中第2個(gè)元素到第5個(gè)元素ans = 3 5 7 9 a.2 %數(shù)組的平方ans = 1 9 25 49 81 121 length(a) %檢測(cè)數(shù)組的長(zhǎng)度,返回?cái)?shù)組的元素個(gè)數(shù)ans = 62021年12月13日10時(shí)07分73l多維數(shù)組多維數(shù)組 多維數(shù)組從某種角度來(lái)看,它是矩陣在維數(shù)上的擴(kuò)張,實(shí)際上也是矩陣中的一個(gè)特
48、例。它可以是數(shù)值型、字符型、單元型或結(jié)構(gòu)型等。 多維數(shù)組在創(chuàng)建及處理上與一維數(shù)組或普通矩陣有很大的不同。其創(chuàng)建方法有很多,可以仿照一維數(shù)組的定義,也可以通過(guò)matlab的有關(guān)函數(shù)來(lái)創(chuàng)建。 直接賦值:例如: A(:,:,1)=1 2 3;4 5 6;6 7 8; A(:,:,2)=7 8 9;5 6 7;3 2 1; A(:,:,3)=9 8 7;6 5 4;2 3 4;2021年12月13日10時(shí)07分74注意多維數(shù)組的顯示方法: AA(:,:,1) = 1 2 3 4 5 6 6 7 8A(:,:,2) = 7 8 9 5 6 7 3 2 1A(:,:,3) = 9 8 7 6 5 4 2
49、3 4A(2,3,2)=?A(:,:,1)A(:,:,2)A(:,:,3)1 2 34 5 66 7 8 7 8 95 6 73 2 19 8 76 5 42 3 4數(shù)組A就像一個(gè)分塊矩陣,每塊都是3x3的矩陣。2021年12月13日10時(shí)07分75 還可以簡(jiǎn)單的只對(duì)其中某一維的元素進(jìn)行賦值。系統(tǒng)會(huì)根據(jù)賦值的情況來(lái)確定該變量的具體維數(shù)結(jié)構(gòu)并將其他未賦值的元素自動(dòng)賦為零。例如: B(:,:,3)=1,2;3,4; BB(:,:,1) = 0 0 0 0B(:,:,2) = 0 0 0 0B(:,:,3) = 1 2 3 4 C(:,2,:)=1 2 ; 3 4; CC(:,:,1) = 0 1
50、0 3C(:,:,2) = 0 2 0 4問(wèn):e(:,2,:)=1 2 3; 4 5 6將是什么樣的數(shù)組?S(2,:,:)=1 2 3;4 5 6? 1 2 3 42021年12月13日10時(shí)07分76 matlab語(yǔ)言中也提供了相應(yīng)的函數(shù)來(lái)創(chuàng)建多維數(shù)組,如rand、ones、zeros等。其使用方法與創(chuàng)建一維數(shù)組相同。例如: D=rand(2,3,2,2) %該例中顯示了四維數(shù)組。% 類似于2x2的分塊矩陣,每塊都是2x3的矩陣。D(:,:,1,1) = 0.9501 0.6068 0.8913 0.2311 0.4860 0.7621D(:,:,2,1) = 0.4565 0.8214 0
51、.6154 0.0185 0.4447 0.7919D(:,:,1,2) = 0.9218 0.1763 0.9355 0.7382 0.4057 0.9169D(:,:,2,2) = 0.4103 0.0579 0.8132 0.8936 0.3529 0.0099111221222021年12月13日10時(shí)07分77 函數(shù)cat也是創(chuàng)建多維數(shù)組的一個(gè)實(shí)用的工具。 其調(diào)用方法:cat(dim,A1,A2,) 輸入?yún)?shù)中的dim為定義的維數(shù),A1、A2等為構(gòu)建數(shù)組的元素。例如: E=cat(4,1 2;3 4,5 6;7 8)E(:,:,1,1) = 1 2 3 4E(:,:,1,2) = 5
52、 6 7 82021年12月13日10時(shí)07分78v多項(xiàng)式及相關(guān)函數(shù)多項(xiàng)式及相關(guān)函數(shù)l 多項(xiàng)式的定義多項(xiàng)式的定義 多項(xiàng)式的定義如下:對(duì)于多項(xiàng)式 ,用以下行向量表示:這樣就把多項(xiàng)式的問(wèn)題轉(zhuǎn)化為行向量的問(wèn)題了。nnnnaxaxaxaxp1110)(.,110nnaaaap2021年12月13日10時(shí)07分79 最簡(jiǎn)單的多項(xiàng)式輸入即為直接的向量輸入,matlab自動(dòng)將向量元素按降冪順序分配給各系數(shù)值。 例如:輸入多項(xiàng)式x3-5x2+6x-33. p=1 -5 6 -33; poly2sym(p) %此函數(shù)可將多項(xiàng)式向量表示成符號(hào)多項(xiàng)式形式 ans = x3-5*x2+6*x-332021年12月13
53、日10時(shí)07分80l多項(xiàng)式的操作多項(xiàng)式的操作下表是matlab中較常用的多項(xiàng)式函數(shù)。函數(shù)名說(shuō)明函數(shù)名說(shuō)明roots多項(xiàng)式求根polyfit多項(xiàng)式擬合poly由根創(chuàng)建多項(xiàng)式polyder求多項(xiàng)式導(dǎo)數(shù)polyval多項(xiàng)式求值conv多項(xiàng)式乘法polyvalm矩陣多項(xiàng)式求值deconv多項(xiàng)式除法2021年12月13日10時(shí)07分81 多項(xiàng)式求根函數(shù)roots的調(diào)用格式: roots(P) 通過(guò)該函數(shù)可以求得方程p=0在復(fù)數(shù)范圍內(nèi)的解。例如: 函數(shù)poly與roots相對(duì)應(yīng),其作用是由多項(xiàng)式對(duì)應(yīng)的方程的根來(lái)創(chuàng)建多項(xiàng)式。例如: p=1 0 3 2 1 1; r=roots(p)r = 0.3202 +
54、1.7042i 0.3202 - 1.7042i -0.7209 0.0402 + 0.6780i 0.0402 - 0.6780i poly(r)ans = 1.0000 0.0000 3.0000 2.0000 1.0000 1.0000可見roots與poly是互逆運(yùn)算。注意:由poly創(chuàng)建的多項(xiàng)式最高次系數(shù)為1.2021年12月13日10時(shí)07分82 Matlab中通過(guò)函數(shù)polyval和函數(shù)polyvalm可求得多項(xiàng)式在給定點(diǎn)的值:函數(shù)polyval:在輸入變量值代人多項(xiàng)式計(jì)算時(shí)是以數(shù)組為單位的,polyval(p,v)。函數(shù)polyvalm:以矩陣為計(jì)算單位,進(jìn)行矩陣式運(yùn)算,以求多
55、項(xiàng)式的值,polyvalm(p,v)。這兩種計(jì)算在數(shù)值上有很大差別。例如:對(duì)同一多項(xiàng)式及變量值分別計(jì)算矩陣計(jì)算值和數(shù)組計(jì)算值。2021年12月13日10時(shí)07分83 p=1 11 55 125;b=1 1;1 1; polyval(p,b)ans = 192 192 192 192 polyvalm(p,b)ans = 206 81 81 2062021年12月13日10時(shí)07分84 多項(xiàng)式的乘法由函數(shù)conv來(lái)實(shí)現(xiàn),此函數(shù)同于向量的卷積; 多項(xiàng)式的除法由函數(shù)deconv來(lái)實(shí)現(xiàn),此函數(shù)同于向量的解卷。 例:計(jì)算兩個(gè)多項(xiàng)式的乘除法。 p=2 -5 6 -1 9; poly2sym(p)ans =
56、2*x4-5*x3+6*x2-x+9 d=3 -90 -18; poly2sym(d)ans =3*x2-90*x-18 pd=conv(p,d)pd = 6 -195 432 -453 9 -792 -162 poly2sym(pd)ans =6*x6-195*x5+432*x4-453*x3+9*x2-792*x-162 p1=deconv(pd,d) %與p相同p1 = 2 -5 6 -1 92021年12月13日10時(shí)07分85多項(xiàng)式的微分由函數(shù)polyder來(lái)實(shí)現(xiàn)。例:對(duì)上例中多項(xiàng)式p進(jìn)行微分計(jì)算。 p=2 -5 6 -1 9; poly2sym(p)ans = 2*x4-5*x3+
57、6*x2-x+9 dp=polyder(p)dp = 8 -15 12 -1 poly2sym(dp)ans =8*x3-15*x2+12*x-12021年12月13日10時(shí)07分86v矩陣及相關(guān)函數(shù)矩陣及相關(guān)函數(shù)l矩陣的基本運(yùn)算矩陣的基本運(yùn)算 矩陣的加減運(yùn)算與傳統(tǒng)的矩陣運(yùn)算相同,但在乘法運(yùn)算中,就有關(guān)于算術(shù)乘(矩陣乘方)與點(diǎn)乘(點(diǎn)乘方)的區(qū)別,下面用示例說(shuō)明兩者的具體差別。 a=1 2;3 4; b=5 6;7 8; c=a*bc = 19 22 43 50 d=a.*bd = 5 12 21 32 a2ans = 7 10 15 22 a.2ans = 1 4 9 162021年12月13
58、日10時(shí)07分87 在介紹矩陣除法前,先介紹矩陣與線性方程組之間的關(guān)系。對(duì)于線性方程組Axb,其中A為(nm)階矩陣:n=m且非奇異時(shí),方程為恰定方程;nm 方程為超定方程;(方程個(gè)數(shù)大于未知數(shù)的個(gè)數(shù))nm,矩陣除法仍然可以得到方程的解,但不是精確解,而是近似解,該解確保誤差向量Ax-b的二范數(shù)最小。如果nm A=1,4,6;3,5,6;7,8,3;4,6,7; b=34,54,57,87; x=Abx = 25.2078 -20.5201 14.8480 res=A*x-b; norm(res,2)ans = 9.8821例如:n A=2 4 4 5;3 4 5 1;7 8 3 6; b=2
59、3 45 57; x=Abx = 0 10.2187 1.8333 -5.0417 norm(A*x-b,2)ans = 2.5619e-0142021年12月13日10時(shí)07分89線性方程組的另一種解法:就是利用偽逆函數(shù)pinv:x=pinv*b。 例如: A=2 4 4 5;3 4 5 1;7 8 3 6; b=23 45 57; y=pinv(A)*b y = 4.9710 4.0050 3.4903 -3.3847 norm(A*x-b,2) ans = 2.5619e-0142021年12月13日10時(shí)07分90l矩陣函數(shù)矩陣函數(shù) 這里介紹部分常用的函數(shù)。以示例的形式說(shuō)明。 A=1
60、2 3;4 5 6;7 8 9; diag(A) %抽取矩陣的對(duì)角線ans = 1 5 9 diag(diag(A) %由矩陣的對(duì)角線生成對(duì)角陣ans = 1 0 0 0 5 0 0 0 92021年12月13日10時(shí)07分91A = 1 2 3 4 5 6 7 8 9 tril(A) %抽取矩陣的下三角ans = 1 0 0 4 5 0 7 8 9 flipdim(A,2) %以第2列為軸線翻轉(zhuǎn)矩陣ans = 3 2 1 6 5 4 9 8 72021年12月13日10時(shí)07分92A = 1 2 3 4 5 6 7 8 9 find(A) %返回矩陣A的非零元素的存儲(chǔ)下標(biāo),是列向量,故轉(zhuǎn)置顯示ans = 1
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國(guó)法式鉗工錘行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2030年中國(guó)脂肪醇酰胺數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)羊皮罩?jǐn)?shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年工程王輪胎項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年中國(guó)毛線帽數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)智能控制吹灰器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國(guó)隔聲器市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)精密高速?zèng)_床市場(chǎng)調(diào)查研究報(bào)告
- 中草藥在國(guó)際市場(chǎng)的競(jìng)爭(zhēng)力分析考核試卷
- 二零二五年度期貨交易投資顧問(wèn)服務(wù)合同規(guī)范文本4篇
- 快速入門穿越機(jī)-讓你迅速懂穿越機(jī)
- 水利安全生產(chǎn)風(fēng)險(xiǎn)防控“六項(xiàng)機(jī)制”右江模式經(jīng)驗(yàn)分享
- 2024年四川省成都市高新區(qū)中考數(shù)學(xué)二診試卷
- 幼兒園衛(wèi)生保健開學(xué)培訓(xùn)
- 食材配送服務(wù)售后服務(wù)方案
- 礦井主要災(zāi)害事故防治應(yīng)急避災(zāi)知識(shí)培訓(xùn)課件
- 不老莓行業(yè)分析
- STARCCM基礎(chǔ)培訓(xùn)教程
- 2016-2023年婁底職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 貴陽(yáng)市2024年高三年級(jí)適應(yīng)性考試(一)一模英語(yǔ)試卷(含答案)
- 地理標(biāo)志專題通用課件
評(píng)論
0/150
提交評(píng)論