2016-05-29 53 views
0

我遇到了一个问题,我已经打开并解释了HERE。简而言之,我需要用数值替代我的分析矩阵中的符号,并将它们汇总在一起。为了更好的解释,我做了下面的图片: enter image description here 当然会有更多的矩阵更大的尺寸。按元素求和几个相等大小的矩阵

但是我决定以不同的方式来解决这个问题,我首先在一个更大的阵列中保存了我的矩阵的所有不同变体,然后从发布到将所有这些变体汇总在一起。这是我的代码到目前为止:

from sympy import* 
import numpy as np 
init_printing() 

T, logS = symbols('T, logS') 
sig_izris = [[300,320,310],[410,435,440],[505, 515, 520]] 
temperatura = [[500],[550],[600]] 
Nap = np.asarray(np.log10(sig_izris)) 
Temp = [] 
for i in range(len(temperatura)): 
    Temp.append(temperatura[i][0]+273.15) #Conversion to Kelvin 

def double_sum(mat, temp, nap): 
    mat_12 = mat.subs(T, temp) 
    mat_12 = mat_12.subs(logS, nap) 
    return np.asarray(mat_12) 


test = Matrix([[logS, T, -1],[1, T**2, logS**2],[logS**3, T**2, 1]]) 
matrika = test 
A = [] 
for i in range(len(Temp)): 
    for j in range(len(Nap[i])): 
     A.append(double_sum(matrika, Temp[i], Nap[i][j])) 
mat_sum = sum(A) 
mat_sum 

但我不完全相信我的代码是100%正确的,或者如果该过程可以优化。 我想知道什么是由他们的元素加总几个数组的正确方法。我试图从运营商模块使用add,甚至试图使用zip,但只是没有设法写入正确的代码。

+1

所以你想添加几个元素明智的矩阵?你的代码似乎并不是一个最小的例子。 – nwk

+0

不,但这就是为什么我将链接添加到我原来的问题。代码由2部分组成,第一部分我定义了一个函数,用实际值替换矩阵中的符号。在第二部分中,我定义了矩阵并通过使用数组A中定义的函数来保存了每个可能的i-j组合。我认为这不是很难理解...... – mcluka

回答

1

要添加相同尺寸的元素方面为您的手写公式显示了几个与NumPy阵列可以简单的写

M = M1 + M2 + M3 

SymPy矩阵同样加入。您可以将两者混合搭配:

import sympy 
from sympy.abc import x 
import numpy 

A = sympy.Matrix([[x,0],[0,x]]) 
B = numpy.eye(2) 
print A + B # Prints "Matrix([[x + 1.0, 0], [0, x + 1.0]])" 

+0

所以'sum(A)'应该是正确的? – mcluka

+0

要真正说明您需要[最小化,完整和可验证](http://stackoverflow.com/help/mcve)示例。您问题中的代码有缩进不良,但修复后也不起作用。 (例如,'T'没有定义。) – nwk

+0

对不起,我解决了它。 – mcluka

相关问题