當我使用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]'。這不是你想要的嗎?你有不同的東西嗎? –