代数(线性?)函数的特征函数

时间:2013-03-11 18:55:14

标签: r matrix linear-algebra

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

如果k + j-s-i = / = 0

,则[i,j,k] = 0

[i,j,k] = p [s]如果k + j-s-i = 0(p [s]给定向量)

这可以通过特征函数写为p [s] *ð(k + j-s-i)或者通过Kronecker delta函数写为p [s] *ð(0,k + j-s-i)。 R中是否有任何“内置”功能可以实现 - 我的意思是内置“ð”吗?

或者我必须自己写吗?

我认为构建函数对于f(x)= 0返回1是非常有用的,否则为0,至少对于线性f(x)

1 个答案:

答案 0 :(得分: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)

会起作用。