我正在尝试编写一个函数,它接受一个数组数组的总和来生成一个最终的数组 - Python

时间:2017-02-16 17:40:59

标签: python-3.x numpy linear-algebra

我试图对由两组不同的值计算的一组数组求和。第一组是我的角度

''' Next are the theta values, starting from Z1 '''
x = np.array([30,-30,0,0,-30,30])
theta = x*np.pi/180

现在第二组值是由此函数创建的七个数字

'''
This function calculates the lamina spacing and outputs it as a list
'''
def Layers(k,N,H,h):
    list1 = []
    for k in range(1, N+2):
        result = (-H/2) + (k-1)*h
        k = k+1
        list1.append(result)
    return list1
k =1
Zl = Layers(k,N,H,h)
'''Convert the list into an array'''
Z = np.array(Zl)    
print(Z)

给出了我的第二组值Z

[-0.00045 -0.0003  -0.00015  0.       0.00015  0.0003   0.00045]

用于设置问题的另一个功能是Qbar功能:

def Qbar(theta):
    T = np.array([(np.cos(theta)**2, np.sin(theta)**2,2*np.sin(theta)*np.cos(theta)),
                  (np.sin(theta)**2,np.cos(theta)**2,-2*np.sin(theta)*np.cos(theta)),
                  (-np.sin(theta)*np.cos(theta),np.sin(theta)*np.cos(theta),
                   np.cos(theta)**2-np.sin(theta)**2)])
    Sbar = np.dot(np.dot(np.transpose(T),Sr),T)
    Qbar = np.linalg.inv(Sbar)
    return Qbar

当我尝试使用此功能时出现问题。每个A矩阵取决于Qbar(θ)* Z值。我试图将所有的A a矩阵相加以获得净A矩阵。我在这里尝试做的是编写一个系统地完成并计算6个角度中每个角度的6个A矩阵的函数,然后将它们相加并吐出结果。

def Amatrix(Qbar,theta,Z,i):
list1 = []
for i in range(0,np.prod(theta.shape)):
    result = Qbar(theta[i])*(Z[i]-Z[i + 1])
    list1.append(result)
    i = i + 1
Am = np.array(list1)
A = np.sum(Am)
return A

i = 0
A = Amatrix(Qbar,theta,Z,i)
print(A)

我想使用我的theta数组的大小作为计数器的限制,这就是我将np.shape(theta)放在范围内的原因。运行此代码的结果给了我

-176734053.14

对于任何知道mathcad的人来说,算法,基础设置和结果可以在下面看到:m是cos(theta),n是s​​in(theta)

Sbar->Qbar, transpose setup

Amatrix algorithm setup

0 个答案:

没有答案