Site icon R-bloggers

Fractals and Kronecker product

[This article was first published on Freakonometrics - Tag - R-english, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

A few years ago, I went to listen to Roger Nelsen who was giving a talk about copulas with fractal support. Roger is amazing when he gives a talk (I am also a huge fan of his books, and articles), and I really wanted to play with that concept (that he did publish later on, with Gregory Fredricks and José Antonio Rodriguez-Lallena). I did mention that idea in a paper, writen with Alessandro Juri, just to mention some cases where deriving fixed point theorems is not that simple (since the limit may not exist).

The idea in the initial article was to start with something quite simple, a the so-called transformation matrix, e.g.


Here, in all areas with mass, we spread it uniformly (say), i.e. the support of is the one below, i.e. th of the mass is located in each corner, and  is in the center. So if we spread the mass to have a copula (with uniform margin,)we have to consider squares on intervals , and ,

Then the idea, then, is to consider , where  is the tensor product (also called Kronecker product) of with itself. Here, the support of is

Then, consider , where is the tensor product of with itself, three times. And the support of is

Etc. Here, it is computationally extremely simple to do it, using this Kronecker product. Recall that if , then

So, we need a transformation matrix: consider the following matrix,
> k=4
> M=matrix(c(1,0,0,1,
+            0,1,1,0,
+            0,1,1,0,
+            1,0,0,1),k,k)
> M
[,1] [,2] [,3] [,4]
[1,]    1    0    0    1
[2,]    0    1    1    0
[3,]    0    1    1    0
[4,]    1    0    0    1
Once we have it, we just consider the Kronecker product of this matrix with itself, which yields a matrix,
> N=kronecker(M,M)
> N[,1:4]
[,1]  [,2] [,3] [,4]
[1,]     1    0    0    1
[2,]     0    1    1    0
[3,]     0    1    1    0
[4,]     1    0    0    1
[5,]     0    0    0    0
[6,]     0    0    0    0
[7,]     0    0    0    0
[8,]     0    0    0    0
[9,]     0    0    0    0
[10,]    0    0    0    0
[11,]    0    0    0    0
[12,]    0    0    0    0
[13,]    1    0    0    1
[14,]    0    1    1    0
[15,]    0    1    1    0
[16,]    1    0    0    1
And then, we continue,
> for(s in 1:3){N=kronecker(N,M)}
After only a couple of loops, we have a matrix. And we can plot it simply to visualize the support,
> image(N,col=c("white","blue"))
As we zoom in, we can visualize this fractal property,

To leave a comment for the author, please follow the link and comment on their blog: Freakonometrics - Tag - R-english.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.