Following on from my last post where I was investigating how to determine the parabolic equation when only provided with three co-ordinates, I wanted to extend that knowledge and create a Mathematica sheet to allow me to do this without having to rely on Wolfram Alpha. This is for two reasons, firstly if I don’t have an internet connection, then I’m screwed as Wolfram Alpha isn’t going to work for me… secondly I need to encourage a deeper understanding of the procedure and process if I’m going to get the most from Mathematica.

The first part is trying to determine the parabolic equation when I know three points on the curve, typically these are going to be the start, midpoint, and the end support point. To give an appreciation of the geometry, it’s important to firstly understand that parabolic curves are defined by the common equation:

\[f(x) = a{x^2} + bx + c\]

Determining the length of a parabola with cartesian co-ordinates is done through applying the equation below over the limits being considered.

\[Length = \int\limits_a^b {\sqrt {1 + {{\left( {\frac{{dy}}{{dx}}} \right)}^2}} dx} \]

As three co-ordinates are known along the curve, the equations can be expressed as follows, with (x1,y1) (x2,y2) (x3,y3) being taken as the co-ordinate points… this gives a nest of simultaneous equations that can be solved using traditional matrix methods or in this case elimination could be used given that one of the input variables is 0.

\[\begin{array}{l} ax_1^2 + b{x_1} + c = {y_1}\\ ax_2^2 + b{x_2} + c = {y_2}\\ ax_3^2 + b{x_3} + c = {y_3} \end{array}\]

Taking the co-ordinates above as (0,500) (2050,0) (4100,500) for the input variables, this gives the simultaneous equations below to solve:-

\[{a{{\left( 0 \right)}^2} + b\left( 0 \right) + c = 500}\]

\[{a\left( {2050} \right)_{}^2 + b\left( {2050} \right) + c = 0}\]

\[{a\left( {4100} \right)_{}^2 + b\left( {4100} \right) + c = 500}\]

However, Mathematica is well equipped for solving simultaneous equations and simply requires that the expressions are stacked up neatly and logically…. there can be a few problems with mixing bracket types, but this is just down to practice. To solve the simultaneous equations above, the following code will solve them, the double equals signs are used just to push up the accuracy of the expressions and Reals is used as an additional parameter just incase any of the solutions are imaginary numbers.

**Solve[{a x1^2 + b x1 + c == y1, a x2^2 + b x2 + c == y2, a x3^2 + b x3 + c == y3}, {a, b, c}, Reals]**

Which will return the following solution:-

\[a = \frac{1}{{8405}};b = – \frac{{20}}{{41}};c = 500\]

Substituting this back into the general expression determines the parabolic equation for this particular curve to be…

\[f(x) = \frac{{{x^2}}}{{8405}} – \frac{{20x}}{{41}} + 500\]

The last thing to do is to work out the length of the curve between the two support points, this is a simple process determined by:-

\[Length = \int\limits_0^{4100} {\sqrt {1 + {{\left( {\frac{{dy}}{{dx}}} \right)}^2}} dx} \]

For those of us with too little time on our hands, this calculation can easily be automated and defined within Mathematica using the following code, where f'[x] is used to differentiate the term within the brackets.

**f[x_]:=500 – (20 x)/41 + x^2/8405;**

**NIntegrate[Sqrt[1 + (f'[x])^2], {x, 0, 4100}]**

Which gives the length of the cable to be 4,257.24m which matches Wolfram Alpha’s answer perfectly… the next step is defining equal length links to segment this curve to start creating the geometry for parabolic cable-chain structures… that’s definitely a post for another day.

The intention with this post is to help anyone who is trying to define parabolas and arc lengths using Mathematica… or traditional methods, if they’ve got time on their hands…