# Re: [R] B %*% t(B) = R , then solve for B

From: Doran, Harold <HDoran_at_air.org>
Date: Tue, 12 Apr 2011 11:43:28 -0400

### Use the info from lm() help

```ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2,10,20, labels=c("Ctl","Trt"))
```
weight <- c(ctl, trt)
lm.D9 <- lm(weight ~ group)

A <- model.matrix(lm.D9)

> L <- chol(crossprod(A))
> all.equal(crossprod(L), crossprod(A))
[1] TRUE I think this answers your remaining two questions below as ewll.

> -----Original Message-----
> From: r-help-bounces_at_r-project.org [mailto:r-help-bounces_at_r-project.org] On
> Behalf Of Shawn Koppenhoefer
> Sent: Tuesday, April 12, 2011 11:11 AM
> To: r-help_at_r-project.org
> Subject: Re: [R] B %*% t(B) = R , then solve for B
> Importance: High
>
> Hello.
>
> I found a solution that may interest others.
>
> Recall that my problem was how to use R to decompose a matrix into the
> product of a matrix and its transpose. or, symbolically:
>
> For known matrix M (3x3 matrix) and unknown matrix F and its
> transpose t(F)
> where F * t(F) = M
> determine F
>
> The solution using R seems to be :
>
> U=eigen(M)\$vectors
> D=diag(x=eigen(M)\$values)
> F=U %*% sqrt(D)
>
> But now I have two new questions:
> 1. How can I find a solution where F is a triangular matrix.
> 2. How can I find solutions to non-square matrices?
>
> /shawn
>
>
>
> p.s. Here's a numerical example that demonstrates the above.
>
> > M
> [,1] [,2] [,3]
> [1,] 0.6098601 0.2557882 0.1857773
> [2,] 0.2557882 0.5127065 -0.1384238
> [3,] 0.1857773 -0.1384238 0.9351089
>
> > U=eigen(M)\$vectors
> > D=diag(x=eigen(M)\$values)
> > F=U %*% sqrt(D)
>
> > *F %*% t(F)*
> [,1] [,2] [,3]
> [1,] 0.6098601 0.2557882 0.1857773
> [2,] 0.2557882 0.5127065 -0.1384238
> [3,] 0.1857773 -0.1384238 0.9351089
>
>
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help_at_r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help