当我使用solve或allroots方法时,我获得未排序的元素列表。问题是我想排序列表,但我不能,因为它的形式是[x = value1,x = value2,x = value3],排序函数对这些x =表达式不起作用。你如何解决这个问题?在高斯积分的情况下以最大值形式排列[x = value1,x = value2,...]形式的元素列表
背景
我的问题出现的同时,获得勒让德多项式的根。为了获得我需要积分拉格朗日多项式的公式的系数,为了做到这一点,我需要列表排序。
当我使用solve或allroots方法时,我获得未排序的元素列表。问题是我想排序列表,但我不能,因为它的形式是[x = value1,x = value2,x = value3],排序函数对这些x =表达式不起作用。你如何解决这个问题?在高斯积分的情况下以最大值形式排列[x = value1,x = value2,...]形式的元素列表
背景
我的问题出现的同时,获得勒让德多项式的根。为了获得我需要积分拉格朗日多项式的公式的系数,为了做到这一点,我需要列表排序。
我收集你想要的是按右手边的值进行排序并获得右手边。
(%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
将一般表达式进行排序。
我解决了使用EV功能我的问题,但也有一些人说,他们使用的RHS功能如下:
r:allroots(p);
r:sort(makelist(ev(x,r[i]),i,n+1),"<");
其中最后一个语句删除X = ...表达式,并命令该点。
这比它需要更复杂一些。 –
请给出一个不按照你的意愿排序的例子。 –
对于阶数为3的Legendre多项式,使用allroots我得到[x = 0.0,x = 0.77459666924148,x = -0.77459666924148],我必须手动排序列表,这样可以避免我执行一个完成整个过程的函数。 – Rodrigo
好吧,我得到'(%i1)sort([x = 0.0,x = 0.77459666924148,x = -0.77459666924148]);'yield'[x = - 0.77459666924148,x = 0.0,x = 0.77459666924148]'。这不是你想要的吗?你有不同的东西吗? –