遍历 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]
我收集了大量向量,每个向量的形式都是 [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]