我试图对由两组不同的值计算的一组数组求和。第一组是我的角度
''' 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是sin(theta)