Re: Help! 6 equation non-linear system
- To: mathgroup at smc.vnet.net
- Subject: [mg99714] Re: [mg99681] Help! 6 equation non-linear system
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Tue, 12 May 2009 03:07:44 -0400 (EDT)
- References: <200905111023.GAA06881@smc.vnet.net>
Marc wrote: > I'm very new to Mathematica, and I'm trying to solve a fairly complex > system involving 3 non-linear implicit equations (Colebrook > equations). I've tried just doing a Solve and NSolve function, but my > Core 2 Duo @ 2.2GHz with 3 GB ram running on XP runs out of memory and > can't produce anything. > > Here are my equations: > > 190200=999*V3^2/2-999*V1^2/2+33266.7*f3*V3^2+166533*f1*V1^2+14185.2*V3^2 > > 180400=999*V2^2/2-999*V1^2/2+199800*f2*V2^2+166533*f1*V1^2+25874.1*V2^2 > > V1=V2+V3 > > 1/sqrt(f1)=-2*log(2.7*10^-5+1.88*10^-4/(V1*sqrt(f1))) > > 1/sqrt(f2)=-2*log(2.7*10^-5+1.88*10^-4/(V2*sqrt(f2))) > > 1/sqrt(f3)=-2*log(2.7*10^-5+1.88*10^-4/(V3*sqrt(f3))) > > > Variables: > > V1: should be in the range 0 < V1 < 20 > V2: should be in the range 0 < V2 < 10 > V3: should be in the range 0 < V3 < 10 > f1: should be in the range 0 < f1 < 0.1 > f2: should be in the range 0 < f2 < 0.1 > f3: should be in the range 0 < f3 < 0.1 > > > Any help would be greatly appreciated, I'm stuck!! Main suggestions: (1) Use actual Mathematica syntax. (2) Use FindRoot, with starting points inside the domain of interest. You will not be able to use NSolve because you do not have a polynomial system of equations in the variables of interest (due to presence of logs). c1 = 27*10^(-6); c2 = 188*10^(-6); exprs = { 999*V3^2/2-999*V1^2/2+332667/10*f3*V3^2+166533*f1*V1^2+ 141852/10*V3^2-190200, 999*V2^2/2-999*V1^2/2+199800*f2*V2^2+166533*f1*V1^2+ 258741/10*V2^2-180400, V2+V3-V1, -2*Log[c1+c2/(V1*Sqrt[f1])] - 1/Sqrt[f1], -2*Log[c1+c2/(V2*Sqrt[f2])] - 1/Sqrt[f2], -2*Log[c1+c2/(V3*Sqrt[f3])] - 1/Sqrt[f3]}; I'll use Chop to get rid of small imaginary parts. In[44]:= InputForm[solns = Chop[FindRoot[exprs==0, {V1,10}, {V2,5}, {V3,5}, {f1,1/20}, {f2,1/20}, {f3,1/20}]]] Out[44]//InputForm= {V1 -> 6.009425355323082, V2 -> 2.506571958922738, V3 -> 3.502853396400344, f1 -> 0.00433243520465387, f2 -> 0.005321604673945427, f3 -> 0.004904934117761941} Check result: In[45]:= InputForm[exprs/.solns] Out[45]//InputForm= {2.9103830456733704*^-11, 0., 0., 0., 1.7763568394002505*^-15, 0.} I could get higher precision results by use of higher working precision: solns = Chop[FindRoot[exprs==0, {V1,10}, {V2,5}, {V3,5}, {f1,1/20}, {f2,1/20}, {f3,1/20}, WorkingPrecision->20]] Note that there may be other roots in the range of interest. Indeed, tehre must be others, due to the input equation symmetry {V2,V3,f2,f3} <--> {V3,V2,f3,f2}. Daniel Lichtblau Wolfram Research
- References:
- Help! 6 equation non-linear system
- From: Marc <dunh0037@umn.edu>
- Help! 6 equation non-linear system