專題實驗四方程近似解的求法_第1頁
專題實驗四方程近似解的求法_第2頁
專題實驗四方程近似解的求法_第3頁
專題實驗四方程近似解的求法_第4頁
專題實驗四方程近似解的求法_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、專題實驗四:方程近似解的求法專題實驗四:方程近似解的求法實驗?zāi)康模簩嶒災(zāi)康模海?)掌握求方程近似解的二分法、迭代法和牛頓迭代法)掌握求方程近似解的二分法、迭代法和牛頓迭代法的算法原理,會用的算法原理,會用MATLAB語言編程實現(xiàn)以上方法語言編程實現(xiàn)以上方法。(2)學(xué)會使用)學(xué)會使用MATLAB中內(nèi)部函數(shù)中內(nèi)部函數(shù)fzero、fsolve、roots求解方程。求解方程。l 解方程(代數(shù)方程)是最常見的數(shù)學(xué)問題之一,解方程(代數(shù)方程)是最常見的數(shù)學(xué)問題之一,也是眾多應(yīng)用領(lǐng)域中不可避免的問題之一。也是眾多應(yīng)用領(lǐng)域中不可避免的問題之一。l 目前還沒有一般的解析方法來求解非線性方程,目前還沒有一般的解析

2、方法來求解非線性方程,但如果在任意給定的精度下,能夠解出方程的近似但如果在任意給定的精度下,能夠解出方程的近似解,則可以認(rèn)為求解問題已基本解決,至少可以滿解,則可以認(rèn)為求解問題已基本解決,至少可以滿足實際需要。足實際需要。l 這里主要介紹一些有效的求解方程的數(shù)值方法:這里主要介紹一些有效的求解方程的數(shù)值方法:二分法二分法,迭代法迭代法 和和 切線法切線法。同時要求大家學(xué)會如。同時要求大家學(xué)會如何利用何利用MATLAB 來求方程的近似解來求方程的近似解.一、代數(shù)方程近似求解一、代數(shù)方程近似求解相關(guān)概念相關(guān)概念( )0f x 如果如果 f(x) 是一次多項式,稱上面的方程為是一次多項式,稱上面的方

3、程為線性線性方程方程;否則稱之為;否則稱之為非線性方程非線性方程線性方程線性方程 與與 非線性方程非線性方程這里主要討論這里主要討論非線性方程非線性方程的數(shù)值求解。的數(shù)值求解。求方程的近似解,可分兩步來做:求方程的近似解,可分兩步來做:1、確定根的大致范圍,就是確定一個區(qū)間、確定根的大致范圍,就是確定一個區(qū)間a,b,使所求,使所求的根是位于這個區(qū)間內(nèi)的唯一實根,這一步工作稱為根的根是位于這個區(qū)間內(nèi)的唯一實根,這一步工作稱為根的隔離,區(qū)間的隔離,區(qū)間a,b稱為所求實根的隔離區(qū)間。為了確定稱為所求實根的隔離區(qū)間。為了確定根的隔離區(qū)間,可以先畫出根的隔離區(qū)間,可以先畫出y=f(x)的圖形,然后從圖上

4、定的圖形,然后從圖上定出它與出它與x軸交點(diǎn)的大概位置。軸交點(diǎn)的大概位置。2、以根的隔離區(qū)間的端點(diǎn)作為根的初始近似值,逐步改、以根的隔離區(qū)間的端點(diǎn)作為根的初始近似值,逐步改善根的近似值的精確度,直到求得滿足精確度要求的根的善根的近似值的精確度,直到求得滿足精確度要求的根的近似值。完成這一步工作有多種方法,這里介紹二分法、近似值。完成這一步工作有多種方法,這里介紹二分法、迭代法和切線法。迭代法和切線法。(1 1)二分法)二分法將有根區(qū)間進(jìn)行對分,判斷出解在某個分段內(nèi),然后將有根區(qū)間進(jìn)行對分,判斷出解在某個分段內(nèi),然后再對該段對分,依次類推,直到滿足給定的精度為止再對該段對分,依次類推,直到滿足給定

5、的精度為止 數(shù)學(xué)原理:數(shù)學(xué)原理:介值定理介值定理設(shè)設(shè) f(x) 在在 a, b 上連續(xù),且上連續(xù),且 f(a) f(b)err)&(yc=0); c=(a+b)/2; ya=subs(f,x,a); yb=subs(f,x,b); yc=subs(f,x,c); if ya*ycsyms x;format long然后運(yùn)行程序然后運(yùn)行程序輸入:輸入:請輸入函數(shù)請輸入函數(shù)f(x)= x4+x2-0.8*x-32輸入?yún)^(qū)間輸入?yún)^(qū)間=-3,-2請輸入誤差請輸入誤差=0.00001最后兩次的結(jié)果:最后兩次的結(jié)果:x0= -2.240280151367188x0= -2.2402877807617

6、19(2 2)迭代法)迭代法u 從某個近似根從某個近似根 x0 出發(fā),計算出發(fā),計算得到一個迭代序列得到一個迭代序列 0kkx 1()kkxx k = 0, 1, 2, . . (x) 的不動點(diǎn)的不動點(diǎn)f (x) = 0 x = (x)等價變換等價變換f (x) 的零點(diǎn)的零點(diǎn)u 構(gòu)造構(gòu)造 f (x) = 0 的一個等價方程:的一個等價方程: ( )xx u 若若 收斂,即收斂,即 ,假設(shè),假設(shè) (x) 連續(xù),則連續(xù),則 收斂性分析收斂性分析 1limlim ()limkkkkkkxxx lim*kkxx *x( *)x kx*( *)xx ( *)0f x 即即注:若得到的點(diǎn)列發(fā)散,則迭代法失

7、效!注:若得到的點(diǎn)列發(fā)散,則迭代法失效!例:求方程例:求方程f(x)=x3-x-1=0在在x=1.5附近的根附近的根x033101xxxx改改寫寫成成下下列列形形式式將將方方程程, 3 , 2 , 1131kxxkk由此得到迭代公式:由此得到迭代公式:迭代初值迭代初值x0=1.5,MATLAB程序如下程序如下x0=1.5;for i=1:20 x0=(x0+1)(1/3)end(3 3)牛頓迭代法)牛頓迭代法 xfxfbfafbaxf 及及且且上上具具有有二二階階導(dǎo)導(dǎo)數(shù)數(shù)。在在設(shè)設(shè)0, 內(nèi)內(nèi)有有唯唯一一實實根根。在在上上保保持持定定號號,此此時時方方程程在在baxfba,0,a,b為根的一個隔

8、離區(qū)間。如果在縱坐標(biāo)與二階導(dǎo)數(shù)同號的為根的一個隔離區(qū)間。如果在縱坐標(biāo)與二階導(dǎo)數(shù)同號的那個端點(diǎn)作切線,這切線與那個端點(diǎn)作切線,這切線與x軸交點(diǎn)的橫坐標(biāo)就比端點(diǎn)更接軸交點(diǎn)的橫坐標(biāo)就比端點(diǎn)更接近于方程的根。近于方程的根。取該端點(diǎn)為取該端點(diǎn)為x0,則點(diǎn),則點(diǎn)(x0,f(x0)處的切線方程為:處的切線方程為: 000 xxxfxfyy=0時,解出與時,解出與x軸的交點(diǎn)的橫坐標(biāo)軸的交點(diǎn)的橫坐標(biāo) 0001xfxfxx它比它比x0更接近于方程的根,它可以作為根的近似值。更接近于方程的根,它可以作為根的近似值。 在點(diǎn)在點(diǎn)(x1 , f (x1)作切線,可得根的近似值作切線,可得根的近似值x2,如此下去,如此下去

9、,一般一般,在點(diǎn)在點(diǎn)(xk, f (xk)作切線,可得根的近似值作切線,可得根的近似值kkkkxfxfxx1牛頓牛頓法迭代公式法迭代公式q 牛頓迭代公式000()()f xxxfx1()()kkkkf xxxfx k = 0, 1, 2, . . q 牛頓法的收斂速度( )( )( )f xxxfx 令令2( )( )( )( )f x fxxfx 牛頓法至少二階局部收斂牛頓法至少二階局部收斂當(dāng)當(dāng) f (x*) 0 時時 (x*)=0 (x) 即為牛頓法的迭代函數(shù)即為牛頓法的迭代函數(shù)例例:用牛頓法求:用牛頓法求 x3 - 3x + 1 = 0 的解。的解。(fuluF.m) q 牛頓牛頓的的優(yōu)

10、點(diǎn)優(yōu)點(diǎn)q 牛頓牛頓法是目前求解非線性方程法是目前求解非線性方程 的主要方法的主要方法至少二階局部收斂,收斂速度較快,特別是當(dāng)?shù)c(diǎn)至少二階局部收斂,收斂速度較快,特別是當(dāng)?shù)c(diǎn)充分靠近精確解時。充分靠近精確解時。q 牛頓牛頓的缺點(diǎn)的缺點(diǎn)l 對重根收斂速度較慢(線性收斂)對重根收斂速度較慢(線性收斂)l 對初值的選取很敏感,要求初值相當(dāng)接近真解對初值的選取很敏感,要求初值相當(dāng)接近真解在實際計算中,可以先用其它方法獲得真解的一個粗糙近在實際計算中,可以先用其它方法獲得真解的一個粗糙近似,然后再用牛頓法求解。似,然后再用牛頓法求解。MATLAB程序如下:程序如下:f=input(請輸入函數(shù)請輸入函數(shù)

11、:f(x)=);n=input(請輸入迭代次數(shù)請輸入迭代次數(shù):n=);x0=input(請輸入處值請輸入處值:x0=);f1=diff(f);for i=1:n m=subs(f,x,x0); n=subs(f1,x,x0); x0=x0-m/nend注意:注意: 輸入函數(shù)前先符號化變量輸入函數(shù)前先符號化變量x例:用切線法求方程例:用切線法求方程04 . 19 . 01 . 123xxx的實根的近似值,使誤差不超過的實根的近似值,使誤差不超過10-3解:解:0,1是根的一個隔離區(qū)間,在是根的一個隔離區(qū)間,在0,1上上 02 . 2609 . 02 . 232 xxfxxxf 同同號號與與xff

12、 01所以取所以取x0=1為迭代初始值為迭代初始值運(yùn)用以上程序,得結(jié)果:運(yùn)用以上程序,得結(jié)果:x0=0.67065731072581練習(xí):練習(xí):1、用二分法求方程、用二分法求方程013 xx在區(qū)間(在區(qū)間(1,1.5)內(nèi)的實根(要求準(zhǔn)確到小數(shù)點(diǎn)后的第內(nèi)的實根(要求準(zhǔn)確到小數(shù)點(diǎn)后的第2位)位)2、用迭代法求方程、用迭代法求方程xex在附近的一個根,要求精度在附近的一個根,要求精度410的實根的近似值,的實根的近似值,3、用切線法求方程、用切線法求方程01xxe使誤差不超過使誤差不超過10-3二、方程求解二、方程求解(1)、roots(p) %求多項式的根,期中求多項式的根,期中p是多項式向量是多

13、項式向量例:求例:求x3-x2+x-1=0的根的根解:解:p=1 -1,1,-1;roots(p)(2)、solve(fun) %求方程求方程fun=0的符號解,如果不能求得精的符號解,如果不能求得精確的符號解,可以計算可變精度的數(shù)值解。確的符號解,可以計算可變精度的數(shù)值解。例:用例:用solve命令求方程命令求方程x9+x8+1=0的根的根解:解:solve(x9+x8+1)給出了方程的數(shù)值解(給出了方程的數(shù)值解(32位有效數(shù)字的符號量)位有效數(shù)字的符號量)(3)、solve(fun,var) %對指定變量對指定變量var求方程求方程fun=0的符號解的符號解例:解方程例:解方程ax2+bx

14、+c=0解:解:syms a b c x;f=a*x2+b*x+c;solve(f)結(jié)果:結(jié)果:1/2/a*(-b+(b2-4*a*c)(1/2) 1/2/a*(-b-(b2-4*a*c)(1/2) 如果不指明變量,系統(tǒng)默認(rèn)為如果不指明變量,系統(tǒng)默認(rèn)為x,也可指定自變量,比如指,也可指定自變量,比如指定定b為自變量。為自變量。solve(f,b)結(jié)果:結(jié)果:-(a*x2+c)/x(4)、fsolve(fun,x0) %求非線性方程求非線性方程fun=0在在估計值估計值x0附近的近似解附近的近似解解:解:fsolve(x-exp(-x),0)結(jié)果:結(jié)果: 0.56714316503697(5)、

15、fzero(fun,x0) %求函數(shù)求函數(shù)fun在在x0附近的根附近的根例:求方程例:求方程x-10 x+2=0在在x0=0.5附近的根附近的根解:解:y=(x)x-10 x+2;fplot(y,-1,1) %注意不能用注意不能用plotfzero(y,0.5)結(jié)果:結(jié)果:0.3758Matlab中,求一元函數(shù)極值的函數(shù)為中,求一元函數(shù)極值的函數(shù)為 fminbnd 1、此函數(shù)最簡輸入格式為:、此函數(shù)最簡輸入格式為:x=fminbnd(f,a,b)含義為:含義為:求函數(shù)求函數(shù)f在區(qū)間在區(qū)間a,b上的最小值點(diǎn)上的最小值點(diǎn)(自變量值自變量值).2、對于最大值問題,需轉(zhuǎn)化為最小值問題來處理。、對于最大

16、值問題,需轉(zhuǎn)化為最小值問題來處理。 ( -f(x)在區(qū)間在區(qū)間a,b上的最小值就是上的最小值就是f(x)在在a,b的最大值)的最大值) 三、三、 函數(shù)極值的求法函數(shù)極值的求法(1)一元函數(shù)極值的求法)一元函數(shù)極值的求法3、常用格式、常用格式x,fval=fminbnd(f,a,b). 結(jié)果中,結(jié)果中,fval為最小值,為最小值,x為取到最小值的點(diǎn)。為取到最小值的點(diǎn)。例:例:Matlab命令:命令:x,fval=fminbnd(x.2+3*x+1,-2,3)含義是:含義是:求函數(shù)求函數(shù)f(x)=x2+3*x+1在在-2,3內(nèi)的最小值。內(nèi)的最小值。結(jié)果為結(jié)果為x = -1.5000 fval =

17、-1.2500注注:此時函數(shù)很簡單,故沒有使用:此時函數(shù)很簡單,故沒有使用M文件。文件。 多元函數(shù)的最小值問題,在多元函數(shù)的最小值問題,在Matlab中有中有2個經(jīng)常個經(jīng)常使用的函數(shù):使用的函數(shù): 1、fminsearch 2、fminunc 注意注意: 在使用這兩個函數(shù)時,必須首先用在使用這兩個函數(shù)時,必須首先用M文件的文件的形式存儲待求最值的函數(shù),并且需以向量函數(shù)的形形式存儲待求最值的函數(shù),并且需以向量函數(shù)的形式表達(dá);式表達(dá); 最大值問題需轉(zhuǎn)化為最小值問題。最大值問題需轉(zhuǎn)化為最小值問題。(2)多元函數(shù)極值的求法)多元函數(shù)極值的求法此函數(shù)使用單純型法搜索最值;此函數(shù)使用單純型法搜索最值;使用

18、格式:使用格式: x,fval= fminsearch(f,x0) 其中其中f為待求最值的向量函數(shù),為待求最值的向量函數(shù),x0為搜索過程為搜索過程開始時自變量的初始值。開始時自變量的初始值。例:例:fminsearch(f,1,2) 含義為:在含義為:在x=1,2附近搜附近搜尋函數(shù)尋函數(shù)f的最小值。的最小值。 1、 fminsearch 例:例:求函數(shù)求函數(shù)f(x,y)= -(x+y)+(x2+y2+1)在在x=1,y=2 附近的最小值點(diǎn)。附近的最小值點(diǎn)。解決步驟:解決步驟: 1、建立、建立M文件,保存函數(shù)文件,保存函數(shù)f; M文件內(nèi)容為:文件內(nèi)容為: function f1=f1(x) a=-(x(1)+x(2); b=(x(1)2+x(2)2+1); f1=a+b; 2、調(diào)用、調(diào)用fminsearch函數(shù)求最值函數(shù)求最值. 在命令窗口中,輸入:在命令窗口中,輸入: x0=1,2; x,fval=fminsearch(f1,x0) 3、輸出結(jié)果為:、輸出結(jié)果為: X = 0.5000 0.5000 f

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論