2016-05-17 32 views
0

當我使用solve或allroots方法時,我獲得未排序的元素列表。問題是我想排序列表,但我不能,因爲它的形式是[x = value1,x = value2,x = value3],排序函數對這些x =表達式不起作用。你如何解決這個問題?在高斯積分的情況下以最大值形式排列[x = value1,x = value2,...]形式的元素列表

背景

我的問題出現的同時,獲得勒讓德多項式的根。爲了獲得我需要積分拉格朗日多項式的公式的係數,爲了做到這一點,我需要列表排序。

+0

請給出一個不按照你的意願排序的例子。 –

+0

對於階數爲3的Legendre多項式,使用allroots我得到[x = 0.0,x = 0.77459666924148,x = -0.77459666924148],我必須手動排序列表,這樣可以避免我執行一個完成整個過程的函數。 – Rodrigo

+0

好吧,我得到'(%i1)sort([x = 0.0,x = 0.77459666924148,x = -0.77459666924148]);'yield'[x = - 0.77459666924148,x = 0.0,x = 0.77459666924148]'。這不是你想要的嗎?你有不同的東西嗎? –

回答

1

我收集你想要的是按右手邊的值進行排序並獲得右手邊。

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

或等效在這種情況下

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

因爲sort將一般表達式進行排序。

0

我解決了使用EV功能我的問題,但也有一些人說,他們使用的RHS功能如下:

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

其中最後一個語句刪除X = ...表達式,並命令該點。

+0

這比它需要更復雜一些。 –

相關問題