#python #python-3.x #sympy
Вопрос:
Это, возможно, самая простая операция, но все же у меня были некоторые проблемы, ничего не меняется после subs (), я понимаю концепцию симпатии, но чего мне не хватает? Я пытаюсь вывести значение с плавающей точкой для эпсилона.
a = 30 # MPa
k1 = 0.82
b = 365
bw = 300 # mm
hw = 600 # mm
p = 40 # mm
a1 = 1071 # mm^2
a2 = 1071 # mm^2
d = hw - p #
E = 2e5
c = sym.Symbol('c')
fcd = a/1.5
Fc = 0.85*fcd*bw*k1*c
epsilon = (0.003 * (c-p))/c
Fsu = epsilon*E*a2
Fs = a1 * b
expr = (Fc Fsu - Fs)
c = sym.solve([expr],(c))
c = c[1]
z = epsilon.subs(c,c)
Комментарии:
1. Обычно рекомендуется использовать разные переменные, когда они означают что-то другое. Теперь вы используете
c
3 способа. Вы могли бы это сделатьc = sym.Symbol('c')
, и тогдаc_sol = sym.solve([expr],(c))
;c_sol0 = c_sol[0]
иz = epsilon.subs(c, c_sol0)
2. я изменился, как ты и сказал. но дал мне ошибку типа: неподдерживаемые типы операндов для ** или pow (): ошибка «Кортеж» и «Отрицательный один».
3. Вы проверили формат результатов
solve
? В зависимости от типа уравнений это могут быть списки, словари или комбинации. Вы могли бы попробоватьc_sol0 = c_sol[0][0]
4. я отредактировал свой первый комментарий, но почему-то он не изменился. В любом случае, я решил проблему, спасибо! это работает