有什么方法可以让我把一个多项式或多项式的系数以一个元素的形式存储在R向量中?

问题描述 投票:0回答:1

我想创建一个R函数,生成循环有限群F[x]。

基本上,我需要找到一种方法来存储多项式,或者至少是多项式的系数,在一个R向量的单个元素中。

例如,如果我有一个集合 F={0,1,x,1+x},我想把这四个多项式保存到一个 R 向量中,例如

F[1] <- 0 + 0x
F[2] <- 1 + 0x
F[3] <- 0 + x
F[4] <- 1 + x

但我一直收到错误信息:"替换的物品数量不是替换长度的倍数 "要替换的物品数量不是替换长度的倍数"

有没有一种方法,至少可以让我做一些类似。

F[1] <- (0,0)
F[2] <- (1,0)
F[3] <- (0,1)
F[4] <- (1,1)

作为参考,如果有人对我正在研究的数学问题感兴趣 我的整个R函数目前是:

gf <- function(q,p){

  ### First we need to create an irreducible polynomial of degree p
  poly <- polynomial(coef=c(floor(runif(p,min=0,max=q)),1)) #This generates the first polynomial of degree p with coefficients ranging between the integer values of 0,1,...,q
  for(i in 1:(q^5*p)){ #we generate/check our polynomial a sufficient amount of times to ensure that we get an irreducible polynomial
    poly.x <- as.function(poly) #we coerce the generated polynomial into a function
    for(j in 0:q){ #we check if the generated polynomial is irreducible
      if(poly.x(j) %% q == 0){ #if we find that a polynomial is reducible, then we generate a new polynomial
        poly <- polynomial(coef=c(floor(runif(p,min=0,max=q)),1)) #...and go through the loop again
      }
    }
  }
  list(poly.x=poly.x,poly=poly)

  ### Now, we need to construct the cyclic group F[x] given the irreducible polynomial "poly"
  F <- c(rep(0,q^p)) #initialize the vector F
  for(j in 0:(q^p-1)){
    #F[j] <- polynomial(coef = c(rep(j,p)))
    F[j] <- c(rep(0,3))  
  }
  F
}
r vector abstract polynomials coefficients
1个回答
1
投票

确保 F 是一个列表,然后使用 [[]] 来放置数值

F<-list()
F[[1]] <- c(0,0)
F[[2]] <- c(1,0)
F[[3]] <- c(0,1)
F[[4]] <- c(1,1)

列表可以容纳异构数据类型。如果所有的东西都将是一个常数和x的系数,那么你也可以使用一个矩阵。只需将每一行的值用 [row, col] 类型的子集。您需要在创建时初始化大小。它不会像列表一样自动增长。

F <- matrix(ncol=2, nrow=4)
F[1, ] <- c(0,0)
F[2, ] <- c(1,0)
F[3, ] <- c(0,1)
F[4, ] <- c(1,1)

1
投票

您必须将这些存储为字符串,因为否则R将尝试解释运算符。您可以有

F[1] <- "0 + 0x"

甚至是一个矩阵,这对于应用和其他你可能想做的操作来说更加灵活。

mat <- matrix(c(0,1,0,1,0,0,1,1), ncol=2)
© www.soinside.com 2019 - 2024. All rights reserved.