[R] underdetermined system

Ravi Varadhan rvaradhan at jhmi.edu
Tue Oct 16 22:18:28 CEST 2007


Here is a more general R function to solve "any" linear system (under/over
determined):

ls.min <- function(x, y) {
# solves:  x %*% b = y
d <- svd(x)
# min-norm solution
b.min <- d$v %*% diag(1/d$d, length(d$d)) %*% t(d$u) %*% y  
return(b.min)
}

> # underdetermined case
> x <- matrix(c(2, -1, 4, 1, 4, 3), by=T, ncol=3)
> y <- c(8, -1)
> ls.min(x,y)
           [,1]
[1,]  0.7511211
[2,] -1.3946188
[3,]  1.2757848
> 
> # overdetermined case
> x <- matrix(c(2, -1, 4, 1, 4, 3), by=T, ncol=2)
> y <- c(2, -1, 5)
> ls.min(x,y)
     [,1]
[1,] 0.26
[2,] 0.76
> 
>

Best,
Ravi.

----------------------------------------------------------------------------
-------

Ravi Varadhan, Ph.D.

Assistant Professor, The Center on Aging and Health

Division of Geriatric Medicine and Gerontology 

Johns Hopkins University

Ph: (410) 502-2619

Fax: (410) 614-9625

Email: rvaradhan at jhmi.edu

Webpage:  http://www.jhsph.edu/agingandhealth/People/Faculty/Varadhan.html

 

----------------------------------------------------------------------------
--------


-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
Behalf Of Ravi Varadhan
Sent: Tuesday, October 16, 2007 3:18 PM
To: 'yoooooo'; r-help at r-project.org
Subject: Re: [R] underdetermined system

Here is a solution using SVD:

w <- matrix(c(1, 5), ncol=2)
sw <- 2
w.svd <- svd(w)
sw %*% w.svd$u %*% diag(1/w.svd$d, length(w.svd$d)) %*% t(w.svd$v)


> sw %*% w.svd$u %*% diag(1/w.svd$d, length(w.svd$d)) %*% t(w.svd$v)
           [,1]      [,2]
[1,] 0.07692308 0.3846154
>

This, of course, has a smaller norm than (0, 0.4).

Ravi.

----------------------------------------------------------------------------
-------

Ravi Varadhan, Ph.D.

Assistant Professor, The Center on Aging and Health

Division of Geriatric Medicine and Gerontology 

Johns Hopkins University

Ph: (410) 502-2619

Fax: (410) 614-9625

Email: rvaradhan at jhmi.edu

Webpage:  http://www.jhsph.edu/agingandhealth/People/Faculty/Varadhan.html

 

----------------------------------------------------------------------------
--------


-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
Behalf Of yoooooo
Sent: Tuesday, October 16, 2007 3:02 PM
To: r-help at r-project.org
Subject: Re: [R] underdetermined system


Turns out someone asked this before ;)

http://tolstoy.newcastle.edu.au/R/e2/devel/07/04/2981.html


Ravi Varadhan wrote:
> 
> QR is good for overdetermined LS problems, and I don't think that it can
> be
> used for "minimum norm" solution of underdetrmined LS problems.  You need
> LAPACK's Fortran routine DGELS.  I am not sure if this currently available
> in R.
> 
> Ravi.
> 
>
----------------------------------------------------------------------------
> -------
> 
> Ravi Varadhan, Ph.D.
> 
> Assistant Professor, The Center on Aging and Health
> 
> Division of Geriatric Medicine and Gerontology 
> 
> Johns Hopkins University
> 
> Ph: (410) 502-2619
> 
> Fax: (410) 614-9625
> 
> Email: rvaradhan at jhmi.edu
> 
> Webpage:  http://www.jhsph.edu/agingandhealth/People/Faculty/Varadhan.html
> 
>  
> 
>
----------------------------------------------------------------------------
> --------
> 
> 
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
> On
> Behalf Of yoooooo
> Sent: Tuesday, October 16, 2007 11:34 AM
> To: r-help at r-project.org
> Subject: [R] underdetermined system
> 
> 
> Hi, sorry, I'm an idiot.. and I know I'm missing something stupid.. 
> 
> I thought if we solve an underdetermine system with QR, my soln is:
> 
> min ||x|| (L2 sense)  such that Ax = b
> 
> then say i have:
> 
>> w <- matrix(c(1, 5), ncol=2)
>> sw = 2
>> qrW = qr(t(w) %*% w)
>> qr.coef(qrW, t(w) %*% sw)
>      [,1]
> [1,]    2
> [2,]   NA
> 
> but we also have soln (0, 2/5) which obviously has a smaller distance in
> L2
> than (2, 0). Am I missing something very obvious? Thanks a lot!!!!
> 
> - yoooooooooooooooooo
> 
> 
> 
> -- 
> View this message in context:
> http://www.nabble.com/underdetermined-system-tf4634837.html#a13235711
> Sent from the R help mailing list archive at Nabble.com.
> 
> ______________________________________________
> 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.
> 
> ______________________________________________
> 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.
> 
> 

-- 
View this message in context:
http://www.nabble.com/underdetermined-system-tf4634837.html#a13240230
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
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.

______________________________________________
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.



More information about the R-help mailing list