Хорошо, я знаю, что этот вопрос часто задают, но часто ответы - это специальные решения.Я думаю, вы могли бы сказать, что я пытаюсь понять, почему это не будет работать в дополнение к тому, как заставить его работать.
# ---- Find Spring Rate ---- #
import math
import numpy as np
from pylab import plot, show, title, xlabel, ylabel, axis
import matplotlib as mpl
from matplotlib import pyplot as plt
'''
F = Load
D = mean dia of Coil
d = wire dia
Na = # of active coils
G = Shear Modulus
'''
F = 30 #lbf Assumed load
D = 0.423 #in Measured
d = 0.055 #in Measured
#N_a = 2.75
G = 11.85*10**(6) #psi # pg 526 Table 10-5 - Machine Theory Book
E = 29.0*10**(6) #psi # pg 526 Table 10-5 - Machine Theory Book
X1 = []
Y1 = []
for N_a in range(1,6,0.025):
y = (8*F*D**(3)*N_a)/(d**(4)*G)
k = (d**(4)*G)/(8*D**(3)*N_a)
K=(F//y)
# print("N_a =", N_a)
# print("y=", y)
# print("k=", k)
# print("K=", K)
# print('\n')
X1.append(N_a)
Y1.append(k)
print("X1=", X1)
print("Y1=", Y1)
Когда я запускаю этот код, я получаю следующее
Spring_Rate_Mk1.py", line 25, in <module>
for N_a in range(1,6,0.025):
TypeError: 'float' object cannot be interpreted as an integer
То, что я пробовал:
- np.arange () это работает, но дает мне такие значения для X
X1 = [1.0, 1.025, 1.0499999999999998, 1.0749999999999997, 1.0999999999999996, 1.1249999999999996, 1.1499999999999995, 1.1749999999999994, 1.19999999999994, 1.1999999999999993, 1.22499999999991992991992992991992992992991992992999
Я пробовал N_a = int (N), а также int почти во всех других местах, где я мог бы выразить это Я пытался изменить деление с / на //
разбивая уравнения на части
A = (d**(4)*G)
B = (8*D**(3)*N_a)
k = A/B