Subscribe via feed.

An imposible math equation?

Posted by ragknot on September 20, 2011 – 6:46 pm

The Colebrook-White equation was published 1937 and just about all designers of pipe say the equation is impossible to solve.  But Chris taught me a trick that most pipe companies are saying   “That can’t be right”.

They are wrong.  I call our solution a “Trick of mind” because it is an “out of the box” method. This version of the equation is arranged to work OK in Excel. Just copy and paste.


Lets assume that RR= 0.04 and Re=200000, find F,   ( F  is the Darcy Friction Factor )

I think a few members of  site (besides Chris) will be able to find a solution.  I did in about 30 minutes.  Then after working with Chris he showed me a much simpler, and quicker  method that many engineers are now amazed by… some say that can’t be right, but they test it, and say WOW, it is a solution.

If you give up, Google this   “A New Simplified, Accurate, method for Colebrook equations

This post is under “Tom” and has 17 respond so far.
If you enjoy this article, make sure you subscribe to my RSS Feed.

17 Responds so far- Add one»

  1. 1. Kel9902 Said:

    F ~ 0.0648

  2. 2. ragknot Said:

    That is close, the left side divided by the right side is equal to 1.00001008169349 There is one approximation method that can get that close with those Re and Rr variables.

  3. 3. ragknot Said:

    I should show how to check that… With F as 0.0648 we get this

    Left side 1/sqrt(F)= 3.928371007
    Right side -2*Log(Rr/3.7+2.51/Re*1/sqrt(F))=3.928331402

  4. 4. Kel9902 Said:

    F ~ 0.06480130528386

  5. 5. ragknot Said:

    Test F= 0.0648013052838600
    Left Side = 3.9283314420718200
    Right Side = 3.9283314420715100
    Accuracy = 1.0000000000000800

    Very close!

  6. 6. cazayoux Said:

    Using an iterative methods reminds me of this.

  7. 7. ragknot Said:

    Kel9902 was very, very close. The answer is 0.0648013052838701

    But Kel9902 must have the right method to get that close.

    To tell everyone, the details…
    1. Guess a value for 1/sqrt(F), guess 3
    2. Get the right hand side result of the equation using 3
    3. Use that result for the next value of 1/sqrt(F)
    4. Continue using the result for the next value.
    5. After an average of 7 of these loops the result
    stays the same. You have now found the value of 1/sqrt(F)
    To find F, just divide one by that value squared.

    In 2009, a very complex (9 pages) of small print give a good
    solution… about 10 decimal places… they called it the best solution.
    I laughed at them.

    Chris, Thank you for your help. I see about 7,000 copies of our method
    has been downloaded from several pipe web sites, including MrExcel.
    The solution was a “Trick of Mind”.

  8. 8. Chris Said:

    Hi Ragknot. What beats me is that the technique I showed you is completely standard.

    The trick was to define:
    f(F) = 1/(2*Log(Rr/3.7+2.51/(Re*sqrt(F))))2
    i.e. f(F) is the reciprocal of the square of the original equation
    and then recurse: Fn+1 = f(Fn)

    Let the solution be F = F, then f(F) = F.
    At the solution, Sign(f(F + ε) – F) = -Sign(ε).
    By good luck, that is true even when |ε| >> 0, so the recursion converges (for practical purposes) no matter how poor the initial guess.

    I’m curious as to how Kel9902 did it.

  9. 9. ragknot Said:

    Hello Chris, I understand what you are saying. And the procedure you mentioned is the best and most useful.
    But trying to put that out for use was to hard. I decided to first show this quick and easy solution to prove it is accurate and quick. There are at least four different Colebrook equations that are similar, but slightly different, this method works for each of them.
    At first, pipe companies want to hammer me for saying it was a solution… because they did not want the public to know. They wanted to sell their own approximations. This is now hammering those companies because people are seeing that this IS the solution. A few web sites, after finding this is true, are letting people know they can get my FREE VBA for each of those four solutions. has become my friend and were the first to let engineers download what they confirmed was a great solution. Some pipe companies are still arguing that my (our) solution is a fake.

  10. 10. ragknot Said:

    And I hope Kel9902 will inform us of how he did it. Just because I am curious. I suspect he looked on the web and saw it somewhere. One or two public approximations sometime do have good solutions, but lots of times they fail to be right.

  11. 11. Chris Said:

    I’d forgotten that I’d shown you another method:

    From 1/Sqrt(F) = -2*Log(Rr/3.7+2.51/(Re*Sqrt(F))),
    define RRF = 1/Sqrt(F), then rewrite as
    RRF = -2*Log(Rr/3.7+2.51*RRF/Re))
    then iterate by putting a guess into the RHS to get the next guess. When you’re done, F = 1/RRF2

    I’d start with RRF = 1 for the first guess as it’s nice.
    If there is a typical value for F, I’d use that instead.

    By explaining the recursion, people can deploy it any way they like.

    Method 1 (the original method):
    Function ColebrookLambda(ByVal ReynoldsNumber As Double, ByVal RoughnessFactor As Double, Optional ByVal SigFigs As Integer = 15) As Double
      Dim FNew As Double
      Dim FOld As Double
      Dim ToLog10 as Double

      ToLog10 = 1# / Log(10#)

      FOld = 1
        FNew = 1 / (2 * ToLog10 * Log(2.51 / (ReynoldsNumber * Sqr(FOld)) + RoughnessFactor / 3.7)) ^ 2
        If Abs(FNew – FOld) * 10 ^ (1 + SigFigs) < FNew Then Exit Do
        FOld = FNew

      ColebrookLambda = FNew
    End Function

    Method 2 (highly optimized):
    Function FastColebrookLambda(ByVal ReynoldsNumber As Double, ByVal RoughnessFactor As Double, Optional ByVal SigFigs As Integer = 15) As Double
      Dim RRLNew As Double
      Dim RRLOld As Double
      Dim A As Double
      Dim B As Double
      Dim ToLog10 As Double

      ToLog10 = 1# / Log(10#)
      ‘this is 2 to 3 times faster because square rooting and dividing has been eliminated inside the loop
      A = 2.51 / ReynoldsNumber
      B = RoughnessFactor / 3.7

      RRLOld = 1
        RRLNew = Abs(2 * ToLog10 * Log(A * RRLOld + B))
        If Abs(RRLNew – RRLOld) * 10 ^ (1 + SigFigs) < RRLNew Then Exit Do
        RRLOld = RRLNew

      FastColebrookLambda = 1 / RRLNew ^ 2
    End Function

  12. 12. Chris Said:

    I’ve just noticed that you say some companies are saying that the solution is a fake. They’re right, this is not a mathematical solution. The implicit equation cannot be solved to make F (aka lambda) be explicit. But it is a very rapidly convergent numerical method.

    I have allowed a code buglet. I should have checked the SigFigs argument and made sure that it wasn’t greater than 15 (say). The equation itself will be an engineering approximation, and I doubt that any of the data is good to as much as 3 sig figs. So working to 6 say, is already getting excessive.

    The most precisely measured quantities in physics are about 15 sig figs, and they are highly exceptional. Those that stand out were used to show that Richard Feynman’s (et al) QED (Quantum ElectroDynamics) theory of the electron was good. See: for more.

  13. 13. ragknot Said:

    Of course you are right Chris, but this is my path to show ordinary people the way to solve these equations with no programming. Once it is widely known that those specialty approximations are not worth their costs (some cost thousand of $) they will be abandoned. I think this plan will eventually save people money. Everyone needs pipelines for water, gas etc.

  14. 14. ragknot Said:

    A math solution or a practical answer that will work?

    I know what you are saying. 3.14159 is not “Math Solution” for pi(). But for most engineering designs 3.14159 provides the solution, but for some you might need more accuracy.

    For most pipe designs 5 decimals for a friction factor is more than adequate. Some pipe companies have said this method is not better than theirs and it is not a solution, but my argument is mine is easier, more accurate and it cheaper than theirs.

  15. 15. Chris Said:

    Hi Ragknot. Unless these companies are using an approximation that can be solved explicitly, their “solutions” are fake as well.

    I fully accept that even if it were possible to explicitly solve the equation, you’d still need a programmable calculator (or better) to actually find the resulting number. So the distinction between a mathematical solution and a nummerical solution is of little or no consequence to an engineer.

  16. 16. kenna cookizz rawwkkz Said:

    F ~ 0.0648 and could you do easier ones please?

  17. 17. ragknot Said:

    To kenna,

    If you think this was hard you can learn how to solve these easily.

    Are you an engineer?

Post a reply

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP5\ext\php_mssql.dll' - The specified module could not be found. in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP5\ext\php_pdo_mssql.dll' - The specified module could not be found. in Unknown on line 0