2016-05-17 9 views
0

解決方法またはすべての方法を使用すると、ソートされていない要素のリストが取得されます。問題は、私はそのリストをソートしたいが、それは[x = value1、x = value2、x = value3]の形式であり、ソート関数はこれらのx =式でうまく動作しないためできない。これを解決する方法はありますか?ルジャンドル多項式の根を得ながら最大値の[x = value1、x = value2、...]という形式の要素のリストの並べ替え

背景

私の問題は、ガウスの求積法の文脈において生じます。数式の係数を得るために、私はラグランジュ多項式を積分する必要があります。そうするためには、リストを並べる必要があります。

+0

あなたが望むようにソートされていないリストの例を挙げてください。 –

+0

Allrootsを使って3次のルジャンドル多項式を求めると、[x = 0.0、x = 0.77459666924148、x = -0.77459666924148]となり、プロセス全体を処理する関数を実装するのを避けるリストを手動で注文する必要があります – Rodrigo

+0

まあ、私は '(%i1)sort([x = 0.0、x = 0.77459666924148、x = -0.77459666924148]);' yield = '0.77459666924148、x = 0.0、x = 0.77459666924148 'を得ます。あなたが望むものではありませんか?違うものを手に入れますか? –

答えて

1

あなたが望むのは、右側の値で並べ替えて、右側だけを取得することです。この場合sort以来

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

(%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] 

または同等には、一般的な表現をソートします。

0

一部の人々は、以下のように、彼らは右辺の機能を使用したが、私は、EVの機能を使用して私の問題を解決しました:

最後の文は、x = ...式を削除し、ポイントを注文
r:allroots(p); 
r:sort(makelist(ev(x,r[i]),i,n+1),"<"); 

+0

これは、必要以上に複雑です。 –

関連する問題