Tag Archives: Parabola

General Tutorial


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.

Screen Shot 2012-06-03 at 19.22.03

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...



I've posted a few times that I feel my mathematics skills have slowly atrophied having been out in industry and that this I feel will be my achilles heel when it comes through to my research.  One of the areas that I've been investigating is the relationship between cable-chain structures and their behaviour.
Screen Shot 2012-06-03 at 16.40.54
Depending on how many segments you divide the arc into will determine the geometry and efficiency of the cable-chain arch, now if it's a semi-circle that's not too hard to calculate the geometry using simple triangles.  In degrees the internal angle of each triangle will be given by the following formula, where nseg is the number of segments you're dividing the arc by:-

Internal{\rm{{ \,\,}}}Angle = \frac{{180}}{{{n_{seg}}}}

This then can allow you to calculate the length of the segment along the arc as set out below using the Cosine rule which I haven't used for probably about 20 years, this though is only half the problem as you still have to determine the length of the cables.
Screen Shot 2012-06-03 at 18.42.40

Length = \sqrt {2{R^2} - 2{R^2}Cos\theta }

Length = \sqrt {2{R^2} - 2{R^2}Cos\left( {\frac{{180}}{{{n_{seg}}}}} \right)}

Next to determine the length of the cable, you will need to combine two of the triangles previously calculated and which gives double the internal angle and repeat the process for the cable that is shown highlighted in red below.
Screen Shot 2012-06-03 at 18.42.56

Length = \sqrt {2{R^2} - 2{R^2}Cos\left( {2\theta } \right)}

Length = \sqrt {2{R^2} - 2{R^2}Cos\left[ {2\left( {\frac{{180}}{{{n_{seg}}}}} \right)} \right]}

This all seems fine and well for simple circles, but how would you know that a semi-circle gives the most efficient arrangement for a cable-chain?  What about if it's a parabola?  Well fortunately for the mathematically out of practice determining the equation for a parabolic curve is pretty easy for us Mathematica users...  Let's say I know I have a draped cable that spans 4100m horizontally between supports and has a 500m drape at the middle.  We can define three points on this cable easy enough as can be seen below:

Screen Shot 2012-06-03 at 19.22.03
This is where Mathematica starts to flex its muscles for me and why I feel I get good value from the student version that I've purchased.  I don't know what the Mathematica code for determining a line through the points is, but if I press the = key twice I get access to the Wolfram Alpha Servers and try and describe using every day English what it is that I'm trying to do...  Following a blog post from Mathematica on determining arc lengths using calculus I tried the following term which doesn't use any mathematical code at all, simply describes what it is that I'm trying to do:-

Parabola through the points (0,500), (2050,0), (4100,500)

Which gives the me the following output, which is pretty helpful to the maths novice who is trying to explore and understand the relationship between the data, the expression, and the graph...

Screen Shot 2012-06-03 at 19.29.49

Which makes my life a lot easier as I can start to tinker with geometry very quickly now using this approach.  One of the cool things about working this way is that you can then start to dissect the code and determine what the correct format should be when creating Mathematica sheets and it makes learning Mathematica much much easier than say MatLab or Maple.

Whilst creating code like this would not be difficult for someone with a little rudimentary programming experience, it isn't that intuitive for a newb like myself, but now I can start to adapt this syntax to suit what I need...  The next step is to try and work out how to subdivide this into nseg number of equal length links... but that's a job for another day.  Maybe I'll need to start using polar geometry to make my life easier? Who knows... but at least I'm not being held to ransom by my elderly fuzzled brain anymore and I can explore and play with the maths rather than being pummelled by them.

I'd love to hear from other Mathematica users, especially to hear what their experiences are and particularly to hear if I'm missing a trick as I'm going through and learning the syntax...