use*_*619 1 python math matrix linear-algebra
不确定这是否是问的正确地方,但这里是。
有谁知道以下代码如何求解 x Lx=y,其中 L 和 y 分别是给定的矩阵和向量?
如果你知道,你能不能把它分解一下,并将每一步与你如何用笔和纸解决它进行比较?
def forward(L, y):
x = []
for i in range(len(y)):
x.append(y[i])
for j in range(i):
x[i]=x[i]-(L[i, j]*x[j])
x[i] = x[i]/L[i, i]
return x
Run Code Online (Sandbox Code Playgroud)
我假设您将矩阵表示为行列表(列表) - 如果不是,只需在矩阵上使用 zip 函数,并将 y 作为元组。我还假设矩阵是方形的,因为具有另一种形式的三角矩阵并没有真正意义。
该过程与上三角形非常相似,只是您从顶部开始。
本质上,您通过点积所做的工作是将矩阵中的每个非零项替换为正确的值(您已经找到),然后将它们全部加起来。当你从另一端减去,并除以第n行第n项的系数时,你只是在求解。
(现在输入一个示例实现)。(假设您有一个采用点积的类或函数,如果不这样做,实现起来应该不难)。(蟒蛇2.7)
def solve(m, y):
v = [0 for i in xrange(len(m))]
for i in xrange(len(m)):
v[i] = (y[i] - v.dotProduct(m[i]))/float(m[i][i])
return v
Run Code Online (Sandbox Code Playgroud)