Я пытаюсь написать код, который решает множитель Лагранжа, но сохраняет промежуточные функции для последующего обратного вызова.
Моя ошибка в объединении и решении частных дифференциалов. Я думаю, что ошибка в выводе решателя.
import sympy as smp
def R1(x):
return 12*x-x**2
def R2(y):
return 8*y-y**2
def R3(z):
return 18*z-3*z**2
def G(L,x,y,z,h):
return L*(x+y+z-h)
x = smp.Symbol('x')
y = smp.Symbol('y')
z = smp.Symbol('z')
L = smp.Symbol('L')
h = 10
H = smp.lambdify([x,y,z,L], R1(x)+R2(y)+R3(z)+G(L,x,y,z,h))
R1_prime = H(x,y,z,L).diff(x)
R2_prime = H(x,y,z,L).diff(y)
R3_prime = H(x,y,z,L).diff(z)
R1_prime_f = smp.lambdify([x,L],R1_prime)
R2_prime_f = smp.lambdify([y,L],R2_prime)
R3_prime_f = smp.lambdify([z,L],R3_prime)
LM = smp.lambdify(L,(smp.sympify(smp.solve(R1_prime_f(x,L),x))+
smp.sympify(smp.solve(R2_prime_f(y,L),y))+
smp.sympify(smp.solve(R3_prime_f(z,L),z))-h))
LMN = smp.solve(LM(L),L)
print(LMN)
Мой вывод
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-81-c72ae9c79af4> in <module>()
31 LM = smp.lambdify(L,(smp.sympify(smp.solve(R1_prime_f(x,L),x))+
32 smp.sympify(smp.solve(R2_prime_f(y,L),y))+
---> 33 smp.sympify(smp.solve(R3_prime_f(z,L),z))-h))
34
35 LMN = smp.solve(LM(L),L)
TypeError: unsupported operand type(s) for -: 'list' and 'int'