# [R] help about solving two equations

Fri Mar 12 23:41:02 CET 2010

```Here you go:

require(BB)

fn <- function(x, s){
f <- rep(NA, length(x))
f <- digamma(x) - digamma(x+x) - s
f <- digamma(x) - digamma(x+x) - s
f
}

nr <- 10
smat <- matrix(runif(2*nr, -3, -1), nr, 2)
soln <- matrix(NA, nr, 2)

for (i in 1:nr) {
ans <- dfsane(par=c(1,1), fn=fn, s=smat[i, ], control=list(trace=FALSE))
soln[i, ] <- ans\$par
}

Hope this helps,
Ravi.

-----Original Message-----
From: Shaoqiong Zhao [mailto:zhaos at uwm.edu]
Sent: Friday, March 12, 2010 5:20 PM
Cc: r-help at r-project.org
Subject: Re: [R] help about solving two equations

Hello Professor Ravi,

I installed the BB package. It is so useful. Thanks a lot for developing this package for solving nonloinear equations.

I tried couple of different ways to do the loop, but still ccant work it out.

Now I have s, which is a 1000*2 matrix,
I want to solve p,q for each row of s,

I use the following loop but it still give me one value for p,q

for (i in 1:1000)
{
fn <- function(x, s){
f <- rep(NA, length(x))
f <- digamma(x) - digamma(x+x) - s[i,1]
f <- digamma(x) - digamma(x+x) - s[i,2]
f
}
s <- matrix(
ans <- dfsane(par=c(1,1), fn=fn, s=s)
}
ans\$par

I still only get one value for p,q. I tried couple of different ways to do the loop, still didnt get any results.

Sorry to bother you again.

Best,
Annie

----- Original Message -----
To: "Shaoqiong Zhao" <zhaos at uwm.edu>
Cc: r-help at r-project.org
Sent: Thursday, March 11, 2010 8:02:43 PM GMT -06:00 US/Canada Central
Subject: Re: [R] help about solving two equations

You have to install it from CRAN before you can load it into your session.

____________________________________________________________________

Assistant Professor,
Division of Geriatric Medicine and Gerontology
School of Medicine
Johns Hopkins University

Ph. (410) 502-2619

----- Original Message -----
From: Shaoqiong Zhao <zhaos at uwm.edu>
Date: Thursday, March 11, 2010 9:00 pm
Subject: Re: [R] help about solving two equations
Cc: r-help at r-project.org

> Hello Professor Ravi,
>
>  I tried to load BB into R, but I got the following message:
>   library("BB")
>  Error in library("BB") : there is no package called 'BB'
>  > library(BB)
>  Error in library(BB) : there is no package called 'BB'
>
>  Can you tell me why?
>
>  Thanks a lot.
>
>  Annie
>
>
>  ----- Original Message -----
>  To: "Shaoqiong Zhao" <zhaos at uwm.edu>
>  Cc: r-help at r-project.org
>  Sent: Wednesday, March 10, 2010 9:03:25 PM GMT -06:00 US/Canada Central
>  Subject: Re: [R] help about solving two equations
>
>  Here is how you can solve:
>
>  fn <- function(x, s){
>  f <- rep(NA, length(x))
>  f <- digamma(x) - digamma(x+x) - s
>  f <- digamma(x) - digamma(x+x) - s
>  f
>  }
>
>  require(BB) # load this package for the nonlinear solver
>
>  s <- c(-2, -4)  # one row of s1 and s2
>
>  ans <- dfsane(par=c(1,1), fn=fn, s=s)
>
>  ans\$par  # solutions for p and q
>
>  You can then loop through for each row of s1 and s2 and solve it to
> get corresponding p and q.
>
>  Ravi.
>  ____________________________________________________________________
>
>  Assistant Professor,
>  Division of Geriatric Medicine and Gerontology
>  School of Medicine
>  Johns Hopkins University
>
>  Ph. (410) 502-2619
>
>
>  ----- Original Message -----
>  From: Shaoqiong Zhao <zhaos at uwm.edu>
>  Date: Wednesday, March 10, 2010 8:19 pm
>  Subject: [R] help about solving two equations
>  To: r-help at r-project.org
>
>
>  > I have two matrix s1 and s2, each of them is 1000*1.
>  >  and I have two equations:
>  >  digamma(p)-digamma(p+q)=s1,
>  >  digamma(q)-digamma(p+q)=s2,
>  >  and I want to sovle these two equations to get the value of x and
> y,
>  > which are also two 1000*1 matrices.
>  >
>  >  I write a program like this:
>  >
>  >  f <- function(x) {
>  >  p<- x; q <- x;
>  >   ((digamma(p)-digamma(p+q)-s1[2,]) )^2
>  > +((digamma(q)-digamma(p+q)-s2[2,]) )^2
>  >   }
>  >  s <- 1:10/10
>  >  g <- expand.grid(p = s, q = s)
>  >  idx <- which.min(apply(g, 1, f))
>  >  idx
>  >  g[idx,]
>  >
>  >  I am not sure if this is correct and also this can only solve one
>
>  > row. How to get the whole 1000 rows of p and q?
>  >
>  >  Thanks.
>  >
>  >  Annie
>  >
>  >  ______________________________________________
>  >  R-help at r-project.org mailing list
>  >