遍历 PARI/GP 中的特定值

Looping over specific values in PARI/GP

我收集了大量向量,每个向量的形式都是 [a,b,c,d]

对于每个向量,我想 return 结果 [a,b,c,d,a+b^2+c^3+d^4]。这样做的最佳方法是什么?

例如,假设我的向量是 V = [ [1,2,3,4], [5,6,7,8], [9, 10, 11, 12] ]。最好的方法是定义一个函数,例如:

test( W ) = for( i=1, #W, print( [ [W[i][1],W[i][2],W[i][3],W[i][4],W[i][1]+W[i][2]^2+W[i][3]^3+W[i][4]^4] ] ) ) ?

(请记住,在实践中我还会有更多的矢量集合)

感觉这种做法很天真,有没有更好的方法?特别是,这是最快的方法吗?有没有更好的方法来存储我的矢量集合?

使用矩阵来存储向量的向量。然后只需附加包含指数总和的新列。看例子:

V = [[1,2,3,4], [5,6,7,8], [9, 10, 11, 12]];  /* your vector of vectors */

M = matconcat([V[1]; V[2]; V[3]]);
M_log = log(M);

matconcat([M, M[,1] + exp(2*M_log[,2]) + exp(3*M_log[,3]) + exp(4*M_log[,4])])
> [1  2  3  4 288.00]
> [5  6  7  8 4480.00]
> [9 10 11 12 22176.00]