Не совсем понятно, чего вы пытаетесь достичь.
Из вашего описания матрица будет иметь n+1
элементов (от 1/(n+1)
до n/(n+1)
), и я предполагаю, что оставшаяся матрицаразреженный.Это не простая структура для достижения с помощью векторизованных вычислений, но она может быть достигнута в одном цикле for
, таким образом, построенном за O(n)
время, с учетом матрицы размера n+1
.В приведенном ниже коде я представляю пример такого кода.Идея состоит в том, чтобы пройти матрицу в противоположном направлении и назначить каждому только 1 значение типа.
Create_Matrix <- function(n){
n1 = n + 1 #Last row, avoid n computations
n2 = n1 + 1
output <- diag(1/n1, nrow = n1, ncol = n1)
for(i in seq(n)){
output[i + 1, i] = output[n1 - i, n2 - i] = output[[1]] * i
}
output
}