> On 20 Jul 2016, at 19:20, Sachin Kuruvithadam <sac...@hotmail.it> wrote: > > > > I have a 3x3 matrix Omega whose elements are unknown, and a defined 3x1 > parameter vector alpha. I want to define a 3x1 vector delta whose elements > are still unknown but depend on alpha and Omega as shown in this image > (sorry, but when I write in Latex format it doesn't appear formatted in my > preview): > > https://www.dropbox.com/home/Public?preview=model.png >
I cannot access your image. > The term in the brackets simplifies into a number K, so I wrote this function: > > Alpha=c(-0.248,1.092,-0.518) > K=function(gamma1,gamma2,gamma3,gamma12,gamma23,gamma13){ > > (1+Alpha[1]*(Alpha[1]+Alpha[2]*gamma12/(gamma1*gamma2)+Alpha[3]*gamma13/(gamma1*gamma3)))^(-1/2) > } > This functions a scalar not a function > gamma1, gamma2, gamma3 are the elements in the diagonal of the 3x3 matrix > Omega, whereas gamma12, gamma13, gamma23 are the off-diagonal elements (each > elements repeats itself twice, e.g. gamma12=gamma21). So, by putting 6 > arbitrary values in K() I get the scalar. So far so clear. > > The rest I'm not sure about. I want R to return me a vector delta defined as > shown above. How can I write a function that would perform this algebraic > calculation, and return a 3x1 vector delta whose elements are the same > unknowns as in Omega, but shifted/multiplied by the numbers in alpha? > You can simplify the gamma arguments of your function K by passing the matrix Omega. Like this <code> K1 <- function(Omega,Alpha){ gamma1 <- Omega[1,1] gamma2 <- Omega[2,2] gamma3 <- Omega[3,3] gamma12 <- Omega[1,2] gamma13 <- Omega[1,2] gamma23 <- Omega[2,3] z <- 1+Alpha[1]*(Alpha[1]+Alpha[2]*gamma12/(gamma1*gamma2)+Alpha[3]*gamma13/(gamma1*gamma3))^(-1/2) z } </code> Define as given in your mail Alpha <- c(-0.248,1.092,-0.518) Fake a symmetric matrix Omega <code> set.seed(413: library(Matrix) x <- Matrix(round(runif(9),2), 3) x Omega <- forceSymmetric(x) Omega # and run the function K1(Omega,Alpha) </code> The result is a scalar: 0.8149383 Depending on the contents of Omega the result of K1 may be NaN. You will have to redefine your function if you want it to return a vector. You have not given enough information to give an answer to your question. > [[alternative HTML version deleted]] > Please do not post in HTML. Berend Hasselman > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.