2016-05-17 17 views
0

Wenn ich entweder Lösung oder Allroots-Methode verwende, erhalte ich eine Liste von Elementen, die nicht sortiert ist. Das Problem ist, dass ich diese Liste sortieren möchte, aber ich kann nicht, weil es die Form [x = Wert1, x = Wert2, x = Wert3] hat und Sortierfunktion nicht gut mit diesen x = Ausdrücken funktioniert. Kannst du das lösen?Liste der Elemente der Form sortieren [x = Wert1, x = Wert2, ...] in Maxima

Hintergrund

entsteht Mein Problem im Zusammenhang mit der Gaußschen Quadratur während der Wurzeln von Legendre-Polynomen zu erhalten. Um die Koeffizienten der Formel zu erhalten, muss ich Lagrange-Polynome integrieren, und dazu muss ich die Liste geordnet haben.

+0

Bitte geben Sie ein Beispiel für eine Liste, die nicht wie gewünscht sortiert ist. –

+0

Für das Legendre-Polynom der Ordnung 3 erreiche ich mit Allroots [x = 0.0, x = 0.77459666924148, x = -0.77459666924148] und muss die Liste manuell anordnen, wodurch ich keine Funktion implementieren kann, die den gesamten Prozess erledigt. – Rodrigo

+0

Ich bekomme '(% i1) sort ([x = 0.0, x = 0.77459666924148, x = -0.77459666924148]);' ergibt '[x = - 0.77459666924148, x = 0.0, x = 0.77459666924148] '. Willst du das nicht? Hast du etwas anderes? –

Antwort

1

Ich nehme an, dass Sie nach den Werten auf der rechten Seite sortieren und nur die rechte Seite erhalten möchten.

(%i1) allroots (x^3 - 3*x); 
(%o1)  [x = 0.0, x = 1.732050807568877, x = - 1.732050807568877] 
(%i2) sort (map (rhs, %o1)); 
(%o2)   [- 1.732050807568877, 0.0, 1.732050807568877] 

oder äquivalent in diesem Fall

(%i3) map (rhs, sort (%o1)); 
(%o3)   [- 1.732050807568877, 0.0, 1.732050807568877] 

seit sort werden allgemeine Ausdrücke sortieren.

0

löste ich mein Problem ev Funktion obwohl einige Leute sagten, dass sie rhs Funktion wie folgt verwendet:

r:allroots(p); 
r:sort(makelist(ev(x,r[i]),i,n+1),"<"); 

wo die letzte Anweisung der x entfernt = ... Ausdrücke und ordnet die Punkte.

+0

Dies ist etwas komplizierter als es sein muss. –