我的任務是查找光束的最大偏轉。我需要返回一個兩個元素元組,其中梁的最大偏轉和它發生的點x。我做了一個函數getTotalDeflection,它返回多個載荷下任意點x處的總撓度。我現在需要使用我的getMaxDeflection函數來運行並找到總偏轉最大的x的值,然後在2元組元組中呈現此值和x。查找給定數量輸入的函數的最大返回值和相應的輸入
import scipy.optimize as s
class beam(object):
def __init__(self, E, I, L):
self.E = E
self.I = I
self.L = L
self.Loads = (0.0, 0.0)
self.name = "beam"
def setLoads(self, Loads):
self.Loads = Loads
def beamDeflection(self, Load, x):
P1, a = Load
L = self.L
I = self.I
E = self.E
b = (self.L - a)
if x > a:
return ((P1*b)/(6*L*I*E)) * ((L/b)*((x-a)**3)-(x**3)+((L**2)-(b**2))*x)
else:
return ((P1*b*x)/(6*L*I*E)) * ((L**2)-(x**2)-(b**2))
def getTotalDeflection(self, x):
return sum(self.beamDeflection(loadall, x) for loadall in self.Loads)
def getMaxDeflection(self):
a = s.brentq(self.getTotalDeflection, 0.0, self.L)
return a
我有點卡住,因爲我知道使用scipy.optimize但我的函數返回0.0。
B =光束(8.0E9,1.333E-4,5.0)
b.setLoads([(900,3.1),(700,3.8),(1000,4.2)])
b.getTotalDeflection(X)
任何幫助,將不勝感激。再次謝謝:)
所以你需要檢查列表具有結構'[(deflection1,X1),(deflection2,X2),...]'? – timgeb
可能。這是查看它的一種方式,但是然後maxDeflection函數將不得不將每個可能的x值插入getTotalDeflection從0到5,以找到最大的總偏轉。 – jajabinks
但是,目前還沒有一個名單@timgeb。 – jajabinks