一、分別運(yùn)用雅克比、高斯-賽德爾兩種迭代方法計(jì)算如下方程:
?
?解:由于系數(shù)方程組不滿足嚴(yán)格行(列)對(duì)角優(yōu)矩陣的條件,即迭代不收斂,故將方程組轉(zhuǎn)化成以下形式:
?
(一)Jacobi迭代法:
迭代方程可以化為:
?得迭代矩陣:
?可以在Matlab編寫出以下迭代程序,創(chuàng)建腳本函數(shù)文件名為Jacobi_solve.m:
?
創(chuàng)建好函數(shù)文件之后,新建腳本,輸入
A:?線性方程組的系數(shù)矩陣(n*n,非奇異)
b:?方程組右邊的常數(shù)項(xiàng)列向量
n:?方程組維數(shù)
x0:?初始值
tol:?精度上限值
N:??最大迭代次數(shù)
調(diào)用函數(shù)Jacobi_solve.m:
?
?
在命令窗口可以看出,當(dāng)取:
?時(shí),得:
?查看程序結(jié)果驗(yàn)證:
?依次收斂下去,雅可比迭代12次,得出程序精確解:
?
(二)Gauss_Seidel迭代法:
迭代方程可以化為:
?
?得迭代矩陣:
?可以在Matlab編寫出以下迭代程序,創(chuàng)建名為Gauss_Seidel_solve.m:
?創(chuàng)建好函數(shù)文件之后,在方法一得基礎(chǔ)上,輸入量不變,注釋掉調(diào)用Jacobi_solve,更改調(diào)用函數(shù)Gauss_Seidel_solve.m:,運(yùn)行函數(shù),觀察命令窗口出現(xiàn)具體迭代過程:
?此時(shí),在命令窗口可以看出,當(dāng)?。?/p>
?時(shí),得:
?繼續(xù)迭代:
?依次收斂迭代下去:
?在命令行窗口可以看出,高斯—賽德爾迭代只需要迭代8次,比雅可比迭代快,程序精確解為:
?
二、采用牛頓-拉夫遜方法求解方程的根:xe^x-1=0
?
解:初步判斷:當(dāng)x=0時(shí),y=-1<0,當(dāng)x=1時(shí),y=e-1>0,函數(shù)在[0,1]內(nèi)方程有解,在指令窗口輸入x=0:0.0001:1,確定好橫坐標(biāo)的范圍后,觀察函數(shù)在坐標(biāo)系中的具體圖像:
?由上圖可以看出函數(shù)y在坐標(biāo)系中的圖線,可以看到過零點(diǎn)在0.5-0.6之間,圖中發(fā)現(xiàn)過零點(diǎn)在0.567附件。我們可以在matlab中新建腳本,按照牛頓拉夫遜求解方程法編寫好函數(shù)之后,創(chuàng)建函數(shù)文件名為newton.m,對(duì)函數(shù)進(jìn)行精確求解(程序如下):
?在函數(shù)圖像的基礎(chǔ)上求導(dǎo)函數(shù),精度為0.0001,繼續(xù)編寫調(diào)用newton(),取x=0.5,0.5710時(shí),畫出函數(shù)切線,觀察驗(yàn)證迭代過程趨向:
?將箭頭中黑色框部分放大觀察一次,二次導(dǎo)函數(shù)切線過零點(diǎn):?
驗(yàn)證結(jié)果發(fā)現(xiàn),函數(shù)的二次導(dǎo)切線過零點(diǎn)已經(jīng)非常趨向于函數(shù)的真解,因此:一共迭代3次即可得出函數(shù)精確解:文章來源:http://www.zghlxwxcb.cn/news/detail-800146.html
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?x=0.5671文章來源地址http://www.zghlxwxcb.cn/news/detail-800146.html
到了這里,關(guān)于電力系統(tǒng)分析常用的三種迭代方法(雅克比、高斯賽德爾、牛頓拉夫遜法)求解方程的精確解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!