Привет Я пытаюсь получить общие условия списка, чтобы упростить его, например, если список у меня есть:Python: Список алгебраическое упрощение
List=[['1','A1','B1','Kc','Ka'],['1','A1','B1','D2','Kc','Ka'],['-1','A1','B1','D1','Kc','Ka'],['1','A1','B1','D1','KD','Ka'],['-1','B1','D1','C1','Kc','Ka','KF'],['1','B1','D1','F1','Kc','Kz','Kl']]
есть любая функция, которая может дать мне в результате :
List_output=[['A1','B1',[['D1',['ka',[['-1','Kc'],['1','KD']]]],['1','Kc','Ka'],['-1','D2','Kc','Ka']]],['B1,D1'[[ 'C1',[-1,'Kc','Ka','kF']],['F1',['1','Kz','Kl','Kc']]] ]]
Что я в основном хочу сделать и алгебраическое сокращение.
А1 В1 Кс Ка + A1 B1 D2 Кс Ка -A1 В1 Д1 Кс Ка + A1 B1 D1 КД Ка - В1 С1 D1 Кс Ка KF + B1 D1 F1 Кс Кз Кл
= А1В1 [D1 [- KcKa + KDKa] + D2KcKa + KcKa] + B1D1 [-C1 [KcKaKF] + F1 [KcKzKl]]
Единственное требование упрощения состоит в том, что все упрощенные члены должны зависеть от суммы или остатка K. Другими словами, все должно быть функцией линейной комбинации K; [-KcKa + KDKa]; [KcKaKF] = [[ '- 1', 'Кс', 'Ка'], [ '+ 1', 'КД', 'Ка']]; ['+1', 'Kc', 'Ka', 'KF']
Я пытаюсь использовать Sympy, но проблема заключается в том, что условия для сокращения исходят от оборудования, поэтому я никогда не знаю, что означают символы быть и использовать sympy, вам нужно объявить символы. Любая идея, как я могу решить эту проблему?
Очень интересный вопрос. У вас есть какие-либо требования к тому, чтобы решение было каким-то образом оптимальным, или любое хорошее упрощение работает? –
Ваша проблема не имеет уникального решения: подвыражения могут быть учтены более чем одним эквивалентным образом. –
Единственное требование состоит в том, что все упрощения должны зависеть от суммы или остатка K. Другими словами, все должно быть функцией линейной комбинации K's – user3671704