我现在需要复习一下我的python。。。出于某种原因,我在将这段冗长的代码转换为返回数组中的值的简单for循环时遇到了麻烦
我正在创建一个代码来解决非对称横截面梁的直接应力。编写正确的答案并不难,我也没有问题,但我知道我可以利用for循环将代码减少到几行
以下是我编写的代码:
Ixx = 5.6667 * 10**5
Iyy = 1.493 * 10**5
Ixy = - .8 * 10**5
x = 66.7
y = -50
Sy = np.array([400, 600, 800, 1000, 1200, -400, -800,-1000, -1200])
Sx = np.array([600, 600, 400, -400, -600, 600, 400, -400, 600])
Mx = -Sx * 1000
My = Sy * 1000
DEN = (Ixx * Iyy) - (Ixy**2)
Sigma0 = (((((My[0] * Ixx) - (Mx[0]*Ixy)) * x) + ((Mx[0] * Iyy) - (My[0] * Ixy)) * y)) / DEN
print(Sigma0, 'MPa')
Sigma1 = (((((My[1] * Ixx) - (Mx[1]*Ixy)) * x) + ((Mx[1] * Iyy) - (My[1] * Ixy)) * y)) / DEN
print(Sigma1, 'MPa')
Sigma2 = (((((My[2] * Ixx) - (Mx[2]*Ixy)) * x) + ((Mx[2] * Iyy) - (My[2] * Ixy)) * y)) / DEN
print(Sigma2, 'MPa')
Sigma3 = (((((My[3] * Ixx) - (Mx[3]*Ixy)) * x) + ((Mx[3] * Iyy) - (My[3] * Ixy)) * y)) / DEN
print(Sigma3, 'MPa')
Sigma4 = (((((My[4] * Ixx) - (Mx[4]*Ixy)) * x) + ((Mx[4] * Iyy) - (My[4] * Ixy)) * y)) / DEN
print(Sigma4, 'MPa')
Sigma5 = (((((My[5] * Ixx) - (Mx[5]*Ixy)) * x) + ((Mx[5] * Iyy) - (My[5] * Ixy)) * y)) / DEN
print(Sigma5, 'MPa')
Sigma6 = (((((My[6] * Ixx) - (Mx[6]*Ixy)) * x) + ((Mx[6] * Iyy) - (My[6] * Ixy)) * y)) / DEN
print(Sigma6, 'MPa')
Sigma7 = (((((My[7] * Ixx) - (Mx[7]*Ixy)) * x) + ((Mx[7] * Iyy) - (My[7] * Ixy)) * y)) / DEN
print(Sigma7, 'MPa')
Sigma8 = (((((My[8] * Ixx) - (Mx[8]*Ixy)) * x) + ((Mx[8] * Iyy) - (My[8] * Ixy)) * y)) / DEN
print(Sigma8, 'MPa')
我已尝试通过执行以下操作将此代码转换为for循环:
def CalcStress(Ixx, Iyy, Ixy, Mx, My, x, y, DEN):
n = My.shape[0]
result = np.zeros_like(Mx)
for i in range(0, n-1):
result[i] = (((((My[i] * Ixx) - (Mx[i]*Ixy)) * x) + ((Mx[i] * Iyy) - (My[i] * Ixy)) * y)) / DEN
return result
我试图打印结果,但无论我把打印语句放在哪里,都没有结果。我上一节python课是大约两年前,我正试图通过编写我知道答案的简单压力问题来复习它。似乎是一个简单的问题,我错过了,但似乎找不到什么。提前感谢您的帮助
我更喜欢可读性更强的内容:
输出:
使用原始数据索引打印输出的版本:
输出:
您可以将其用于循环:
或者,如果要使用该函数,则必须调用该函数,并且可以交替使用:
我最终发现了问题所在。当试图打印CalcStress时,我没有包含参数。我现在做的这段代码给出了我想要的数组中的答案
结果=[189275356421502,-156,-334,-443,-502]
相关问题 更多 >
编程相关推荐