Я пытаюсь разрешить функцию множителя Лангранжа в Python, но у меня возникают проблемы с подстановками.
У меня есть огромное уравнение (я здесь упросту) с 5 переменными (x, y, w,г, к).Я сделал частную производную этого уравнения для этих 5 переменных и получил эти пять уравнений (буква в верхнем регистре - это константа, а имя в скобках - это имя уравнения в моем коде на python).Но у меня возникли проблемы с первым 2
1) A C k y ^ 2 / (B x + C y) ^ 2 - Fk (sx) 2) A B k x ^ 2 / (B x + C y) ^ 2 - Gk (sy)
Мое намерение таково:- В уравнении 1 изолировать x, поэтому x будет равен функции y и k (= уравнение 6) - В уравнении 2 изолировать y, так что y будет равен функции x и k (= уравнение 7) - Вуравнение 6 замените y на уравнение 7, поэтому x будет равен функции k (= уравнение 8) - В уравнении 7 замените x на уравнение 8, так что y будет равно функции k (= уравнение 9)
Для этого я пытаюсь использовать симпй.Функция решает для изоляции и замены для замены.Мне удалось выделить все переменные и заменить х в уравнении 6 (получая уравнение 8).Но когда я пытаюсь заменить, чтобы изолировать x уравнения 8, чтобы я мог использовать его для замены в уравнении 6, я получаю пустые результаты.Я думал, что это может быть потому, что у меня есть х в обеих сторонах уравнения, но я не знаю, как поступить
from __future__ import division
from sympy import *
init_printing()
### define varibles
x,y,w,z,k = symbols('x y w z k',real=True)
### define constants
A, B, C, D, E, F, G, H, I, alpha, beta = symbols('A B C D E F G H I alpha beta',real=True)
### define function
def f(x,y,w,z,k): return k * A * x * y / (B * x + C * y) + \
\
D * w **alpha + \
\
E * z **beta - \
\
F * x + G* y - \
\
H*w- \
\
I*z
#************************ X ***********************************
# --------------> DERIVATIVE X
d1 = Derivative(f(x,y,w,z,k),x) #define que será feito derivada parcial de x
dx = d1.doit() #realiza derivada
# --------------> SIMPLIFY x (EQUATION 1)
sx = simplify(dx)
# --------------> ISOLATE x => x = f(y,k) (EQUATION 6)
x_yk = solve(sx,x)
print('------------------------- k em relação a x')
display(x_yk)
#************************ Y ***********************************
# --------------> DERIVATIVE y
d2 = Derivative(f(x,y,w,z,k),y)
dy = d2.doit()
# --------------> SIMPLIFY y (EQUATION 2)
sy = simplify(dy)
# --------------> ISOLATE y => y = g(x,k) (EQUATION 7)
y_xk = solve(sy,y)
print('------------------------- k em relação a y')
display(y_xk)
#************************ SUBSTITUTIONS ***********************************
###### EQUATION 8
x_xk = []
for i in range(len(y_xk)):
for z in range(len(x_yk)):
x_xk.append(solve(sx,x)[z].subs(y,solve(sy,y)[i]))
display(x_xk)
###### Isolate x in equation 8
x_k = []
for i in range(len(x_xk)):
x_k.append(solve(x_xk[i],x))
print('------------------------- Substitui x por y')
display(x_k)
Когда я пытаюсь выделить х в уравнении 8, вместо того, чтобы получить х =функция ки получить ноль.Что я делаю неправильно?Я использовал список, потому что есть несколько результатов для x и y, когда я изолирую их от уравнения 1 и 2