#python-3.x
#python-3.x
Вопрос:
типы данных столбцов следующие:
Unnamed: 0 object
Shear stress (τ) in N/m2 object
Unnamed: 2 object
Unnamed: 3 float64
Kte object
Unnamed: 5 object
Kre object
Unnamed: 7 object
Kae object
Unnamed: 9 object
Unnamed: 10 float64
Ktc object
Unnamed: 12 object
Krc object
Unnamed: 14 object
Kac object
Unnamed: 16 object
Unnamed: 17 float64
wdz float64
Unnamed: 19 float64
Unnamed: 20 float64
Unnamed: 21 float64
Unnamed: 22 float64
Unnamed: 23 float64
Unnamed: 24 float64
Unnamed: 25 float64
Unnamed: 26 float64
dFx float64
Unnamed: 28 float64
dFy float64
Unnamed: 30 float64
dFz float64
Unnamed: 32 float64
Fx_1 int64
Fy_1 int64
Fz_1 int64
Fx_2 int64
Fy_2 int64
Fz_2 int64
dtype: object
Ниже приведен мой код:
def integrand_x1(x, Kte_1, Ktc_1, Kae_1, Kac_1, Kre_1, Krc_1, Wdz):
r = 0.0002
f = 2/360*10**(-5)
S = r f*sin(x) - sqrt(r**2 - (f**2)*(cos(x))**2)
dFa_1 = (Kac_1*S Kae_1)*Wdz
dFr_1 = (Krc_1*S Kre_1)*Wdz
dFt_1 = (Ktc_1*S Kte_1)*Wdz
return (cos(30*pi/180)*dFa_1 sin(30*pi/180)*cos(5.4*pi/180)*dFr_1 - sin(30*pi/180)*sin(5.4*pi/180)*dFt_1)/((cos(30*pi/180))**2 (sin(30*pi/180))**2*cos(2*5.4*pi/180))
def integrand_x2(x, Kte_2, Ktc_2, Kae_2, Kac_2, Kre_2, Krc_2, Wdz):
r = 0.0002
f = 2/360*10**(-5)
S = r f*sin(x) - sqrt(r**2 - (f**2)*(cos(x))**2)
dFa_2 = (Kac_2*S Kae_2)*Wdz
dFr_2 = (Krc_2*S Kre_2)*Wdz
dFt_2 = (Ktc_2*S Kte_2)*Wdz
return (cos(30*pi/180)*dFa_2 sin(30*pi/180)*cos(5.4*pi/180)*dFr_2 - sin(30*pi/180)*sin(5.4*pi/180)*dFt_2)/((cos(30*pi/180))**2 (sin(30*pi/180))**2*cos(2*5.4*pi/180))
Kte_1 = df.iloc[i,4]
Kte_2 = df.iloc[i,5]
Kre_1 = df.iloc[i,6]
Kre_2 = df.iloc[i,7]
Kae_1 = df.iloc[i,8]
Kae_2 = df.iloc[i,9]
Ktc_1 = df.iloc[i,11]
Ktc_2 = df.iloc[i,12]
Krc_1 = df.iloc[i,13]
Krc_2 = df.iloc[i,14]
Kac_1 = df.iloc[i,15]
Kac_2 = df.iloc[i,16]
t = (df.iloc[i,0])
Wdz = t/sin(31.19*pi/180)
df['Fx_1'] = 0
df['Fy_1'] = 0
df['Fz_1'] = 0
df['Fx_2'] = 0
df['Fy_2'] = 0
df['Fz_2'] = 0
for i in range(0,1999,1):
df.Fx_1.iloc[i] = quad(integrand_x1, 95*pi/180, 0, args=(Kte_1, Ktc_1, Kae_1, Kac_1, Kre_1, Krc_1, Wdz)) quad(integrand_x1, 0, 15*pi/180, args=(Kte_1, Ktc_1, Kae_1, Kac_1, Kre_1, Krc_1, Wdz))
Ответ №1:
quad возвращает кортеж, и вы пытаетесь добавить два кортежа в последней строке.
Комментарии:
1. Я удалил второй четырехчленный термин, и он по-прежнему выдавал ту же ошибку
2. Не могли бы вы попробовать
df.Fx_1.iloc[i], err = quad(....
?3. Эй, но весь столбец Fx_1 имеет то же значение. Этого не должно происходить, потому что Ktc_1, Kac_1 и т.д. Все меняются с помощью «i». Пожалуйста, помогите
4. Вы должны пересмотреть свою реализацию. Я не знаю, что вы точно вычисляете. Quad возвращает два числа. Первое — это значение интеграла, а второе — оценка абсолютной ошибки в значении интеграла. Изначально у вас есть quad(..) quad(…). Если quad(…) возвращает (1,2), quad(..) quad(…) объединяют два кортежа (1,2,1,2). Вы хотите доказуемо сделать 1 1 = 2
5. Нет, это не об этом добавлении. Я убрал второй термин. Проблема в «i». Во фрейме данных для разных значений «i» все столбцы имеют разные значения. Тем не менее, весь столбец после интеграции имеет то же значение.