[R] how to apply summation sign formula to R
David Winsemius
dwinsemius at comcast.net
Tue Aug 27 00:49:48 CEST 2013
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 [dwinsemius at comcast.net]
> Sent: Sunday, August 25, 2013 3:51 AM
> To: David Winsemius
> Cc: Sebastian Hersberger; r-help at r-project.org
> 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 [dwinsemius at comcast.net]
>>> Sent: Saturday, August 24, 2013 8:35 PM
>>> To: Sebastian Hersberger
>>> Cc: r-help at r-project.org
>>> 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
>>
>> ______________________________________________
>> R-help at r-project.org 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
More information about the R-help
mailing list