數值運算微分方程求解與函數優化_第1頁
數值運算微分方程求解與函數優化_第2頁
數值運算微分方程求解與函數優化_第3頁
數值運算微分方程求解與函數優化_第4頁
數值運算微分方程求解與函數優化_第5頁
已閱讀5頁,還剩76頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

關于數值運算微分方程求解與函數優化第一頁,共八十一頁,編輯于2023年,星期一一、命令行的基本操作創建矩陣的方法直接輸入法規則:矩陣元素必須用[]括住矩陣元素必須用逗號或空格分隔在[]內矩陣的行與行之間必須用分號分隔

第二頁,共八十一頁,編輯于2023年,星期一》a=1;b=2;c=3;》x=[5bc;a*ba+cc/b]x=5.0002.0003.0002.0004.0001.500》y=[2,4,5;368]y=245368第三頁,共八十一頁,編輯于2023年,星期一

矩陣元素可以是任何matlab表達式,可以是實數,也可以是復數,復數可用特殊函數I,j輸入。大的矩陣可以用分行輸入,回車鍵代表分號。

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

矩陣元素第四頁,共八十一頁,編輯于2023年,星期一符號的作用逗號和分號的作用

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

分號如果出現在指令后,屏幕上將不顯示結果。第五頁,共八十一頁,編輯于2023年,星期一注意:只要是賦過值的變量,不管是否在屏幕上顯示過,都存儲在工作空間中,以后可隨時顯示或調用。變量名盡可能不要重復,否則會覆蓋。當一個指令或矩陣太長時,可用???續行第六頁,共八十一頁,編輯于2023年,星期一冒號的作用

用于生成等間隔的向量,默認間隔為1。用于選出矩陣指定行、列及元素。循環語句第七頁,共八十一頁,編輯于2023年,星期一2.用matlab函數創建矩陣空陣[]—matlab允許輸入空陣,當一項操作無結果時,返回空陣。rand——隨機矩陣eye——單位矩陣zeros——全部元素都為0的矩陣ones——全部元素都為1的矩陣diag——產生對角矩陣第八頁,共八十一頁,編輯于2023年,星期一例

》eye(2,3)》zeros(2,3)ans=ans=

1

0

00

0

00

1

00

0

0》ones(2,3)ans=1

1

11

1

1》V=[572];A=diag(V)A=5

0

00

7

00

0

2第九頁,共八十一頁,編輯于2023年,星期一例

》eye(2)

ans=

1

0

0

1》zeros(2)

ans=

0

0

0

0》ones(2)

ans=

1

1

1

1第十頁,共八十一頁,編輯于2023年,星期一例在區間[20,50]內均勻分布的5階隨機矩陣。命令如下:

x=20+(50-20)*rand(5)此外,常用的函數還有reshape(A,m,n),它在矩陣總元素保持不變的前提下,將矩陣A重新排成m×n的二維矩陣。第十一頁,共八十一頁,編輯于2023年,星期一也可用linspace函數產生行向量。其調用格式為:linspace(a,b,n)其中a和b是生成向量的第一個和最后一個元素,n是元素總數。例

》a=linspace(1,10,10)a=

12345678910第十二頁,共八十一頁,編輯于2023年,星期一

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

matlab函數名必須小寫。第十三頁,共八十一頁,編輯于2023年,星期一3.用m文件創建矩陣對于比較大且比較復雜的矩陣,可以為它專門建立一個M文件。下面通過一個簡單例子來說明如何利用M文件創建矩陣。例利用M文件建立MYMAT矩陣。第十四頁,共八十一頁,編輯于2023年,星期一(1)啟動有關編輯程序或Matlab文本編輯器,并輸入待建矩陣。(2)把輸入的內容以純文本方式存盤(設文件名為mymatrix.m)。(3)在Matlab命令窗口中輸入mymatrix,即運行該M文件,就會自動建立一個名為MYMAT的矩陣,可供以后使用。第十五頁,共八十一頁,編輯于2023年,星期一4.用冒號表達式創建矩陣利用冒號表達式可以線性等間距地建立一個向量來創建矩陣

一般格式是:e1:e2:e3

其中e1為初始值,e2為步長,e3為終止值。

或者為:(start:step:end)例》a=[1:2:10]a=13579第十六頁,共八十一頁,編輯于2023年,星期一5.矩陣的修改直接修改可用鍵找到所要修改的矩陣,用鍵移動到要修改的矩陣元素上即可修改。指令修改可以用A(,)=來修改。第十七頁,共八十一頁,編輯于2023年,星期一例如a=[120;305;789]a=120305789a(3,3)=0a=120305780第十八頁,共八十一頁,編輯于2023年,星期一把Matlab工作空間中一些有用的數據長久保存下來的方法是生成mat數據文件。

save——將工作空間中所有的變量存到matlab.mat文件中。二、數據的保存與獲取默認文件名第十九頁,共八十一頁,編輯于2023年,星期一savedata——將工作空間中所有的變量存到data.mat文件中。savedataab——將工作空間中a和b變量存到data.mat文件中。

下次運行Matlab時即可用load指令調用已生成的mat文件。第二十頁,共八十一頁,編輯于2023年,星期一load——loaddata——loaddataab——mat文件是標準的二進制文件,還可以ASCII碼形式保存。即可恢復保存過的所有變量第二十一頁,共八十一頁,編輯于2023年,星期一矩陣加、減(+,-)運算規則:相加、減的兩矩陣必須有相同的行和列兩矩陣對應元素相加減。允許參與運算的兩矩陣之一是標量。標量與矩陣的所有元素分別進行加減操作。三、矩陣運算第二十二頁,共八十一頁,編輯于2023年,星期一2.矩陣乘()運算規則:A矩陣的列數必須等于B矩陣的行數標量可與任何矩陣相乘a=[123;456;780];b=[1;2;3];c=a*bc=143223

第二十三頁,共八十一頁,編輯于2023年,星期一d=[-1;0;2];f=pi*df=-3.141606.2832

矩陣除的運算在線性代數中沒有,有矩陣逆的運算,在matlab中有兩種矩陣除運算。第二十四頁,共八十一頁,編輯于2023年,星期一兩種除法:\和/,分別表示左除和右除。如果A矩陣是非奇異方陣,則A\B和B/A運算可以實現。A\B等效于A的逆左乘B矩陣,而B/A等效于A矩陣的逆右乘B矩陣。對于矩陣來說,左除和右除表示兩種不同的除數矩陣和被除數矩陣的關系。對于矩陣運算,一般A\B≠B/A。第二十五頁,共八十一頁,編輯于2023年,星期一a^p——a自乘p次冪

方陣>1的整數3.矩陣乘方——a^n,a^p,p^a對于p的其它值,計算將涉及特征值和特征向量,如果p是矩陣,a是標量a^p使用特征值和特征向量自乘到p次冪;如a,p都是矩陣,a^p則無意義。第二十六頁,共八十一頁,編輯于2023年,星期一a=[1,2,3;4,5,6;7,8,9];a^2ans=303642668196102126150※當一個方陣有復數特征值或負實特征值時,非整數冪是復數陣。第二十七頁,共八十一頁,編輯于2023年,星期一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.2717i第二十八頁,共八十一頁,編輯于2023年,星期一inv——矩陣求逆det——行列式的值eig——矩陣的特征值diag——對角矩陣’——矩陣轉置sqrt——矩陣開方4.矩陣的其它運算第二十九頁,共八十一頁,編輯于2023年,星期一5.矩陣的范數矩陣范數的函數為:

(1)norm(V)或norm(V,2):計算矩陣V的

2—范數。

(2)norm(V,1):計算矩陣V的1—范數。

(3)norm(V,inf):計算矩陣V的∞—范數。第三十頁,共八十一頁,編輯于2023年,星期一6.矩陣的一些特殊操作矩陣的變維

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

rot90:旋轉;fliplr:左右翻;flipud:上下翻矩陣的抽取

diag:抽取主對角線;(對于非方陣的情況?)

tril:抽取主下三角;

triu:抽取主上三角,然后其余補零元素矩陣的擴展第三十一頁,共八十一頁,編輯于2023年,星期一關系運算

關系符號意義<<=>>===~=小于小于或等于大于大于或等于等于不等于第三十二頁,共八十一頁,編輯于2023年,星期一

關系運算符的運算法則當兩個比較量是標量時,直接比較兩數的大小。若關系成立,關系表達式結果為1,否則為0。當參與比較的量是兩個維數相同的矩陣時,比較是對兩矩陣相同位置的元素按標量關系運算規則逐個進行,并給出元素比較結果。最終的關系運算的結果是一個維數與原矩陣相同的矩陣,它的元素由0或1組成。第三十三頁,共八十一頁,編輯于2023年,星期一(3)當參與比較的一個是標量,而另一個是矩陣時,則把標量與矩陣的每一個元素按標量關系運算規則逐個比較,并給出元素比較結果。最終的關系運算的結果是一個維數與原矩陣相同的矩陣,它的元素由0或1組成。注意:其書寫方法與數學中的不等式符號不盡相同。第三十四頁,共八十一頁,編輯于2023年,星期一

數組運算指元素對元素的算術運算,與通常意義上的由符號表示的線性代數矩陣運算不同。數組加減(.+,.-)a.+ba.-b7.矩陣的數組運算對應元素相加減(與矩陣加減等效)第三十五頁,共八十一頁,編輯于2023年,星期一2.數組乘除(,./,.\)ab——a,b兩數組必須有相同的行和列兩數組相應元素相乘。a=[123;456;789];b=[246;135;7910];a.*bans=281841530497290第三十六頁,共八十一頁,編輯于2023年,星期一a=[123;456;789];b=[246;135;7910];a*bans=253746558510985133172第三十七頁,共八十一頁,編輯于2023年,星期一a./b=b.\aa.\b=b./aa./b=b.\a—都是a的元素被b的對應元素除,“/”是斜杠a.\b=b./a—都是b的元素被a的對應元素除,“\”是反斜杠例:a=[123];b=[456];c1=a.\b;c2=b./ac1=4.00002.50002.0000c2=4.00002.50002.0000——給出a,b對應元素間的商.第三十八頁,共八十一頁,編輯于2023年,星期一3.數組乘方(.^)—元素對元素的冪例:a=[123];b=[456];z=a.^2z=1.004.009.00z=a.^bz=1.0032.00729.00(1.^42.^53.^6)第三十九頁,共八十一頁,編輯于2023年,星期一matlab語言把多項式表達成一個行向量,該向量中的元素是按多項式降冪排列的。

f(x)=a0xn+a1xn-1+……an-1x+an

可用行向量p=[a0a1……an-1an]表示poly——產生特征多項式系數向量特征多項式一定是n+1維的特征多項式第一個元素一定是1四、多項式運算第四十頁,共八十一頁,編輯于2023年,星期一例: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’)—函數文件,顯示數學多項式的形式p1=x^3-6x^2-72x–27注意:多項式中缺少的冪次用‘0’補齊。第四十一頁,共八十一頁,編輯于2023年,星期一2.roots——求多項式的根a=[123;456;780];p=poly(a)p=1.00-6.00-72.00-27.00r=roots(p)---------求由p構成的多項式的根r=12.12-5.73——顯然r是矩陣a的特征值

-0.39第四十二頁,共八十一頁,編輯于2023年,星期一當然我們可用poly令其返回多項式形式(這是poly的第二個功能)p2=poly(r)p2=1.00-6.00-72.00-27.00matlab規定多項式系數向量用行向量表示,一組根用列向量表示。第四十三頁,共八十一頁,編輯于2023年,星期一P=poly(r),輸入r是多項式所有根,返回值為代表多項式的行向量形式。P=poly(A),輸入是N*N的方陣,返回值p是長度為N+1的行向量多項式,它是矩陣A的特征多項式,也就是說多項式p的根是矩陣A的特征值。第四十四頁,共八十一頁,編輯于2023年,星期一求根的另一種方法str1='x^3-6x^2-72x-27';p1=str2poly(str1);r=roots(p1);注:str2poly實現把一個字符串表示的多項式轉換為一個行向量表示的多項式。

poly2str同理。第四十五頁,共八十一頁,編輯于2023年,星期一3.conv多項式乘運算(向量卷積)例: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)或c=conv([123],[456])c=4.0013.0028.0027.0018.00p=poly2str(c,‘x’)其中x表示自變量p=4x^4+13x^3+28x^2+27x+18第四十六頁,共八十一頁,編輯于2023年,星期一4.deconv多項式除運算(解卷積)a=[123];c=[4.0013.0028.0027.0018.00]d=deconv(c,a)d=4.005.006.00[d,r]=deconv(c,a)余數c除a后的整數它們之間的關系為:c=conv(a,d)+r第四十七頁,共八十一頁,編輯于2023年,星期一5.多項式導數或微分matlab提供polyder函數計算多項式的導數。命令格式:polyder(p):求p的導數polyder(a,b):求多項式a,b乘積的導數[p,q]=polyder(a,b):求多項式a除以b的商的導數,并以p/q的格式表示。

第四十八頁,共八十一頁,編輯于2023年,星期一例: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第四十九頁,共八十一頁,編輯于2023年,星期一6.多項式的積分matlab提供polyint函數計算多項式的積分。命令格式:polyint(p,k):求多項式p的積分,設積分的常數項為k,polyint(p)默認k=0例:a=[12345];poly2str(a,'x')ans=x^4+2x^3+3x^2+4x+5b=polyint(a,8)b=0.20.51.02.05.08.0poly2str(b,'x')ans=0.2x^5+0.5x^4+x^3+2x^2+5x+8第五十頁,共八十一頁,編輯于2023年,星期一五、代數方程組求解matlab中有兩種除運算左除和右除。對于方程ax=b,a為an×m矩陣,有三種情況:當n=m時,此方程成為“恰定”方程當n>m時,此方程成為“超定”方程當n<m時,此方程成為“欠定”方程

matlab定義的除運算可以很方便地解上述三種方程第五十一頁,共八十一頁,編輯于2023年,星期一1.恰定方程組的解方程ax=b(a為非奇異)x=a-1

b

矩陣逆兩種解:x=inv(a)b—采用求逆運算解方程x=a\b—采用左除運算解方程注:若a為奇異的,則Matlab適當給出警告信息或者給出結果為inf。第五十二頁,共八十一頁,編輯于2023年,星期一方程ax=ba=[12;23];b=[8;13];x=inv(a)*b

x=a\bx=x=2.002.003.003.00

=

ax=b例:x1+2x2=82x1+3x2=13第五十三頁,共八十一頁,編輯于2023年,星期一2.超定方程組的解方程的個數大于未知量個數時,方程一般無解。方程解(a'a)x=a'bx=(a‘

a)-1a’b——求逆法(也用到了最小二乘解的原理)x=a\b——matlab用最小二乘法找一個準確地基本解。第五十四頁,共八十一頁,編輯于2023年,星期一例: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=b第五十五頁,共八十一頁,編輯于2023年,星期一3.欠定方程組的解

當方程數少于未知量個數時,即不定情況,有無窮多個解存在。matlab可求出兩個解:用除法求的解x是具有最多零元素的解是具有最小長度或范數的解,這個解是基于偽逆pinv求得的。第五十六頁,共八十一頁,編輯于2023年,星期一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第五十七頁,共八十一頁,編輯于2023年,星期一六、微分方程求解微分方程求解的仿真算法有多種,常用的有Euler(歐拉法)、RungeKutta(龍格-庫塔法。Euler法稱一步法,用于一階微分方程第五十八頁,共八十一頁,編輯于2023年,星期一當給定仿真步長時:所以

yn+1=yn+h·f(xn,yn)n=0,1,2…y(x0)=y0第五十九頁,共八十一頁,編輯于2023年,星期一RungeKutta法龍格-庫塔法:實際上取兩點斜率的平均斜率來計算的,其精度高于歐拉算法。龍格-庫塔法:ode23ode45

k1=hf(xn,yn)k2=hf(xn+h,yn+k1)第六十頁,共八十一頁,編輯于2023年,星期一例:x+(x2-1)x+x=0為方便令x1=x,x2=x分別對x1,x2求一階導數,整理后寫成一階微分方程組形式

x1=x2x2=x2(1-x12)-x1建立m文件解微分方程······第六十一頁,共八十一頁,編輯于2023年,星期一建立m文件functionxdot=wf(t,x)xdot=zeros(2,1)xdot(1)=x(2)xdot(2)=x(2)*(1-x(1)^2)-x(1)給定區間、初始值;求解微分方程t0=0;tf=20;x0=[00.25]';[t,x]=ode23('wf',t0,tf,x0)plot(t,x),figure(2),plot(x(:,1),x(:,2))第六十二頁,共八十一頁,編輯于2023年,星期一命令格式:[T,Y]=ODE23(ODEFUN,TSPAN,Y0)建立m文件functiondxdt=wf(t,x)dxdt=[x(2);x(2)*(1-x(1)^2)-x(1)];求解微分方程[t,x]=ode23(@wf,[030],[00.25]);plot(t,x);figure(2)plot(x(:,1),x(:,2))第六十三頁,共八十一頁,編輯于2023年,星期一第六十四頁,共八十一頁,編輯于2023年,星期一七、函數優化尋優函數:fmin——單變量函數fmins——多變量函數constr——有約束條件無約束條件第六十五頁,共八十一頁,編輯于2023年,星期一例1:f(x)=‘x2+3x+2’在[-55]區間的最小值f=fmin('x^2+3*x+2',-5,5)例2:f(x)=100(x2-x12)2+(a-x1)2在x1=a,x2=a2處有最小值functionf=xun(x,a)f=100*(x(2)-x(1).^2).^2+(a-x(1)).^2;x=fmins('xun',[0,0],[],[],sqrt(2))第六十六頁,共八十一頁,編輯于2023年,星期一八、數據分析數據分析相關的函數位于目錄:toolboxs\matlab\datafun下Matlab對矩陣操作的規定:如果是向量,則對數據整體操作;如果是矩陣,則對矩陣的列操作。max——各列最大值mean——各列平均值sum——各列求和std——各列標準差var——各列方差sort——各列遞增排序cumsum——元素累計和cumprod——元素累計積第六十七頁,共八十一頁,編輯于2023年,星期一八、數據分析數據分析相關的函數位于目錄:toolboxs\matlab\datafun下。Matlab對矩陣操作的規定:如果是向量,則對數據整體操作;如果是矩陣,則對矩陣的列操作。max——各列最大值mean——各列平均值sum——各列求和std——各列標準差var——各列方差sort——各列遞增排序cumsum——元素累計和cumprod——元素累計積第六十八頁,共八十一頁,編輯于2023年,星期一例:x=[1324],y=[1238;5674]sort(x),sort(y),max(y)>>1234>>12345678>>5678第六十九頁,共八十一頁,編輯于2023年,星期一九、擬合與插值多項式擬合采用最小二乘法對給定的數據進行多項式擬合,最后給出多項式的系數。

p=polyfit(x,y,n),采用n次多項式p來擬合數據x和y,從而使得y與p(x)最小均方差最小。第七十頁,共八十一頁,編輯于2023年,星期一x0=0:0.1:1;y0=[-.4471.9783.115.255.024.664.014.583.455.359.22];p=polyfit(x0,y0,3)p=56.6915-87.117440.0070-0.9043xx=0:0.01:1;yy=polyval(p,xx);plot(xx,yy,'-b',x0,y0,'or')第七十一頁,共八十一頁,編輯于2023年,星期一曲線擬合圖形用戶接口Matlab7.0提供了支持曲線擬合的圖形用戶接口。在“Figure”窗口“Tools\BasicFitting”菜單中。為了使用該工具,先用待擬合的數據畫圖。x=0:0.2:10;y=0.25*x+20*sin(x);plot(x,y,'ro');在復選框“Plotfits”中選擇“cubic”。第七十二頁,共八十一頁,編輯于2023年,星期一2.插值插值的定義——是對某些集合給定的數據點之間函數的估值方法。當不能很快地求出所需中間點的函數時,插值是一個非常有價值的工具,它可以在已知數據之間尋找

溫馨提示

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

評論

0/150

提交評論