On Aug 26, 2013, at 11:59 AM, Sebastian Hersberger wrote:

Hi David

Thanks for your help.
I tried it for a simplified example with vectors instead of matrices.
Once again the formula:
C = (Σ(from i=0 to i)  A^i ) x B x (Σ(from i=0 to i) A^i )’

I applied it at follows – but couldn’t figure out what’s missing:

library(expm)
i <- c(0,1,2,3,4,5,6,7,8,9,10)
A <- c(1,2,3)
B <- 5
res1 <- Reduce("+", lapply(1:i, function(i) A ^ i) )

I thought I suggested the use of the %^% operator? Doing A^i is only going to give you the element-wise values to the i-th power, not the matrix to the i-th power. (But perhaps that is what you actually wanted, which was never expalined in the portions of the thread which I read. And I would have expected A %^% 0 to be I, so it shouldn't really matter whether the iteration limit was from 0 to 10 or from 1 to 10.)

And you might need to use a final sum( around that Reduce()-ed value if you were not planning on using matrix multiplication. I thought this was supposed to be using matrix math. Please explain the purpose of this effort.


res2 <- res1 * B
res3 <- res2 * t(res1)
res3
     [,1] [,2] [,3]
[1,]   20   45   80


My expected result must be in this case a single number, which is the sum of i=0 to i=10:
i=0 ⇒ 5
i=1 ⇒ 1*5*1 + 1*5*2+1*5*3 + 2*5*1+2*5*2 + 2*5*3+3*5*1+3*5*2+3*5*3 = 180
i = 2 ⇒ ........... (=985)
i=3 ⇒ ....
...
i=10 ⇒ =............



After having adjusted the above provided „R-code“: what is necessary to get from the „vector-solution“ to the matrix- solution“: would it be enough to:
-       define A and B as matrices
-       and replace * by %*%  ?

Perhaps also replacing ^ with %^%. Just a guess. I'm unable to decipher from your still sketchy description what the mathematical operations are supposed to be or do.

--
David.


From: David Winsemius [[email protected]]
Sent: Sunday, August 25, 2013 3:51 AM
To: David Winsemius
Cc: Sebastian Hersberger; [email protected]
Subject: Re: [R] how to apply summation sign formula to R

On Aug 24, 2013, at 6:43 PM, David Winsemius wrote:


On Aug 24, 2013, at 2:13 PM, Sebastian Hersberger wrote:

Thanks. I restate my problem/question and hope its better understandable now.

Let us define A and B as kxk matrices. C is the output (matrix), which I try to calculate for differnt i values.

So for example: I want to caluclate the matrix C for the value i=10:

Therefore, I set:

i <- c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

Finally, I have to define the summation formula in R. My question is how this following summation formula has to be applied to R.

The arithmetic form of the formula equals:

C = (Σ(from i=0 to i)  A^i ) x B x (Σ(from i=0 to i) A^i )’

Which means:
matrix C equals the sum from i=0 to i times matrix A to the power of i

That first term might be (untested in absence of test data by questioner) :

require(expm)
res1 <- Reduce("+", lapply(1:i, function(i) powm(A, i) ) )

I did test it and both my memory about the functions name and its operation were wrong. Try:

res1 <- Reduce("+", lapply(1:i, function(i) A %^% i) )


times matrix B

res2 <- res1 %*% B

times the transposed/invers of the sum from i=0 to i times matrix A to the power of i

Well, the transpose was not generally the inverse when I took linear algebra, but as I said I didn't make it to all the sessions. (I'm assuming it is the transpose.)

res3 <- res2 %*% t(res1)

You could probably do it all in one line, but I like to check my itermediates.

--
David.

I hope I were able to specify my problem in an understandable way. If not, please let me know.

Thanks and regards
Sebastian

________________________________________
From: David Winsemius [[email protected]]
Sent: Saturday, August 24, 2013 8:35 PM
To: Sebastian Hersberger
Cc: [email protected]
Subject: Re: [R] how to apply summation sign formula to R

On Aug 24, 2013, at 6:37 AM, Sebastian Hersberger wrote:

Hi all

I have a short question relating to the usage of the summation sign in R.

Let's define A and B as two kxk matrice.
My goal is to calculate the matrix C for the periods from 1 to 200 (n=1-200).

C^(n) = Σ_(j=1)^n [(Σ_(i=1)^(j-1) A^i ) B (Σ_(i=1)^(j-1) A^i)’ ]

How has that to be implemented in R (lets say for example for period = n = 150)?

I don't follow all this notation but you might want to look at the expm package that has a powm function. It's possible that the expm function may do what you want, but as I said I was unclear what the equation was attempting to do. Perhaps if you explained the steps in mathematical language, then other viewers who actually woke up to attend their linear algebra course might have a better chance of offering assistance.

( When I saw the earlier copy yesterday, I had hopes that such wiser viewers might chime in and still have such hopes.)

--

David Winsemius
Alameda, CA, USA


David Winsemius
Alameda, CA, USA

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

David Winsemius
Alameda, CA, USA


David Winsemius, MD
Alameda, CA, USA

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to