Re: [R] How to solve a non-linear system of equations using R

2008-06-04 Thread Ravi Varadhan
Jorge,

You can use the package BB to try and solve this problem.

I have re-written your functions a little bit.

 # --
# Constants
# --

l=1
m=0.4795
s=0.4795

# --
# Functions to estimate f_i-k_i
# --

myfn - function(d){
d1 - d[1]
d2 - d[2]
d3 - d[3]
d4 - d[4]
res - rep(NA, 4)
res[1] -
2*d1+2*sqrt(2)*d1*d2+2*sqrt(3)*d2*d3+4*d3*d4-l*m*(1+d1^2+d2^2+d3^2+d4^2)
res[2] -
2*sqrt(2)*d2+2*d1^2+2*sqrt(6)*d1*d3+4*d2^2+4*sqrt(3)*d2*d4+6*d3^2+8*d4^2-l*(
m^2+m^3*s^(-1))*(1+d1^2+d2^2+d3^2+d4^2)
res[3] -
6*d1+12*sqrt(2)*d1*d2+18*sqrt(3)*d2*d3+48*d3*d4+2*sqrt(6)*d3+4*sqrt(6)*d1*d4
-l*(m^3+3*m^4*s^(-1)+3*m^6*s^(-2))*(1+d1^2+d2^2+d3^2+d4^2)
res[4] -
12*sqrt(2)*d2+12*d1^2+36*d2^2+72*d3^2+120*d4^2+20*sqrt(6)*d1*d3+56*sqrt(3)*d
2*d4+4*sqrt(6)*d4-l*((m^4+6*m^6*s^(-1)+15*m^6*s^(-2)+15*m^7*s^(-3))-3*l^(2)*
(m^2+m^3*s^(-1))^2)*(1+d1^2+d2^2+d3^2+d4^2)
res
}

myfn.opt - function(d){
# re-writing myfn to be used for minimization
d1 - d[1]
d2 - d[2]
d3 - d[3]
d4 - d[4]
res - rep(NA, 4)
res[1] -
2*d1+2*sqrt(2)*d1*d2+2*sqrt(3)*d2*d3+4*d3*d4-l*m*(1+d1^2+d2^2+d3^2+d4^2)
res[2] -
2*sqrt(2)*d2+2*d1^2+2*sqrt(6)*d1*d3+4*d2^2+4*sqrt(3)*d2*d4+6*d3^2+8*d4^2-l*(
m^2+m^3*s^(-1))*(1+d1^2+d2^2+d3^2+d4^2)
res[3] -
6*d1+12*sqrt(2)*d1*d2+18*sqrt(3)*d2*d3+48*d3*d4+2*sqrt(6)*d3+4*sqrt(6)*d1*d4
-l*(m^3+3*m^4*s^(-1)+3*m^6*s^(-2))*(1+d1^2+d2^2+d3^2+d4^2)
res[4] -
12*sqrt(2)*d2+12*d1^2+36*d2^2+72*d3^2+120*d4^2+20*sqrt(6)*d1*d3+56*sqrt(3)*d
2*d4+4*sqrt(6)*d4-l*((m^4+6*m^6*s^(-1)+15*m^6*s^(-2)+15*m^7*s^(-3))-3*l^(2)*
(m^2+m^3*s^(-1))^2)*(1+d1^2+d2^2+d3^2+d4^2)
sum(res^2)
}

library(BB)
 
p0 - runif(4, -1,0)
ans1 - dfsane(par=p0, fn=myfn)
ans2 - spg(par=p0, fn=myfn.opt)
ans1
ans2


Note that the above does not produce a redual of zero, so the system can't
be solved exactly.  I tried a large number of random starting values without
improving upon the solution provided by spg.  So, you may want to check
your system for its correctness.

Hope this helps,
Ravi.

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Jorge Ivan Velez
Sent: Tuesday, June 03, 2008 5:09 PM
To: R mailing list
Subject: [R] How to solve a non-linear system of equations using R

Dear R-list members,

I've had a hard time trying to solve a non-linear system (nls) of equations
which structure for the equation i, i=1,...,4, is as follows:


f_i(d_1,d_2,d_3,d_4)-k_i(l,m,s) = 0(1)


In the expression above, both f_i and k_i are known functions and l, m and s
are known constants. I would like to estimate the vector d=(d_1,d_2,d_3,d_4)
which is solution of (1). Functions in R to estimate f_i-k_i are at the end
of this message.

Any help/suggestions/comments would be greatly appreciated.

Thanks in advance,

Jorge


# --
# Constants
# --

l=1
m=0.4795
s=0.4795

# --
# Functions to estimate f_i-k_i
# --

f1=function(d){
d1=d[1]
d2=d[2]
d3=d[3]
d4=d[4]
res=2*d1+2*sqrt(2)*d1*d2+2*sqrt(3)*d2*d3+4*d3*d4-l*m*(1+d1^2+d2^2+d3^2+d4^2)
res
}

f2=function(d){
d1=d[1]
d2=d[2]
d3=d[3]
d4=d[4]
res=2*sqrt(2)*d2+2*d1^2+2*sqrt(6)*d1*d3+4*d2^2+4*sqrt(3)*d2*d4+6*d3^2+8*d4^2
-l*(m^2+m^3*s^(-1))*(1+d1^2+d2^2+d3^2+d4^2)
res
}

f3=function(d){
d1=d[1]
d2=d[2]
d3=d[3]
d4=d[4]
res=6*d1+12*sqrt(2)*d1*d2+18*sqrt(3)*d2*d3+48*d3*d4+2*sqrt(6)*d3+4*sqrt(6)*d
1*d4-l*(m^3+3*m^4*s^(-1)+3*m^6*s^(-2))*(1+d1^2+d2^2+d3^2+d4^2)
res
}


f4=function(d){
d1=d[1]
d2=d[2]
d3=d[3]
d4=d[4]
res=12*sqrt(2)*d2+12*d1^2+36*d2^2+72*d3^2+120*d4^2+20*sqrt(6)*d1*d3+56*sqrt(
3)*d2*d4+4*sqrt(6)*d4-l*((m^4+6*m^6*s^(-1)+15*m^6*s^(-2)+15*m^7*s^(-3))-3*l^
(2)*(m^2+m^3*s^(-1))^2)*(1+d1^2+d2^2+d3^2+d4^2)
res
}

[[alternative HTML version deleted]]

__
R-help@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@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] How to solve a non-linear system of equations using R

2008-06-03 Thread Jorge Ivan Velez
Dear R-list members,

I've had a hard time trying to solve a non-linear system (nls) of equations
which structure for the equation i, i=1,...,4, is as follows:


f_i(d_1,d_2,d_3,d_4)-k_i(l,m,s) = 0(1)


In the expression above, both f_i and k_i are known functions and l, m and s
are known constants. I would like to estimate the vector d=(d_1,d_2,d_3,d_4)
which is solution of (1). Functions in R to estimate f_i-k_i are at the end
of this message.

Any help/suggestions/comments would be greatly appreciated.

Thanks in advance,

Jorge


# --
# Constants
# --

l=1
m=0.4795
s=0.4795

# --
# Functions to estimate f_i-k_i
# --

f1=function(d){
d1=d[1]
d2=d[2]
d3=d[3]
d4=d[4]
res=2*d1+2*sqrt(2)*d1*d2+2*sqrt(3)*d2*d3+4*d3*d4-l*m*(1+d1^2+d2^2+d3^2+d4^2)
res
}

f2=function(d){
d1=d[1]
d2=d[2]
d3=d[3]
d4=d[4]
res=2*sqrt(2)*d2+2*d1^2+2*sqrt(6)*d1*d3+4*d2^2+4*sqrt(3)*d2*d4+6*d3^2+8*d4^2-l*(m^2+m^3*s^(-1))*(1+d1^2+d2^2+d3^2+d4^2)
res
}

f3=function(d){
d1=d[1]
d2=d[2]
d3=d[3]
d4=d[4]
res=6*d1+12*sqrt(2)*d1*d2+18*sqrt(3)*d2*d3+48*d3*d4+2*sqrt(6)*d3+4*sqrt(6)*d1*d4-l*(m^3+3*m^4*s^(-1)+3*m^6*s^(-2))*(1+d1^2+d2^2+d3^2+d4^2)
res
}


f4=function(d){
d1=d[1]
d2=d[2]
d3=d[3]
d4=d[4]
res=12*sqrt(2)*d2+12*d1^2+36*d2^2+72*d3^2+120*d4^2+20*sqrt(6)*d1*d3+56*sqrt(3)*d2*d4+4*sqrt(6)*d4-l*((m^4+6*m^6*s^(-1)+15*m^6*s^(-2)+15*m^7*s^(-3))-3*l^(2)*(m^2+m^3*s^(-1))^2)*(1+d1^2+d2^2+d3^2+d4^2)
res
}

[[alternative HTML version deleted]]

__
R-help@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.


Re: [R] How to solve a non-linear system of equations using R

2008-06-03 Thread ctu

Hi Jorge,

Have you tried to use systemfit package. In this package, this is a  
function call  nlsystemfit . This might help.


Chunhao



Quoting Jorge Ivan Velez [EMAIL PROTECTED]:


Dear R-list members,

I've had a hard time trying to solve a non-linear system (nls) of equations
which structure for the equation i, i=1,...,4, is as follows:


f_i(d_1,d_2,d_3,d_4)-k_i(l,m,s) = 0(1)


In the expression above, both f_i and k_i are known functions and l, m and s
are known constants. I would like to estimate the vector d=(d_1,d_2,d_3,d_4)
which is solution of (1). Functions in R to estimate f_i-k_i are at the end
of this message.

Any help/suggestions/comments would be greatly appreciated.

Thanks in advance,

Jorge


# --
# Constants
# --

l=1
m=0.4795
s=0.4795

# --
# Functions to estimate f_i-k_i
# --

f1=function(d){
d1=d[1]
d2=d[2]
d3=d[3]
d4=d[4]
res=2*d1+2*sqrt(2)*d1*d2+2*sqrt(3)*d2*d3+4*d3*d4-l*m*(1+d1^2+d2^2+d3^2+d4^2)
res
}

f2=function(d){
d1=d[1]
d2=d[2]
d3=d[3]
d4=d[4]
res=2*sqrt(2)*d2+2*d1^2+2*sqrt(6)*d1*d3+4*d2^2+4*sqrt(3)*d2*d4+6*d3^2+8*d4^2-l*(m^2+m^3*s^(-1))*(1+d1^2+d2^2+d3^2+d4^2)
res
}

f3=function(d){
d1=d[1]
d2=d[2]
d3=d[3]
d4=d[4]
res=6*d1+12*sqrt(2)*d1*d2+18*sqrt(3)*d2*d3+48*d3*d4+2*sqrt(6)*d3+4*sqrt(6)*d1*d4-l*(m^3+3*m^4*s^(-1)+3*m^6*s^(-2))*(1+d1^2+d2^2+d3^2+d4^2)
res
}


f4=function(d){
d1=d[1]
d2=d[2]
d3=d[3]
d4=d[4]
res=12*sqrt(2)*d2+12*d1^2+36*d2^2+72*d3^2+120*d4^2+20*sqrt(6)*d1*d3+56*sqrt(3)*d2*d4+4*sqrt(6)*d4-l*((m^4+6*m^6*s^(-1)+15*m^6*s^(-2)+15*m^7*s^(-3))-3*l^(2)*(m^2+m^3*s^(-1))^2)*(1+d1^2+d2^2+d3^2+d4^2)
res
}

[[alternative HTML version deleted]]

__
R-help@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@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.


Re: [R] How to solve a non-linear system of equations using R

2008-06-03 Thread Moshe Olshansky
Since k_i(l,m,s) are known constants, you actually have a system of four 
non-linear equations with 4 unknowns.

One possibility is to use optim (check ?optim).

Another one is to use the very recently released package - look at
 
https://stat.ethz.ch/pipermail/r-help/attachments/20080423/da0b7f6c/attachment.pl



--- On Wed, 4/6/08, Jorge Ivan Velez [EMAIL PROTECTED] wrote:

 From: Jorge Ivan Velez [EMAIL PROTECTED]
 Subject: [R] How to solve a non-linear system of equations using R
 To: R mailing list r-help@r-project.org
 Received: Wednesday, 4 June, 2008, 7:09 AM
 Dear R-list members,
 
 I've had a hard time trying to solve a non-linear
 system (nls) of equations
 which structure for the equation i, i=1,...,4, is as
 follows:
 
 
 f_i(d_1,d_2,d_3,d_4)-k_i(l,m,s) = 0(1)
 
 
 In the expression above, both f_i and k_i are known
 functions and l, m and s
 are known constants. I would like to estimate the vector
 d=(d_1,d_2,d_3,d_4)
 which is solution of (1). Functions in R to estimate
 f_i-k_i are at the end
 of this message.
 
 Any help/suggestions/comments would be greatly appreciated.
 
 Thanks in advance,
 
 Jorge
 
 
 # --
 # Constants
 # --
 
 l=1
 m=0.4795
 s=0.4795
 
 # --
 # Functions to estimate f_i-k_i
 # --
 
 f1=function(d){
 d1=d[1]
 d2=d[2]
 d3=d[3]
 d4=d[4]
 res=2*d1+2*sqrt(2)*d1*d2+2*sqrt(3)*d2*d3+4*d3*d4-l*m*(1+d1^2+d2^2+d3^2+d4^2)
 res
 }
 
 f2=function(d){
 d1=d[1]
 d2=d[2]
 d3=d[3]
 d4=d[4]
 res=2*sqrt(2)*d2+2*d1^2+2*sqrt(6)*d1*d3+4*d2^2+4*sqrt(3)*d2*d4+6*d3^2+8*d4^2-l*(m^2+m^3*s^(-1))*(1+d1^2+d2^2+d3^2+d4^2)
 res
 }
 
 f3=function(d){
 d1=d[1]
 d2=d[2]
 d3=d[3]
 d4=d[4]
 res=6*d1+12*sqrt(2)*d1*d2+18*sqrt(3)*d2*d3+48*d3*d4+2*sqrt(6)*d3+4*sqrt(6)*d1*d4-l*(m^3+3*m^4*s^(-1)+3*m^6*s^(-2))*(1+d1^2+d2^2+d3^2+d4^2)
 res
 }
 
 
 f4=function(d){
 d1=d[1]
 d2=d[2]
 d3=d[3]
 d4=d[4]
 res=12*sqrt(2)*d2+12*d1^2+36*d2^2+72*d3^2+120*d4^2+20*sqrt(6)*d1*d3+56*sqrt(3)*d2*d4+4*sqrt(6)*d4-l*((m^4+6*m^6*s^(-1)+15*m^6*s^(-2)+15*m^7*s^(-3))-3*l^(2)*(m^2+m^3*s^(-1))^2)*(1+d1^2+d2^2+d3^2+d4^2)
 res
 }
 
   [[alternative HTML version deleted]]
 
 __
 R-help@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@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.