2016-05-17 33 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

这比它需要更复杂一些。 –

相关问题