For loop 在PARI/GP中的特定值上循环

For loop 在PARI/GP中的特定值上循环,for-loop,vector,pari,pari-gp,For Loop,Vector,Pari,Pari Gp,我有一个很大的向量集合,每个向量的形式都是[a,b,c,d] 对于每个向量,我想返回结果[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)=(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]) (请记住,在实践中,我还

我有一个很大的向量集合,每个向量的形式都是
[a,b,c,d]

对于每个向量,我想返回结果
[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)=(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]