mkT: Scomposition of a multi-index

View source: R/mkT.R

mkTR Documentation

Scomposition of a multi-index

Description

Given a multi-index, that is a vector of non-negative integers and a positive integer n, the function returns all the lists (v1,...,vn) of non-negative integer vectors, with the same lenght of the multi-index and such that v=v1+...+vn.

Usage

mkT(v = c(), n = 0, vOutput = FALSE)

Arguments

v

vector of integers

n

integer, number of addends

vOutput

optional boolean variable. If equal to TRUE, the function produces a compact output that is easy to read.

Details

From the input vector v of non-negative integers, which represents the multi-index, the function produces all the lists of n vectors (v1,...,vn) of non-negative integers, including the zero vector, having the same lenght of v and such that their sum gives v. Note that two lists are different if they contain the same vectors but permuted.

Value

list

the list of n vectors (v1,...,vn)

Warning

The vector in the first variable must be not empty and must contain all non-negative integers. The second parameter must be a positive integer.

Note

Called by the MFB function in the kStatistics package. The routine uses the mkmSet function in the same package.

Author(s)

Elvira Di Nardo elvira.dinardo@unito.it,
Giuseppe Guarino giuseppe.guarino@rete.basilicata.it

References

Di Nardo E., Guarino G., Senato D. (2011) A new algorithm for computing the multivariate Faa di Bruno's formula. Appl. Math. Comp. 217, 6286-6295. (download from https://arxiv.org/abs/1012.6008)

See Also

mkmSet, MFB

Examples


# Return the scompositions of the vector (1,1) in 2 vectors of 2 non-negative integers 
# such that their sum is (1,1), that is 
# ([1,1],[0,0]) - ([0,0],[1,1]) - ([1,0],[0,1]) - ([0,1],[1,0])
mkT(c(1,1),2)  
# OR (same output) 
mkT(c(1,1),2,FALSE)

# Return the scompositions of the vector (1,0,1) in 2 vectors of 3 non-negative integers 
# such that their sum gives (1,0,1), that is 
# ([1,0,1],[0,0,0]) - ([0,0,0],[1,0,1]) - ([1,0,0],[0,0,1]) - ([0,0,1],[1,0,0]).
# Note that the second value in each resulting vector is always zero.
mkT(c(1,0,1),2) 
# OR (same output) 
mkT(c(1,0,1),2, FALSE) 

# Return the same output of the previous example but in a compact form.
mkT(c(1,0,1),2, TRUE) 

# Return the scompositions of the vector (1,1,1) in 3 vectors of 3 non-negative integers 
# such that  their sum gives (1,1,1). The result is given in a compact form.
for (m in mkT(c(1,1,1),3)) {for (n in m) cat(n," - "); cat("\n")}


kStatistics documentation built on June 8, 2022, 5:05 p.m.