python - Numpy - 查找自定义 A nxn 矩阵和 B nx1 的乘积 Ax=b

标签 python arrays numpy multiplication

想要从 Ax=b 中找到 x 。首先,我声明了两个矩阵,AnxnB nx1。他们的公式如下所示。 为一个: enter image description here

对于 b : enter image description here

矩阵可以采用任何n。在我的代码中,我将其值设置为 10。我首先将它们设置为零来声明它们。然后我声明两个矩阵的 1,2n-1n 行的每个元素。对于 A,我还循环每个数字以获得所需的外观,每个相同的数字前进一列并向前行,从 n=2 直到 n-2.然后,为了计算 Ax=b ,为了查找 x ,我使用乘法:

x = np.dot(np.linalg.inv(A), b) 

但没有得到正确答案。有什么帮助吗?我还完整地发布了我的代码:

import numpy as np

n = 10

################## AAAAA matrix #############################################
A = np.zeros([n, n], dtype=float)  # initialize to f zeros

# ------------------first row
A[0][0] = 6
A[0][1] = -4
A[0][2] = 1
# ------------------second row
A[1][0] = -4
A[1][1] = 6
A[1][2] = -4
A[1][3] = 1
# --------------two last rows-----
# n-2 row
A[- 2][- 1] = -4
A[- 2][- 2] = 6
A[- 2][- 3] = -4
A[- 2][- 4] = 1
# n-1 row
A[- 1][- 1] = 6
A[- 1][- 2] = -4
A[- 1][- 3] = 1

# --------------------------- from second to n-2 row --------------------------#
j = 0
for i in range(2, n - 2):
    if j == (n - 4):
        break
    A[i][j] = 1
    j = j + 1

j = 1
for i in range(2, n - 2):
    if j == (n - 3):
        break
    A[i][j] = -4
    j = j + 1

j = 2
for i in range(2, n - 2):
    if j == (n - 2):
        break
    A[i][j] = 6
    j = j + 1

j = 3
for i in range(2, n - 2):
    if j == (n - 1):
        break
    A[i][j] = -4
    j = j + 1

j = 4
for i in range(2, n - 2):
    if j == (n):
        break
    A[i][j] = 1
    j = j + 1
# -----------------------------end coding of 2nd to n-2 r-------------#
print("\nMatrix A is : \n", A)

####### b matrix ######################################
b = np.zeros(n,float).reshape((n,1))
b[0] = 3
b[1] = -1
#b[len(b) - 1] = 3
#b[len(b) - 2] = -1
b[[0,-1]]=3; b[[1,-2]]=-1

print("\nMatrix b is \n", b)

#################### result ########################
x = np.dot(np.linalg.inv(A), b)

print("\n\n The result is : \n", x)

实际上我得到的结果都是1,如你所见:

enter image description here

最佳答案

使用matmul方法使得它:

import numpy as np
A = np.array([[1,2], [3,4]], dtype=float)
B = np.array([[3], [4]])
print(np.matmul(np.linalg.inv(A), B))

关于python - Numpy - 查找自定义 A nxn 矩阵和 B nx1 的乘积 Ax=b,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59275378/

相关文章:

python - tkinter 在 Canvas 上可变值

python - 两列Python之间的关系

python - 是否可以在 pandas 中逐行进行 bool 运算?

c++ - 从文本文件中读取,然后在程序中使用输入

python - 如何有效地将 Python 列表分成 20 个 block + 一个切片作为剩余部分?

python - 如何将字符串转换为 python 中的列表?

PHP 在 $_POST 中使用数组时返回 null

c++ - std::array 的内联初始化有什么问题?

python - 像素网格中的圆

python - 如何在不同轴上绘制 numpy 数组的数字?