2MATLAB的數(shù)值計算分析_第1頁
2MATLAB的數(shù)值計算分析_第2頁
2MATLAB的數(shù)值計算分析_第3頁
2MATLAB的數(shù)值計算分析_第4頁
2MATLAB的數(shù)值計算分析_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二講MATLAB的數(shù)值計算——matlab具有出色的數(shù)值計算能力,占據(jù)世界上數(shù)值計算軟件的主導(dǎo)地位數(shù)值運算的功能創(chuàng)建矩陣矩陣運算多項式運算線性方程組數(shù)值統(tǒng)計線性插值函數(shù)優(yōu)化微分方程的數(shù)值解一、命令行的基本操作創(chuàng)建矩陣的方法直接輸入法規(guī)則:矩陣元素必須用[]括住矩陣元素必須用逗號或空格分隔

在[]內(nèi)矩陣的行與行之間必須用分號分隔

矩陣元素可以是任何matlab表達式,可以是實數(shù),也可以是復(fù)數(shù),復(fù)數(shù)可用特殊函數(shù)I,j輸入

a=[123;456]x=[2pi/2;sqrt(3)3+5i]

矩陣元素符號的作用逗號和分號的作用

逗號和分號可作為指令間的分隔符,matlab允許多條語句在同一行出現(xiàn)。

分號如果出現(xiàn)在指令后,屏幕上將不顯示結(jié)果。注意:只要是賦過值的變量,不管是否在屏幕上顯示過,都存儲在工作空間中,以后可隨時顯示或調(diào)用。變量名盡可能不要重復(fù),否則會覆蓋。當一個指令或矩陣太長時,可用???續(xù)行冒號的作用

用于生成等間隔的向量,默認間隔為1。用于選出矩陣指定行、列及元素。循環(huán)語句2.用matlab函數(shù)創(chuàng)建矩陣空陣[]—matlab允許輸入空陣,當一項操作無結(jié)果時,返回空陣。rand——

隨機矩陣(rand(3)、rand(2,3))eye——

單位矩陣zeros——全部元素都為0的矩陣ones——全部元素都為1的矩陣3.特殊矩陣矩陣符號說明company酉矩陣gallery試驗矩陣hadamard哈德馬德矩陣hankel漢克爾矩陣hilb希爾伯特矩陣invhilb逆希爾伯特矩陣magic魔方矩陣pascal帕斯卡矩陣randn隨機矩陣,元素服從正態(tài)分布rosser對稱特征值實驗矩陣vander范德蒙矩陣wilkinson威爾金森特征值測試矩陣

還有伴隨矩陣、稀疏矩陣、魔方矩陣、對角矩陣、范德蒙等矩陣的創(chuàng)建,就不一一介紹了。注意:matlab嚴格區(qū)分大小寫字母,因此a與A是兩個不同的變量。

matlab函數(shù)名必須小寫。4.矩陣的修改

直接修改可用鍵找到所要修改的矩陣,用鍵移動到要修改的矩陣元素上即可修改。指令修改可以用A(,)=來修改。例如a=[120;305;789]a=120305789a(3,3)=0a=120305780還可以用函數(shù)subs修改,matlab6.0還可用find函數(shù)修改實際應(yīng)用中,常需要提取矩陣的某一部分,或者將多個矩陣合并起來——裁剪和拼接對矩陣的裁剪與拼接操作主要是通過冒號運算符(:)來實現(xiàn)(1)重新排列>>x=[123;456;789];>>x(3:-1:1,:)ans=7894561235.矩陣裁剪與拼接(2)提取行提取:>>x=[123;456;789];>>x(1,:)ans=123列提?。?gt;>x=[123;456;789];>>x(:,1)ans=147部分提?。?gt;>x=[123;456;789];>>x(1:2,2:3)ans=2356重復(fù)提?。?gt;>x=[123;456;789];>>x(:,[1,1,1])ans=111444777x(:,[1;2;2])(3)刪除>>x=[123;456;789];>>x(:,1)=[]x=235689>>size(x)ans=32

Matlab中只能刪除矩陣的整行或整列,x(:,1)=[]將矩陣x的第一列刪除,同樣,x(1,:)=[]將矩陣x的第一行刪除。(4)拼接行拼接:兩個矩陣的行數(shù)必須相同>>x=[123;456;789];>>y=ones(3);>>z=[x,y]z=123111456111789111列拼接:兩個矩陣的列數(shù)必須相同>>x=[123;456;789];>>y=ones(1,3);>>z=[x;y]z=1234567891116.矩陣函數(shù)7.矩陣分解矩陣加、減(+,-)運算規(guī)則:相加、減的兩矩陣必須有相同的行和列兩矩陣對應(yīng)元素相加減。允許參與運算的兩矩陣之一是標量。標量與矩陣的所有元素分別進行加減操作。二、矩陣運算2.矩陣乘()運算規(guī)則:A矩陣的列數(shù)必須等于B矩陣的行數(shù)標量可與任何矩陣相乘。a=[123;456;780];b=[1;2;3];c=a*bc=143223

d=[-1;0;2];f=pi*df=-3.141606.2832

矩陣除的運算在線性代數(shù)中沒有,有矩陣逆的運算,在matlab中有兩種矩陣除運算a^p——a自乘p次冪

方陣>1的整數(shù)3.矩陣乘方——a^p,p^a對于p的其它值,計算將涉及特征值和特征向量,如果p是矩陣,a是標量a^p使用特征值和特征向量自乘到p次冪;如a,p都是矩陣,a^p則無意義。a=[1,2,3;4,5,6;7,8,9];a^2ans=303642668196102126150※當一個方陣有復(fù)數(shù)特征值或負實特征值時,非整數(shù)冪是復(fù)數(shù)陣。a^0.5ans=

0.4498+0.7623i0.5526+0.2068i0.6555-0.3487i1.0185+0.0842i1.2515+0.0228i1.4844-0.0385i1.5873-0.5940i1.9503-0.1611i2.3134+0.2717iinv——

矩陣求逆det——

行列式的值eig——

矩陣的特征值diag——

對角矩陣

——

矩陣轉(zhuǎn)置sqrt——

矩陣開方expm——矩陣的指數(shù)logm——矩陣的對數(shù)cond——矩陣的條件數(shù)rank——矩陣的秩norm——矩陣的范數(shù)4.矩陣的其它運算5.矩陣的一些特殊操作矩陣的變維

a=[1:12];b=reshape(a,3,4)c=zeros(3,4);c(:)=a(:)矩陣的變向

rot90:旋轉(zhuǎn);fliplr:上翻;flipud:下翻矩陣的抽取

diag:抽取主對角線;tril:抽取主下三角;

triu:抽取主上三角矩陣的擴展關(guān)系運算

關(guān)系符號意義<<=>>===~=小于小于或等于大于大于或等于等于不等于采用冒號運算符

a=初值:步長:終值;函數(shù)linspace創(chuàng)建

a=linspace(初值,終值,元素個數(shù))函數(shù)logspace

a=logspace(初始指數(shù),終結(jié)指數(shù),元素個數(shù))示例:

>>a=logspace(0,3,3)a=1.0e+003*0.00100.03161.00006.一維數(shù)組的特殊創(chuàng)建方法

數(shù)組運算指元素對元素的算術(shù)運算,與通常意義上的由符號表示的線性代數(shù)矩陣運算不同(1)數(shù)組加減(.+,.-)a.+ba.-b7.矩陣的數(shù)組運算對應(yīng)元素相加減(與矩陣加減等效)(2)數(shù)組乘除(

,./,.\)ab——a,b兩數(shù)組必須有相同的行和列兩數(shù)組相應(yīng)元素相乘。a=[123;456;789];b=[246;135;7910];a.*bans=281841530497290a=[123;456;789];b=[246;135;7910];a*bans=253746558510985133172a./b=b.\aa.\b=b./aa./b=b.\a—

都是b的元素被a的對應(yīng)元素除a.\b=b./a—

都是a的元素被b的對應(yīng)元素除例:a=[123];b=[456];c1=a.\b;c2=b./ac1=4.00002.50002.0000c2=4.00002.50002.0000——

給出a,b對應(yīng)元素間的商.(4)數(shù)組乘方(.^)—

元素對元素的冪例:a=[123];b=[456];z=a.^2z=1.004.009.00z=a.^bz=1.0032.00729.00(5)向量函數(shù)

一般標量函數(shù)都可以用于數(shù)組,此時函數(shù)作用于數(shù)組的每個元素:

>>x=1:5;>>sin(x)ans=0.84150.90930.1411-0.7568-0.9589

但有些函數(shù)只有作用于向量時才有意義,故稱其為向量函數(shù):

max——最大值

min——最小值

sum——和

length——長度(size)

mean——平均值

mediam——中間值

prod——乘積

sort——從小到大排列向量函數(shù)也可以作用于矩陣,此時運算結(jié)果為一個行向量,行向量的每個元素是函數(shù)作用于矩陣的相應(yīng)列向量所得到的結(jié)果(1)字符串Matlab中的字符串一般是ASCII值的數(shù)值數(shù)組,它作為字符串表達式進行顯示一個字符串是由單引號括起來的文本,是由字符組成的數(shù)組

>>s='Iamateacher';>>ss=Iamateacher>>u=abs(s)u=73329710932973211610197991041011148.文本操作>>str1=s(5:10)str1=atea>>y=setstr(u)%函數(shù)setstry=Iamateacheru=s(10:-1:5)輸出內(nèi)容?u=s’輸出內(nèi)容?字符串I’mateacher如何輸入?可以像數(shù)組一樣連接字符串可以用disp函數(shù)打印字符串變量表示的字符串,如disp(x);字符串也可以有多個行,但每行必須也有相同數(shù)目的列數(shù),如果長度不等,則要以空格補齊示例:把字符串由小寫變?yōu)榇髮?/p>

>>s='iamateacher';>>fori=1:14,s(i)=setstr(s(i)-('a'-'A'));end,ss=IAMATEACHER如果改為:

>>s='iamateacher';>>fori=1:14,s(i)=setstr(s(i)-(‘a(chǎn)’-‘A’)),end,s請考慮輸出如果改為:

>>s=‘Iamateacher';>>fori=1:14,s(i)=setstr(s(i)-(‘a(chǎn)’-‘A’));end,s請考慮輸出(2)字符串轉(zhuǎn)換函數(shù)意義abs字符串到ASCII轉(zhuǎn)換dec2hex十進制到十六進制轉(zhuǎn)換fprintf把格式化的文本寫到文件中或顯示屏上fscanf從文件中讀入有格式數(shù)據(jù)hex2dec十六進制字符串轉(zhuǎn)換成十進制數(shù)hex2num十六進制字符串轉(zhuǎn)換成IEEE浮點數(shù)int2str整數(shù)轉(zhuǎn)換成字符串lower字符串轉(zhuǎn)換成小寫num2str數(shù)字轉(zhuǎn)換成字符串setstrASCII轉(zhuǎn)換成字符串sprintf把數(shù)據(jù)格式化,寫給一個字符串sscanf用格式控制,把字符串轉(zhuǎn)換成數(shù)字str2mat字符串轉(zhuǎn)換成一個文本矩陣str2num字符串轉(zhuǎn)換成數(shù)字upper字符串轉(zhuǎn)換成大寫>>rad=2.5;>>t=[‘Acircleofradius’,rad]%是否正確fscanf調(diào)用格式:

A=fscanf(fid,format)[A,count]=fscanf(fid,format,size)fprintf調(diào)用格式:

fprintf(obj,'cmd')fprintf(obj,‘format’,‘cmd’)%obj可以省略sscanf調(diào)用格式:

A=sscanf(s,format)A=sscanf(s,format,size)sprintf調(diào)用格式:

[s,errmsg]=sprintf(format,A,...)控制符符號說明示例\b退格符sprintf(‘WhoamI?\b’)(WhoamI)\n回車換行符sprintf(‘WhoamI\n?’)\t橫向走紙符

sprintf('WhoamI?\tadf')\\、’’、%%輸出特殊字符sprintf(‘WhoamI?\\')f浮點輸出符sprintf('%.2f',pi)3.14sprintf('%.0f',pi)3e指數(shù)輸出符sprintf('%.2e',pi)3.14e+000sprintf('%.0e',pi)3e+000g定長輸出符sprintf('%10.2g',pi)________3.1sprintf('%10.0g',pi)_________3(3)字符串函數(shù)函數(shù)意義blanks(n)返回一個n個零或空格的字符串deblank去掉字符串中后拖的空格findstr從一個字符串內(nèi)找出字符串isletter字母存在時返回真值(返回值為矩陣)isspace空格字符存在時返回真值(返回矩陣)isstr是一個字符串,返回真值lasterr返回上一個所產(chǎn)生Matlab錯誤的字符串strcmp兩個字符串相同,則返回真strrep用一個字符串代替另一個字符串strtok找出字符串中的第一部分s='Thisisagoodexample.';[token,rem]=strtok(s)token=Thisrem=isagoodexample.matlab語言把多項式表達成一個行向量,該向量中的元素是按多項式降冪排列的。

f(x)=anxn+an-1xn-1+……+a0

可用行向量p=[anan-1

……a1+a0]表示poly——

產(chǎn)生特征多項式系數(shù)向量特征多項式一定是n+1維的特征多項式第一個元素一定是1三、多項式運算例:a=[123;456;780];p=poly(a)p=1.00-6.00-72.00-27.00p是多項式p(x)=x3-6x2-72x-27的matlab描述方法,我們可用:p1=poly2str(p,‘x’)

函數(shù)文件,顯示數(shù)學(xué)多項式的形式p1=x^3-6x^2-72x-272.roots——

求多項式的根a=[123;456;780];p=poly(a)p=1.00-6.00-72.00-27.00r=roots(p)r=12.12-5.73——顯然r是矩陣a的特征值

-0.39當然我們可用poly令其返回多項式形式p2=poly(r)p2=1.00-6.00-72.00-27.00matlab規(guī)定多項式系數(shù)向量用行向量表示,一組根用列向量表示3.conv,convs多項式乘運算例:a(x)=x2+2x+3;b(x)=4x2+5x+6;c=(x2+2x+3)(4x2+5x+6)a=[123];b=[456];c=conv(a,b)=conv([123],[456])c=4.0013.0028.0027.0018.00p=poly2str(c,'x')p=4x^4+13x^3+28x^2+27x+184.deconv多項式除運算a=[123];c=[4.0013.0028.0027.0018.00]d=deconv(c,a)d=4.005.006.00[d,r]=deconv(c,a)余數(shù)c除以a后的整數(shù)5.多項式微分matlab提供了polyder函數(shù)多項式的微分。命令格式:polyder(p):求p的微分polyder(a,b):求多項式a,b乘積的微分例:a=[12345];poly2str(a,'x')ans=x^4+2x^3+3x^2+4x+5b=polyder(a)b=4664poly2str(b,'x')ans=4x^3+6x^2+6x+4四、代數(shù)方程組求解matlab中有兩種除運算左除和右除。對于方程ax+b,a為an×m矩陣,有三種情況:當n=m時,此方程成為“恰定”方程當n>m時,此方程成為“超定”方程當n<m時,此方程成為“欠定”方程

matlab定義的除運算可以很方便地解上述三種方程1.恰定方程組的解方程ax=b(a為非奇異)x=a-1

b

矩陣逆兩種解:x=inv(a)

b—

采用求逆運算解方程x=a\b—

采用左除運算解方程方程ax=ba=[12;23];b=[8;13];

x=inv(a)*b

x=a\bx=x=22.0033.00

=

ax=b例:x1+2x2=82x1+3x2=13左除、右除的異同2.超定方程組的解方程ax=b,m<n時此時不存在唯一解。方程解(a'a)x=a'bx=(a'

a)-1a'b——

求逆法

x=a\b——matlab用最小二乘法找一個準確地基本解。例:x1+2x2=12x1+3x2=23x1+4x2=3a=[12;23;34];b=[1;2;3];

解1x=a\b

解2x=inv(a'

a)

a'

b

x=x=1.001.0000.00

=

ax=b3.欠定方程組的解

當方程數(shù)少于未知量個數(shù)時,即不定情況,有無窮多個解存在。matlab可求出兩個解:用除法求的解x是具有最多零元素的解是具有最小長度或范數(shù)的解,這個解是基于偽逆pinv求得的。x1+2x2+3x3=12x1+3x2+4x3=2a=[123;234];b=[1;2];x=a\bx=pinv(a)

bx=x=1.000.8300.330-0.17=ax=b五、微分方程求解微分方程求解的仿真算法有多種,常用的有Euler(歐拉法)、RungeKutta(龍格-庫塔法。Euler法稱一步法,用于一階微分方程當給定仿真步長時:所以

yn+1=yn+h·f(xn,yn)n=0,1,2…y(x0)=y0RungeKutta法龍格-庫塔法:實際上取兩點斜率的平均斜率來計算的,其精度高于歐拉算法。龍格-庫塔法:ode23ode45

k1=hf(xn,yn)k2=hf(xn+h,yn+k)例:x+(x2-1)x+x=0為方便令x1=x,x2=x分別對x1,x2求一階導(dǎo)數(shù),整理后寫成一階微分方程組形式

x1=x2x2=x2(1-x12)-x1建立m文件解微分方程······建立m文件functionxdot=wf(t,x)xd

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論