我有一个数值分析分配,我需要通过乘以矩阵来找到一些系数。我们在Mathcad中得到了一个例子,但现在我们必须用另一种编程语言来做,所以我选择了Python。
问题是,通过在各个环境中乘以矩阵,我得到了不同的结果。这是Python中的功能:
from numpy import *
def matrica(C, n):
N = len(C) - 1
m = N - n
A = [[0] * (N + 1) for i in range(N+1)]
A[0][0] = 1
for i in range(0, n + 1):
A[i][i] = 1
for j in range(1, m + 1):
for i in range(0, N + 1):
if i + j <= N:
A[i+j][n+j] = A[i+j][n+j] - C[i]/2
A[int(abs(i - j))][n+j] = A[int(abs(i - j))][n+j] - C[i]/2
M = matrix(A)
x = matrix([[x] for x in C])
return [float(y) for y in M.I * x]
如您所见,我正在使用 numpy 库。此函数与Mathcad中的模拟函数一致,直到return
语句(矩阵乘以的部分)更加具体。还有一个观察:如果N = 1
,此函数返回正确的矩阵。
答案 0 :(得分:1)
我不确定我完全理解你的代码是做什么的。你能解释一下吗,比如你实际上正在计算的数学东西。但是,如果你想要一个简单的常规产品,如果你使用numpy.matrix
,为什么不使用已经写好的矩阵产品呢?
a = numpy.matrix(...)
b = numpy.matrix(...)
p = a * b #matrix product