1

我想用以下元素创建矩阵 A[i,j,k]:

A[i,j,k] = 0 如果 k+jsi =/= 0

A[i,j,k] = p[s] if k+jsi =0 ( p[s] 是给定向量)

这可以由特征函数写为 p[s]*ð(k+jsi) 或由克罗内克三角函数写为 p[s]*ð(0,k+jsi)。R中是否有任何“内置”功能可以提供 - 我的意思是内置“ð”?

还是我必须自己写?

我想构建函数会非常有用,该函数在 f(x)=0 时返回 1,否则返回 0,至少对于线性 f(x)

4

1 回答 1

3

我会将其重写为

A[i,j,k] = p[k+j-i] if that exists, otherwise 0

然后可以将其实现为

p <- c(1,2,3,4,5)

pfun <- function(x) {
  if (x < 1 | x > length(p)) {
    0
  } else {
    p[x]
  }
}

n <- 5
A <- array(0, c(n, n, n)) 

for (i in 1:n) {
  for (j in 1:n) {
    for (k in 1:n) {
      A[i,j,k] <- pfun(k+j-i)
    }
  }
}

可能有比三重嵌套 for 循环更优雅的东西。

至于你问的功能,很简单

as.numeric(f(x)==0)

会工作。

于 2013-03-11T19:12:39.823 回答