Code: Selecteer alles
##eenheden:
## M: N mm
## s: N/mm^2
## b,d,h: mm
def f(M,b,d,s,h):
return b*h**3-(b-2*d)*(h-2*d)**3+((-6)*M*h)/s
def Df(M,b,d,s,h):
return -(6*M)/s-3*(b-2*d)*(h-2*d)**2+3*b*h**2
b=300.0
M=200.0e6
d=10.0
s=500/1.15
h=b #lijkt mij een logische keuze van de startwaarde
while abs(f(M,b,d,s,h))>10**-8:
h=h-f(M,b,d,s,h)/Df(M,b,d,s,h)
print h,"mm"
De minimum waarde voor h bij dat soort profielen moet dus gelijk of groter dan nul zijn en is dan mogelijk met jouw geponeerde programma te berekenen,alleen ik weet niet waar dat zou kunnen worden ingevoerd.
Code: Selecteer alles
b=300.0
M=200.0e6
d=10.0
s=500/1.15