《實驗三求代數(shù)方程的近似根》由會員分享,可在線閱讀,更多相關(guān)《實驗三求代數(shù)方程的近似根(9頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、實驗三求代數(shù)方程的近似根(解)一、問題背景和實驗?zāi)康亩?相關(guān)函數(shù)(命令)及簡介三、 實驗內(nèi)容四、自己動手一、問題背景和實驗?zāi)康那蟠鷶?shù)方程的根是最常見的數(shù)學(xué)問題之一(這里稱為代數(shù)方程,主要是想和后面的微分方程區(qū)別開為簡明起見,在本實驗的以下敘述中,把代數(shù)方程簡稱為方程),當(dāng)是一次多項式時,稱為線性方程,否則稱之為非線性方程當(dāng)是非線性方程時,由于的多樣性,尚無一般的解析解法可使用,但如果對任意的精度要求,能求出方程的近似根,則可以認為求根的計算問題已經(jīng)解決,至少能滿足實際要求本實驗介紹一些求方程實根的近似值的有效方法,要求在使用這些方法前先確定求根區(qū)間,或給出某根的近似值在實際問題抽象出的數(shù)學(xué)模
2、型中,可以根據(jù)物理背景確定;也可根據(jù)的草圖等方法確定,還可用對分法、迭代法以及牛頓切線法大致確定根的分布情況通過本實驗希望你能:1. 了解對分法、迭代法、牛頓切線法求方程近似根的基本過程;2. 求代數(shù)方程(組)的解二、 相關(guān)函數(shù)(命令)及簡介1abs( ):求絕對值函數(shù)2diff(f):對獨立變量求微分,f 為符號表達式diff(f, a):對變量a求微分,f 為符號表達式diff(f, a, n):對變量 a 求 n 次微分,f 為符號表達式例如:syms x tdiff(sin(x2)*t6, t, 6)ans= 720*sin(x2)3roots(c(1), c(2), , c(n+1)
3、:求解多項式的所有根例如:求解:p = 1 -6 -72 -27;r = roots(p)r = 12.1229 -5.7345 -0.38844solve(表達式):求表達式的解solve(2*sin(x)=1)ans = 1/6*pi5linsolve(A, b):求線性方程組 A*x=b 的解 例如:A= 9 0; -1 8; b=1; 2;linsolve(A, b)ans= 1/919/726fzero(fun, x0):在x0附近求fun 的解其中fun為一個定義的函數(shù),用“函數(shù)名”方式進行調(diào)用例如:fzero(sin, 3)ans= 3.14167subs(f, x , a):將
4、 a 的值賦給符號表達式 f 中的 x,并計算出值例如:subs(x2 , x , 2)ans = 4 三、 實驗內(nèi)容首先,我們介紹幾種與求根有關(guān)的方法:1對分法對分法思想:將區(qū)域不斷對分,判斷根在某個分段內(nèi),再對該段對分,依此類推,直到滿足精度為止對分法適用于求有根區(qū)間內(nèi)的單實根或奇重實根設(shè)在上連續(xù),即 ,或,則根據(jù)連續(xù)函數(shù)的介值定理,在內(nèi)至少存在一點 ,使下面的方法可以求出該根:(1) 令,計算;(2) 若,則是的根,停止計算,輸出結(jié)果若 ,則令,若,則令,;,有、以及相應(yīng)的(3) 若 (為預(yù)先給定的精度要求),退出計算,輸出結(jié)果;反之,返回(1),重復(fù)(1),(2),(3)以上方法可得到
5、每次縮小一半的區(qū)間序列,在中含有方程的根當(dāng)區(qū)間長很小時,取其中點為根的近似值,顯然有以上公式可用于估計對分次數(shù)分析以上過程不難知道,對分法的收斂速度與公比為的等比級數(shù)相同由于,可知大約對分10次,近似根的精度可提高三位小數(shù)對分法的收斂速度較慢,它常用來試探實根的分布區(qū)間,或求根的近似值2. 迭代法1) 迭代法的基本思想:由方程構(gòu)造一個等價方程從某個近似根出發(fā),令,可得序列,這種方法稱為迭代法若 收斂,即,只要連續(xù),有即可知,的極限是的根,也就是的根當(dāng)然,若發(fā)散,迭代法就失敗以下給出迭代過程收斂的一些判別方法:定義:如果根的某個鄰域中,使對任意的,迭代過程,收斂,則稱迭代過程在附近局部收斂定理1
6、: 設(shè),在的某個鄰域內(nèi)連續(xù),并且,則對任何,由迭代決定的序列收斂于定理2:條件同定理 1,則定理3:已知方程,且(1) 對任意的,有(2) 對任意的,有,則對任意的,迭代生成的序列收斂于的根,且 以上給出的收斂定理中的條件要嚴(yán)格驗證都較困難,實用時常用以下不嚴(yán)格的標(biāo)準(zhǔn):當(dāng)根區(qū)間較小,且對某一,明顯小于1時,則迭代收斂 (參見附錄3)2) 迭代法的加速:a) 松弛法:若與同是的近似值,則是兩個近似值的加權(quán)平均,其中稱為權(quán)重,現(xiàn)通過確定看能否得到加速迭代方程是:其中,令,試確定:當(dāng)時,有,即當(dāng),時,可望獲得較好的加速效果,于是有松弛法:,松弛法的加速效果是明顯的 (見附錄4),甚至不收斂的迭代函數(shù)
7、經(jīng)加速后也能獲得收斂b) Altken方法:松弛法要先計算,在使用中有時不方便,為此發(fā)展出以下的 Altken 公式:,是它的根,是其近似根設(shè),因為,用差商近似代替,有,解出,得由此得出公式;,這就是Altken 公式,它的加速效果也是十分明顯的,它同樣可使不收斂的迭代格式獲得收斂(見附錄5)3. 牛頓(Newton)法(牛頓切線法)1) 牛頓法的基本思想:是非線性方程,一般較難解決,多采用線性化方法記:是一次多項式,用作為的近似方程的解為 記為,一般地,記 即為牛頓法公式.2) 牛頓法的收斂速度:對牛頓法,迭代形式為:注意分子上的,所以當(dāng)時,牛頓法至少是二階收斂的,而在重根附近,牛頓法是線性
8、收斂的牛頓法的缺點是:(1)對重根收斂很慢;(2)對初值要求較嚴(yán),要求相當(dāng)接近真值因此,常用其他方法確定初值,再用牛頓法提高精度4. 求方程根(解)的其它方法(1) solve(x3-3*x+1=0)(2) roots(1 0 -3 1)(3) fzero(x3-3*x+1, -2)(4) fzero(x3-3*x+1, 0.5)(5) fzero(x3-3*x+1, 1.4)(6) linsolve(1, 2, 3; 4, 5, 6; 7, 8, 0, 1, 2, 3)體會一下,(2)(5) 用了上述 13 中的哪一種方法?以下是本實驗中的幾個具體的實驗,詳細的程序清單參見附錄具體實驗1:對
9、分法先作圖觀察方程:的實根的分布區(qū)間,再利用對分法在這些區(qū)間上分別求出根的近似值輸入以下命令,可得的圖象:f=x3-3*x+1; g=0; ezplot(f, -4, 4); hold on; ezplot(g, -4, 4); %目的是畫出直線 y=0,即 x 軸grid on; axis(-4 4 -5 5); hold off請?zhí)顚懴卤恚簩嵏姆植紖^(qū)間 該區(qū)間上根的近似值在某區(qū)間上求根的近似值的對分法程序參見附錄1具體實驗2:普通迭代法采用迭代過程:求方程在 0.5 附近的根,精確到第 4 位小數(shù)構(gòu)造等價方程:用迭代公式: ,用 Matlab 編寫的程序參見附錄2請利用上述程序填寫下表:
10、分析:將附錄2第4行中的分別改為以及,問運行的結(jié)果是什么?你能分析得到其中的原因嗎?看看下面的“具體實驗3”是想向你表達一個什么意思用 Matlab 編寫的程序參見附錄3具體實驗3:收斂/發(fā)散判斷設(shè)方程的三個根近似地取,和,這些近似值可以用上面的對分法求得迭代形式一:收斂 (很可能收斂,下同)不收斂 (很可能不收斂,下同) 不收斂迭代形式二: 收斂 不收斂 不收斂迭代形式三: 不收斂收斂收斂具體實驗4:迭代法的加速1松弛迭代法,迭代公式為 程序參見附錄4具體實驗5:迭代法的加速2Altken迭代法迭代公式為:,程序參見附錄5具體實驗6:牛頓法用牛頓法計算方程在-2到2之間的三個根提示:,迭代公
11、式:程序參見附錄6 (牛頓法程序)具體實驗7:其他方法求下列代數(shù)方程(組)的解:(1)命令:solve(x5-x+1=0)(2)命令:x, y=solve(2*x+3*y=0, 4*x2+3*y=1)(3) 求線性方程組的解,已知,命令:for i=1:5for j=1:5m(i, j)=i+j-1;endendm(5, 5)=0;b=1:5linsolve(m, b)思考:若 ,或是類似的但階數(shù)更大的稀疏方陣,則應(yīng)如何得到?四、自己動手1對分法可以用來求偶重根附近的近似解嗎? 為什么?2對照具體實驗2、4、5,你可以得出什么結(jié)論?3選擇適當(dāng)?shù)牡^程,分別使用:(1)普通迭代法;(2)與之相應(yīng)的松弛迭代法和 Altken 迭代法求解方程 在 1.4 附近的根,精確到4位小數(shù),請注意迭代次數(shù)的變化4分別用對分法、普通迭代法、松弛迭代法、Altken 迭代法、牛頓切法線等5種方法,求方程 的正的近似根,(建議取 時間許可的話,可進一步考慮 的情況) 上一頁回目錄 下一頁