最大值排序 [x=value1, x=value2,...] 形式的元素列表
Sorting list of elements of the form [x=value1, x=value2,...] in maxima
当我使用 solve 或 allroots 方法时,我获得了一个未排序的元素列表。问题是我想对该列表进行排序,但我不能,因为它的形式是 [x=value1,x=value2,x=value3] 并且排序函数不能很好地处理这些 x= 表达式。请问你是怎么解决的?
背景
我的问题出现在获取勒让德多项式的根时的高斯正交上下文中。为了获得公式的系数,我需要对拉格朗日多项式进行积分,为此我需要对列表进行排序。
我使用 ev 函数解决了我的问题,尽管有些人说他们使用 rhs 函数如下:
r:allroots(p);
r:sort(makelist(ev(x,r[i]),i,n+1),"<");
其中最后一条语句删除了 x=... 表达式并对点进行排序。
我了解到您想要的是按右侧值排序并仅获取右侧。
(%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
将对一般表达式进行排序。
当我使用 solve 或 allroots 方法时,我获得了一个未排序的元素列表。问题是我想对该列表进行排序,但我不能,因为它的形式是 [x=value1,x=value2,x=value3] 并且排序函数不能很好地处理这些 x= 表达式。请问你是怎么解决的?
背景
我的问题出现在获取勒让德多项式的根时的高斯正交上下文中。为了获得公式的系数,我需要对拉格朗日多项式进行积分,为此我需要对列表进行排序。
我使用 ev 函数解决了我的问题,尽管有些人说他们使用 rhs 函数如下:
r:allroots(p);
r:sort(makelist(ev(x,r[i]),i,n+1),"<");
其中最后一条语句删除了 x=... 表达式并对点进行排序。
我了解到您想要的是按右侧值排序并仅获取右侧。
(%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
将对一般表达式进行排序。