以最大值对[x = value1,x = value2,...]形式的元素列表进行排序

时间:2016-05-17 12:38:21

标签: sorting lisp maxima numerical-integration

当我使用solve或allroots方法时,我获得了一个未排序的元素列表。问题是我想对该列表进行排序,但我不能,因为它的形式为[x = value1,x = value2,x = value3],并且sort函数不能很好地处理这些x =表达式。你怎么解决这个问题?

背景

我的问题出现在高斯求积的背景下,同时获得勒让德多项式的根。为了获得公式的系数,我需要整合拉格朗日多项式,为此我需要对列表进行排序。

2 个答案:

答案 0 :(得分: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会对一般表达式进行排序。

答案 1 :(得分:0)

我使用ev函数解决了我的问题,虽然有人说他们使用rhs函数如下:

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

其中最后一个语句删除x = ...表达式并对点进行排序。