почему sympy subs() ничего не меняет?

#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. я отредактировал свой первый комментарий, но почему-то он не изменился. В любом случае, я решил проблему, спасибо! это работает