Loops 如何在PARI/GP中的forstep语句中使用多个序列?
我正试图在Loops 如何在PARI/GP中的forstep语句中使用多个序列?,loops,pari-gp,Loops,Pari Gp,我正试图在PARI/GP中编写一些东西。 我想创建一个向量,它的值从1000到41000,以3000步为单位 因此,我想使用forstep语句。 如果使用1个序列,则此操作很好 例如: forstep(x=1000,41000,3000,print(x)) 但是,我想做一些类似的事情: forstep(x=1000,41000,3000,x[i]=x & i=i+1) 如何做到这一点?让您的方法发挥作用的一种方法是: v=vector(14); i=1; forstep(x=1000
PARI/GP
中编写一些东西。
我想创建一个向量,它的值从1000到41000,以3000步为单位
因此,我想使用forstep语句。
如果使用1个序列,则此操作很好
例如:
forstep(x=1000,41000,3000,print(x))
但是,我想做一些类似的事情:
forstep(x=1000,41000,3000,x[i]=x & i=i+1)
如何做到这一点?让您的方法发挥作用的一种方法是:
v=vector(14); i=1; forstep(x=1000,41000,3000,(v[i]=x) & (i=i+1)); v
我在每项作业的前后加了一个括号。否则,PARI/GP将其视为v[i]=(x&(i=i+1))
。因此,在某些情况下,您可以将两个表达式与&
组合在一起
但是:如果运算符的第一个操作数为零(视为false),则运算符&
将短路。因此,您要寻找的答案是分号代码>。因此:
v=vector(14); i=1; forstep(x=1000,41000,3000,v[i]=x; i=i+1); v
我相信一个分号为v[I]=x的结构;i=i+1
在PARI/GP术语中称为序列。为什么不使用start=1000;结束=41000;阶跃=3000;向量((结束-开始)/步骤,i,i)
?@PiotrSemenov由于几个输入错误,它将无法工作。这似乎还可以:start=1000;结束=41000;阶跃=3000;向量((结束-开始)\step+1,i,start+(i-1)*step)
如果您知道递增的语法,PARI/GP也有:v=vector(14);i=0;步骤(x=1000410003000,v[i++]=x);v