利用matlab進(jìn)行微積分的計(jì)算.pptx_第1頁
利用matlab進(jìn)行微積分的計(jì)算.pptx_第2頁
利用matlab進(jìn)行微積分的計(jì)算.pptx_第3頁
利用matlab進(jìn)行微積分的計(jì)算.pptx_第4頁
利用matlab進(jìn)行微積分的計(jì)算.pptx_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、微積分的計(jì)算,微積分的符號運(yùn)算,Matlab定義符號運(yùn)算和數(shù)值運(yùn)算。如果運(yùn)算過程中有符號變量,則運(yùn)算過程為符號運(yùn)算。 符號變量可以利用兩種方法定義。,(1) 利用函數(shù)sym定義符號表達(dá)式 語句格式 變量=sym(字符串) sym函數(shù)可以定義符號變量、符號常數(shù)和一般的符號表達(dá)式。, x=sym(1/3) x = 1/3 y=x+1/2 %符號運(yùn)算 y = 5/6,x=1/3 x= 0.3333 y=1/2+1/3 %數(shù)值計(jì)算 y = 0.8333,例1:比較符號運(yùn)算和數(shù)值計(jì)算,例2:分別利用符號運(yùn)算和數(shù)值運(yùn)算計(jì)算如下的和 并比較其計(jì)算速度。,注:Matlab語言中利用tic 和toc 計(jì)算時(shí)間,

2、語言格式為 tic 程序塊 toc 顯示器顯示tic和toc之間的程序塊運(yùn)行時(shí)間,符號運(yùn)算程序: s=sym(0); tic for k=1:1000 s=s+1/k; end toc s,運(yùn)行結(jié)果: elapsed time is 17.471170 seconds. s = 5336291328229478504559104562404298040965247228038426009710134924845626888949710175750609790198503569140908873155046809837844217211788500946430234432656602250210

3、0278425632852081405544941210442510142672770294774712708917963967779610453224692426866468888281582071984897105110796873249319155529397017508931564519976085734473014183284011724412280649074307703736683170055800293659235088589360235285852808160759574737836655413175508131522517/7128865274665093053166384

4、155714272920668358861885893040452001991154324087581111499476444151913871586911717817019575256512980264067621009251465871004305131072686268143200196609974862745937188343705015434452523739745298963145674982128236956232823794011068809262317708861979540791247754558049326475737829923352751796735248042463

5、638051137034331214781746850878453485678021888075373249921995672056932029099390891687487672697950931603520000,數(shù)值運(yùn)算程序 s=0; tic for k=1:1000 s=s+1/k; end toc s 運(yùn)行結(jié)果: Elapsed time is 0.000015 seconds. s = 7.4855,可以看出,數(shù)值計(jì)算的計(jì)算速度遠(yuǎn)遠(yuǎn)高于符號運(yùn)算。 另外,符號運(yùn)算只能計(jì)算非常簡單的問題,復(fù)雜問題只能利用數(shù)值方法。但由于符號運(yùn)算得到的是解析式,在許多情況下有利于問題的進(jìn)一步分析。,利用

6、語句 syms 定義符號變量 語句形式 syms x y z syms語句 一次可定義多個(gè)符號變量,但不能定義符號常數(shù)和表達(dá)式,微積分計(jì)算問題的符號運(yùn)算,極限運(yùn)算 語句格式 G= limit(F); %表達(dá)式F中變量趨向于0的極限 G= limit(F,a); %表達(dá)式F中變量趨向于a的極限 G= limit(F,v,a); %表達(dá)式F中變量v趨向于a的極限 G= limit(F,v,a,right); %表達(dá)式F中變量趨向于a的右極限。,例3:計(jì)算 syms x f=(1-x)/(1+x)(2/x) f = (-(x - 1)/(x + 1)(2/x) limit(f,0) ans = 1/

7、exp(4),例4:計(jì)算 syms x y z f=sin(x*y)/sin(x*z) f = sin(x*y)/sin(x*z) limit(f,x,0) ans = y/z,導(dǎo)數(shù) 求導(dǎo)數(shù)的語句為 df=diff(F) %求表達(dá)式F的一階導(dǎo)數(shù) df=diff(F,n) %求表達(dá)式F的n階導(dǎo)數(shù) df=diff(F,u,n) %求表達(dá)式F的關(guān)于變量u的n階導(dǎo)數(shù),例5:求函數(shù) f=sin(x)/x 的二階導(dǎo)數(shù)。 f=sin(x)/x f = sin(x)/x diff(f,2) ans = (2*sin(x)/x3 - sin(x)/x - (2*cos(x)/x2,例6:求函數(shù) 關(guān)于x和y的二階

8、偏導(dǎo)數(shù)。 f=(x-y)/(x+y) f = (x - y)/(x + y) dfxy=diff(diff(f,y),x) dfxy = (2*(x - y)/(x + y)3,注:如果表達(dá)式F有多個(gè)符號變量,且沒有指明對哪一個(gè)變量求導(dǎo),則 Matlab規(guī)定對離x最近的變量求導(dǎo)。其他運(yùn)算也有類似規(guī)定。,例7:求 f=x2*sin(x) exp(x)*cos(x) log(1+x2) atan(x); diff(f) ans = x2*cos(x) + 2*x*sin(x), exp(x)*cos(x) - exp(x)*sin(x) (2*x)/(x2 + 1), a/(x2 + 1),Mat

9、lab的微積分符號運(yùn)算都可以對數(shù)組進(jìn)行。,函數(shù)的積分 積分符號運(yùn)算的基本語句 int(F); %求函數(shù)表達(dá)式F的不定積分 int(F,v); %求函數(shù)表達(dá)式F關(guān)于變量v的不定積分 int(F,a,b); %求函數(shù)表達(dá)式F在區(qū)間a,b上的定積分 int(F,v,a,b); %求函數(shù)表達(dá)式F在區(qū)間a,b上的關(guān)于變量v的定積分,例8:求不定積分 syms a b x I=int(exp(a*x)*cos(b*x),x) I = (exp(a*x)*(a*cos(b*x) + b*sin(b*x)/(a2 + b2),例9:求定積分 syms x I=int(sin(x)15,x,0,pi/2) I

10、= 2048/6435,對含參數(shù)的運(yùn)算,符號計(jì)算的優(yōu)勢在于可以提供一個(gè)用于進(jìn)一步分析的解析表達(dá)式。,級數(shù)的符號計(jì)算 級數(shù)符號計(jì)算的基本語句 S=symsum(g); % 求通項(xiàng)g的無窮和 S=symsum(g,n); % 求通項(xiàng)g的對整變量n的無窮和 S=symsum(g,a,b); % 求通項(xiàng)g的下標(biāo)在a和b之間的項(xiàng)的和 S=symsum(g,n,a,b); % 求通項(xiàng)g的下標(biāo)變量n在a和b之間的項(xiàng)的和,例10:求級數(shù)的和 syms n symsum(1/n2,1,inf) ans = pi2/6,例11: 求冪級數(shù)的和 syms x n f=xn/n f = xn/n S=symsum(f

11、,n,1,inf) S = piecewise(1 1, -log(1 - x),Taylor展式 Taylor展式的基本語句 F=taylor(f); %求函數(shù)f 的馬克勞林級數(shù)的前6項(xiàng) F=taylor(f,n); %求函數(shù)f 的馬克勞林級數(shù)的前n項(xiàng) F=taylor(f,n,x0); %求函數(shù)f 的在x0展開的Taylor級數(shù)的前n項(xiàng) F=taylor(f,v,n,v0); %求函數(shù)f對變量v在v0展開的Taylor級數(shù)的前n項(xiàng),例12: 求函數(shù) 的在0點(diǎn)的taylor展式前8項(xiàng) syms x S=taylor(1-x)/(1+x),8) S = 2*x6 - 2*x7 - 2*x5 +

12、 2*x4 - 2*x3 + 2*x2 - 2*x + 1,微積分的數(shù)值計(jì)算,符號運(yùn)算有很大的局限性。第一是計(jì)算是純推理過程,效率非常低。第二是大量的問題無法利用解析的形式給出,例如我們經(jīng)常使用的概率積分 就無法利用牛頓-萊布尼茲公式推導(dǎo)得到。,相比之下,數(shù)值計(jì)算在實(shí)際計(jì)算中有符號運(yùn)算無法比擬的優(yōu)點(diǎn)。一是效率高,對公式稍微復(fù)雜一些或規(guī)模稍微大一些的問題,只能利用數(shù)值計(jì)算。二是我們經(jīng)常遇到的計(jì)算問題,都可以利用數(shù)值計(jì)算得到滿意的解,而符號運(yùn)算只能處理其中一小部分問題。,數(shù)值計(jì)算需要對連續(xù)變量離散求解! 數(shù)值計(jì)算需要設(shè)計(jì)數(shù)值算法,數(shù)值導(dǎo)數(shù),數(shù)值計(jì)算是在離散節(jié)點(diǎn)上的近似計(jì)算,通常對連續(xù)的區(qū)間要首先進(jìn)

13、行離散。對計(jì)算區(qū)間a.b上的導(dǎo)數(shù)。,首先將區(qū)間離散成等距的節(jié)點(diǎn) 其中步長 與下標(biāo)k無關(guān)。,一階和二階導(dǎo)數(shù)的計(jì)算由公式 給出, 誤差為 O(h2)。,Matlab的數(shù)值導(dǎo)數(shù)計(jì)算可以利用語句diff實(shí)現(xiàn)。diff語句對非符號計(jì)算表示向前差分,即對 函數(shù)diff(x)輸出 diff(x,2)輸出 diff(diff(x),即 一般, diff(x,k) 的計(jì)算可依次類推。,注: diff(x) 的元素個(gè)數(shù)比x少 1!,一階導(dǎo)數(shù)的計(jì)算 一階導(dǎo)數(shù)可以利用 計(jì)算。由公式 df的第i個(gè)元素與 f(x) 在 xi+1/2點(diǎn)的值最接近,誤差是O(h2),例13:利用diff語句計(jì)算函數(shù) y=sin(x) 的導(dǎo)數(shù)

14、,并計(jì)算誤差。 參考程序: x=0:pi/100:2*pi; y=sin(x); x1=pi/200:pi/100:2*pi; y1=diff(y)./diff(x); y11=sin(x1); subplot(1,2,1) plot(x1,y1,x1,y11) subplot(1,2,2) y12=cos(x1); plot(x1,y1-y12) legend(df,f) legend(error) 結(jié)果圖:,二階導(dǎo)數(shù)的計(jì)算 語句 輸出二階向前差分,即 可以利用 來計(jì)算y(x)的二階導(dǎo)數(shù)。,計(jì)算的是n-2個(gè)內(nèi)點(diǎn)上的二階導(dǎo)數(shù),不包含兩個(gè)端點(diǎn)上的導(dǎo)數(shù)!,例14:計(jì)算 y=sin(x)的二階導(dǎo)數(shù),

15、并與 sin(x)比較。 參考程序: x=0:pi/100:2*pi; y=sin(x); dx=diff(x); d2y=diff(y,2)./dx(2:end).2; subplot(1,2,1) plot(x,y,x(2:end-1),d2y) legend(func,numerd2f) subplot(1,2,2) plot(x(2:end-1),d2y+sin(x(2:end-1) legend(error),數(shù)值積分 一元數(shù)值積分 Matlab中的數(shù)值積分函數(shù)quad采用自適應(yīng)復(fù)化Simpson公式,語句格式為 I=quad(fun,a,b) %計(jì)算函數(shù)fun在a,b上的定積分。

16、I=quad(fun,a,b,tol) %計(jì)算函數(shù)fun在a,b上精度tol的定積分。,fun的 取法: 過去的取法是一個(gè)字符串作為所調(diào)用的函數(shù)名字。如 quad(sin, 0, pi/2) 在matlab7以上的版本中引入了函數(shù)句柄,可以在函數(shù)quad中利用指示一個(gè)函數(shù)句柄。例如 sin %調(diào)用以sin為函數(shù)名的函數(shù)子程序 (x,y)(x.3+y.3) %建立并調(diào)用一個(gè)函數(shù)句柄 (x)myfun(x,a) %調(diào)用含有參數(shù)的子程序myfun,例15:計(jì)算積分 k=1,2,3,4,5 并與精確值比較。,I=zeros(1,5); for k=1:5 g=strcat(sin(x).,num2st

17、r(k); I(k)=quad(g,0,pi/2); end I0=1,pi/4,2/3,3*pi/16,8/15; subplot(1,2,1) plot(I-I0,p) legend(errors of quad) for k=1:5 g=strcat(sin(x).,num2str(k); I(k)=quad(g,0,pi/2,1e-12); end subplot(1,2,2) plot(I-I0,p) legend(errors of quad),積分函數(shù)quadv 積分函數(shù)quadv類似于函數(shù)quad,但它可以對含有向量參數(shù)的函數(shù)積分,而且可以對矩陣函數(shù)積分。,例16:計(jì)算積分 k

18、=1,2,3,4,5,這里k 可以看做參數(shù)向量!,參考語句: format rat I=quadv(sin(x).1:5,0,pi/2) I = 1 355/452 2/3 1065/1808 8/15,例17:計(jì)算矩陣函數(shù) 的積分,參考語句: format rat I=quadv(x)exp(-x).*cos(x),(1-x)./sqrt(1+x.2); x.*log(1+x),sin(x)./x,1,2) I = 249/7261 -548/2111 1075/769 689/1045,可用于廣義積分的積分函數(shù)quadgk 函數(shù)quadgk采用Gauss-Kronrod數(shù)值積分方法,可以解決無窮區(qū)間、無窮間斷點(diǎn)等問題。其使用方法與quad類似,但積分限可以取inf,例18:計(jì)算 參考語句: I=quadgk

溫馨提示

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

評論

0/150

提交評論