Hallo Ich versuche, die gemeinsame Bedingungen einer Liste, um es zum Beispiel zu vereinfachen, wenn die Liste ich habe, ist:Python: Liste algebraische Vereinfachung
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']]
gibt es eine Funktion, die mir als ein Ergebnis geben könnte :
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']]] ]]
Was ich im Grunde tun möchte, ist und algebraische Reduktion.
A1 B1 Kc Ka + A1 B1 D2 Kc Ka -A1 B1 D1 Kc Ka + A1 B1 D1 KD Ka - B1 D1 C1 Kc Ka KF + B1 D1 F1 Kc Kz Kl
= A1B1 [D1 [- KcKa + KDKa] + D2KcKa + KcKa] + B1D1 [-C1 [KcKaKF] + F1 [KcKzKl]]
Die einzige Voraussetzung für die Vereinfachung ist, dass alle vereinfachten Begriffe von einer Summe oder einem Rest von K abhängen müssen. Mit anderen Worten, alles muss eine Funktion einer linearen Kombination von K sein; [-KcKa + KDKa]; [KcKaKF] = [['- 1', 'Kc', 'Ka'], ['+ 1', 'KD', 'Ka']]; ['+1', 'Kc', 'Ka', 'KF']
Ich versuche, Sympy zu verwenden, aber das Problem, das ich habe, ist, dass die zu reduzierenden Bedingungen von einer Ausrüstung kommen, also weiß ich nie, was die Symbole würden sei und um sympy zu benutzen musst du die symbole deklarieren. Irgendeine Idee, wie ich dieses Problem angehen kann?
Eine sehr interessante Frage. Haben Sie eine Anforderung, dass die Lösung in irgendeiner Weise optimal ist, oder wird eine gute Vereinfachung funktionieren? –
Ihr Problem hat keine eindeutige Lösung: Teilausdrücke können auf mehr als eine gleichwertige Weise berücksichtigt werden. –
Die einzige Voraussetzung ist, dass alle Vereinfachungen von einer Summe oder einem Rest von K abhängen müssen. Mit anderen Worten, alles muss eine Funktion einer linearen Kombination von K sein – user3671704