1. 程式人生 > >Python計算矩陣乘向量,矩陣乘實數的一些小錯誤

Python計算矩陣乘向量,矩陣乘實數的一些小錯誤

計算:Ax-b
A: 2*2
x: 2*1
b: 2*1
so, Ax-b: 2*1

if __name__ == "__main__":
    A = np.array([[4.0, 1.0],
                  [1.0, 3.0]])
    b = np.array([[1.0], [2.0]])
    x_0 = np.array([[2.0], [1.0]])

    r_k = A * x_0 - b

    print(r_k)

這裡寫圖片描述

錯誤!!!
修改:

if __name__ == "__main__":
    A= mat([[4.0, 1.0],
            [1.0, 3.0]]
) b = mat([[1.0], [2.0]]) x_0 = mat([[2.0], [1.0]]) r_k = A * x_0 - b print(r_k)

這裡寫圖片描述

if __name__ == "__main__":
    A= mat([[4.0, 1.0],
            [1.0, 3.0]])
    b = mat([[1.0], [2.0]])
    x_k = mat([[2.0], [1.0]])

    p_k = -x_k  # 21列
    r_k = A * x_k - b # 21列
    alpha_k = (np.transpose(r_k) * r_k) / (np.transpose(p_k) * A * p_k) # 1
1----------------------------------------------- x_k = x_k + alpha_k * p_k #21列 !!!!這裡報錯 ----------------------------------------------- print(x_k)

這裡寫圖片描述

修改:

if __name__ == "__main__":
    A= mat([[4.0, 1.0],
            [1.0, 3.0]])
    b = mat([[1.0], [2.0]])
    x_k = mat([[2.0], [1.0]]
) p_k = -x_k # 2*1 r_k = A * x_k - b # 2*1 alpha_k = (np.transpose(r_k) * r_k) / (np.transpose(p_k) * A * p_k) # 1*1 ----------------------------------------------- x_k = x_k + p_k *alpha_k ----------------------------------------------- print(x_k)

這裡寫圖片描述