A crude but often informative approach is to treat the nonlinear equations as a nonlinear least squared problem. This is NOT a generally recommended solution technique, but can help to show some of the multiple solutions. Moreover, it forces some attention to the problem. Unfortunately, it often does not fall into the "modeling" structure of nls() or the numerically more stable nlsr of Duncan and I that tries to generate the Jacobian by automatic differentiation.
JN On 2023-01-19 09:54, Jeff Newmiller wrote:
But it is simultaneously an example of why some researchers like black box solvers... a system of dozens of nonlinear equations can potentially have many or even infinite solutions. If the researcher is weak in math, they may have no idea which solutions are possible and having a tool like FindRoot confidently return a solution lets them focus on other things. Sort of like ChatGPT. TL;DR the author may have no idea about how to resolve this without relying on the opaque FindRoot. On January 19, 2023 6:28:53 AM PST, "Ebert,Timothy Aaron" <teb...@ufl.edu> wrote:This is a poster child for why we like open source software. "I dump numbers into a black box and get numbers out but I cannot verify how the numbers out were calculated so they must be correct" approach to analysis does not really work for me. Tim -----Original Message----- From: R-help <r-help-boun...@r-project.org> On Behalf Of Troels Ring Sent: Thursday, January 19, 2023 9:18 AM To: Valentin Petzel <valen...@petzel.at>; r-help mailing list <r-help@r-project.org> Subject: Re: [R] R emulation of FindRoot in Mathematica [External Email] 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://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcran .r-project.org%2Fweb%2Fpackages%2FrootSolve%2FrootSolve.pdf&data=05%7C 01%7Ctebert%40ufl.edu%7C7cb98cd926b34284cd5f08dafa28026c%7C0d4da0f84a3 14d76ace60a62331e1b84%7C0%7C0%7C638097347110882622%7CUnknown%7CTWFpbGZ sb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3 D%7C3000%7C%7C%7C&sdata=D9A3fwJ5x7GbEV4A01wncLUil7szTdSPul5vd0lsSBw%3D &reserved=0 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 theliterature (Kushmerick AJP 1997;272:C1739-C1747) I have a series ofMathematica equations which are solved together to yield over differentpH values the concentrations of metabolites in skeletal muscle using theMathematica function FindRoot((E1,E2...),(V2,V2..)] where E is a list ofequations and V list of variables. Most of the equations are individualbinding reactions of the form 10^6.494*atp*h == hatp and next10^9.944*hatp*h ==hhatp describing binding of singe protons or Mg or Kto ATP or creatin for example, but we also have constraints giving totalconcentrations of say ATP i.e. ATP + ATPH, ATPH2..ATP.MgI have, without success, tried to find ways to do this in R - I have 36equations on 36 variables and 8 equations on total concentrations. Asfar as I can see from the definition of FindRoot in Wolfram, Newtonsearch or secant search is employed.I'm on Windows R 4.2.2Best wishesTroels Ring, MDAalborg, Denmark______________________________________________R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, seehttps://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fst at.ethz.ch%2Fmailman%2Flistinfo%2Fr-help&data=05%7C01%7Ctebert%40ufl .edu%7C7cb98cd926b34284cd5f08dafa28026c%7C0d4da0f84a314d76ace60a6233 1e1b84%7C0%7C0%7C638097347110882622%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi MC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C %7C%7C&sdata=7DTBQItdQpAqK%2FCS1%2BqQvYdlvjyJMjzTOXhoS6AY%2FJQ%3D&re served=0PLEASE do read the posting guidehttps://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.r -project.org%2Fposting-guide.html&data=05%7C01%7Ctebert%40ufl.edu%7C7c b98cd926b34284cd5f08dafa28026c%7C0d4da0f84a314d76ace60a62331e1b84%7C0% 7C0%7C638097347110882622%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiL CJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=m0 0vZP75nk9icL6H8Gc0dH1bHhkRCS9I5N27uORQmQ0%3D&reserved=0and provide commented, minimal, self-contained, reproducible code.[[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fr-help&data=05%7C01%7Ctebert%40ufl.edu%7C7cb98cd926b34284cd5f08dafa28026c%7C0d4da0f84a314d76ace60a62331e1b84%7C0%7C0%7C638097347110882622%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=7DTBQItdQpAqK%2FCS1%2BqQvYdlvjyJMjzTOXhoS6AY%2FJQ%3D&reserved=0 PLEASE do read the posting guide https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.r-project.org%2Fposting-guide.html&data=05%7C01%7Ctebert%40ufl.edu%7C7cb98cd926b34284cd5f08dafa28026c%7C0d4da0f84a314d76ace60a62331e1b84%7C0%7C0%7C638097347110882622%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=m00vZP75nk9icL6H8Gc0dH1bHhkRCS9I5N27uORQmQ0%3D&reserved=0 and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@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.
______________________________________________ R-help@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.