資源簡介
用共軛梯度法實現求解線性方程組。
可以用來求解一般的線性方程組方程,程序清晰易懂。
代碼片段和文件信息
#共軛梯度法
import?numpy?as?np
def?initialize(Ab):
????row?=?A.shape[0]
????col?=?A.shape[1]
????x0?=?np.zeros((row1))
????return?x0
def?first_iteration(Ab):
????x0?=?initialize(Ab)
????r0?=?b?-?np.dot(Ax0)
????p0?=?r0
????a0?=?np.dot(r0.Tr0)/np.dot(r0.Tnp.dot(Ar0))
????x1?=?x0?+?a0?*?p0
????return?x0r0p0x1a0
def?conj_grad_iterational(Abnum_iteration?=?100epsilon1?=?10**(-6)epsilon2?=?10**(-6)):
????x0r0p0x1a0?=?first_iteration(Ab)
????x?=?{}
????r?=?{}
????p?=?{}
????a?=?{}
????beta?=?{}
????x[“x“?+?str(0)]?=?x0
????x[“x“?+?str(1)]?=?x1
????r[“r“?+?str(0)]?=?r0
????p[“p“?+?str(0)]?=?p0
????a[“a“?+?str(0)]?=?a0
????for?i?in?range(1num_iteration):
????????r[“r“?+?str(i)]?=?b?-?np.dot(Ax[“x“?+?str(i)])
????????R?=?r[“r“?+?str(i)]
????????beta[“beta“?+?str(i-1)]?=?-?np.dot(np.dot(p[“p“?+?str(i-1)].TA)r[“r“?+?str(i)])/np.dot(np.dot(p[“p“?+?str(i-1)].TA)p[“p“?+?str(i-1)])
????????p[“p“?+?str(i)]?=?r[“r“?+?str(i)]?+?beta[“beta“?+?str(i-1)]?*?p[“p“?+?str(i-1)]
????????P?=?p[“p“?+?str(i)]
????????a[“a“?+?str(i)]?=?np.dot(P.TR)/np.dot(np.dot(P.TA)P)
????????
????????x[“x“?+?str(i+1)]?=?
- 上一篇:使用pyqt5實現的Python-GUI動態作圖
- 下一篇:BP神經網絡馬疝病數據集
評論
共有 條評論