[R] R emulation of FindRoot in Mathematica

Troels Ring tr|ng @end|ng |rom gvdnet@dk
Thu Jan 19 15:17:54 CET 2023


Thanks,   Valentin for the suggestion. I'm not sure I can go that way. I 
include below the statements from the paper containing the knowledge on 
the basis of which I would like to know at specified [H] the 
concentration of each of the many metabolites given the constraints. I 
have tried to contact the author to get the full code but it seems 
difficult.

BW Troels


hatp <- 10^6.494*H*atp
hhatp <- 10^3.944*H*hatp
hhhatp <- 10^1.9*H*hhatp
hhhhatp  <- 10*H*hhhatp
mgatp <- 10^4.363*atp*mg
mghatp <- 10^2.299*hatp*mg
mg2atp <- 10^1-7*mg*mgatp
katp <- 10^0.959*atp*k

hadp <- 10^6.349*adp*H
hhadp <- 10^3.819*hadp*H
hhhadp <- 10*H*hhadp
mgadp <- 10^3.294*mg*adp
mghadp <- 10^1.61*mg*hadp
mg2adp <- 10*mg*mgadp
kadp <- 10^0.82*k*adp

hpi <- 10^11.616*H*pi
hhpi <- 10^6.7*h*hpi
hhhpi <- 10^1.962*h*hhpi
mgpi <- 10^3.4*mg*pi
mghpi <- 10^1.946*mg*hpi
mghhpi <- 10^1.19*mg*hhpi
kpi <- 10^0.6*k*pi
khpi <- 10^1.218*k*hpi
khhpi <- 10^-0.2*k*hhpi

hpcr <- 10^14.3*h*pcr
hhpcr <- 10^4.5*h*hpcr
hhhpcr <- 10^2.7*h*hhpcr
hhhhpcr <- 100*h*hhhpcr
mghpcr <- 10^1.6*mg*hpcr
kpcr <- 10^0.74*k*pcr
khpcr <- 10^0.31*k*hpcr
khhpcr <- 10^-0.13*k*hhpcr

hcr <- 10^14.3*h*cr
hhcr <- 10^2.512*h*hcr

hlactate <- 10^3.66*h*lactate
mglactate <- 10^0.93*mg*lactate

tatp <- atp + hatp + hhatp + hhhatp + mgatp + mghatp + mg2atp + katp

tadp <- adp + hadp + hhadp + hhhadp + mghadp + mgadp + mg2adp + kadp

tpi <- pi + hpi + hhpi + hhhpi + mgpi + mghpi + mghhpi + kpi + khpi + khhpi

tpcr <- pcr + hpcr + hhpcr + hhhpcr + hhhhpcr + mghpcr + kpcr + khpcr + 
khhpcr

tcr <- cr + hcr + hhcr

tmg <- mg + mgatp + mghatp + mg2atp + mgadp + mghadp + mg2adp + mgpi + 
kghpi + mghhpi +
   mghpcr + mglactate

tk <- k + katp + kadp + kpi + khpi + khhpi + kpcr + khpcr + khhpcr

tlactate <- lactate + hlactate + mglactate

# conditions

tatp <- 0.008
tpcr <- 0.042
tcr <- 0.004
tadp <- 0.00001
tpi <- 0.003
tlactate <- 0.005

# free K and Mg constrained to be fixed
#
mg <- 0.0006
k <- 0.12

Den 19-01-2023 kl. 12:11 skrev Valentin Petzel:
>
> Hello Troels,
>
>
> As fair as I understand you attempt to numerically solve a system of 
> non linear equations in multiple variables in R. R does not provide 
> this functionality natively, but have you tried multiroot from the 
> rootSolve package:
>
>
> https://cran.r-project.org/web/packages/rootSolve/rootSolve.pdf
>
>
> multiroot is called like
>
>
> multiroot(f, start, ...)
>
>
> where f is a function of one argument which is a vector of n values 
> (representing the n variables) and returning a vector of d values 
> (symbolising the d equations) and start is a vector of length n.
>
>
> E.g. if we want so solve
>
>
> x^2 + y^2 + z^2 = 1
>
> x^3-y^3 = 0
>
> x - z = 0
>
>
> (which is of course equivalent to x = y = z, x^2 + y^2 + z^2 = 1, so x 
> = y = z = ±sqrt(1/3) ~ 0.577)
>
>
> we’d enter
>
>
> f <- function(x) c(x[1]**2 + x[2]**2 + x[3]**2 - 1, x[1]**3 - x[2]**3, 
> x[1] - x[3])
>
>
> multiroot(f, c(0,0,0))
>
>
> which yields
>
>
> $root
>
> [1] 0.5773502 0.5773505 0.5773502
>
>
> $f.root
>
> [1] 1.412261e-07 -2.197939e-07  0.000000e+00
>
>
> $iter
>
> [1] 31
>
>
> $estim.precis
>
> [1] 1.2034e-07
>
>
> Best regards,
>
> Valentin
>
>
> Am Donnerstag, 19. Jänner 2023, 10:41:22 CET schrieb Troels Ring:
>
> > Hi friends - I hope this is not a misplaced question. From the
>
> > literature (Kushmerick AJP 1997;272:C1739-C1747) I have a series of
>
> > Mathematica equations which are solved together to yield over different
>
> > pH values the concentrations of metabolites in skeletal muscle using the
>
> > Mathematica function FindRoot((E1,E2...),(V2,V2..)] where E is a list of
>
> > equations and V list of variables.  Most of the equations are individual
>
> > binding reactions of the form 10^6.494*atp*h == hatp and next
>
> > 10^9.944*hatp*h ==hhatp describing binding of singe protons or Mg or K
>
> > to ATP or creatin for example, but we also have constraints giving total
>
> > concentrations of say ATP i.e. ATP + ATPH, ATPH2..ATP.Mg
>
> >
>
> > I have, without success, tried to find ways to do this in R - I have 36
>
> > equations on 36 variables and 8 equations on total concentrations. As
>
> > far as I can see from the definition of FindRoot in Wolfram, Newton
>
> > search or secant search is employed.
>
> >
>
> > I'm on Windows R 4.2.2
>
> >
>
> > Best wishes
>
> > Troels Ring, MD
>
> > Aalborg, Denmark
>
> >
>
> > ______________________________________________
>
> > R-help using 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.
>
>
>
	[[alternative HTML version deleted]]



More information about the R-help mailing list