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