当我使用solve或allroots方法时,我获得了一个未排序的元素列表。问题是我想对该列表进行排序,但我不能,因为它的形式为[x = value1,x = value2,x = value3],并且sort函数不能很好地处理这些x =表达式。你怎么解决这个问题?
背景
我的问题出现在高斯求积的背景下,同时获得勒让德多项式的根。为了获得公式的系数,我需要整合拉格朗日多项式,为此我需要对列表进行排序。
答案 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 = ...表达式并对点进行排序。