• 大小: 2KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: Python
  • 标签: python  

资源简介

用共轭梯度法实现求解线性方程组。 可以用来求解一般的线性方程组方程,程序清晰易懂。

资源截图

代码片段和文件信息

#共轭梯度法
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)] = 

评论

共有 条评论