The pendulum and the cantilever share simple-looking ordinary differential equations (ODEs), but they are challenging to solve:


This post derives solutions from Lawden and Bisshopp by Maple commands, which (to the best of my knowledge) have not been published providing not only results but also the accompanying computer algebra techniques. A tabulated format has been chosen to better highlight similarities and differences.
Both solutions have in common that in a first step, the unknown function is integrated and then in a second step the inverse of the unknown function (i.e., the independent variable) is integrated. Only in combination with a well-chosen set of initial/boundary conditions solutions are possible. This makes these two cases difficult to handle by generic integration methods.
Originally, I was not looking for this insight. I was more interested in an exact solution for nonlinear deformations to benchmark numerical simulation results. Relatively quickly, I was able to achieve this with the help of this forum, but after that I was left with some nagging questions:
Why does Maple not provide a solution for the pendulum although one exists?
Why isn’t there an explicit solution for the cantilever when there is one for the pendulum?
Why is it so difficult to proof that elliptic expressions are equal?
Repeatedly, whenever there was time, I came back to these questions and got more and more a better understanding of the two problems and the overall context. It also required me to learn more of Maple, and I had to revisit fundamentals of functions, differential equations, and integration, which was entirely possible within Maples help system. Today, I am satisfied to the point that I think it is too much to expect Maple to provide a high-level general integration method for such problems.
I am also satisfied that I was able to combine all my findings scattered across many documents and Mapleprime questions into a single executable textbook-style document with hidden Maple code that:
Exclusively uses and manipulates equation expressions (no assignment operators := were required),
Avoids differentials that are often used in textbooks but (for good reasons) are not supported by Maple,
Exclusively applies high-level commands (i.e. no extraction of subexpression, manipulation
and subsequent re-assembly of expressions was needed).
The solutions for the pendulum and the cantilever are substantially different although the ODEs and essential derivation steps are similar. I think that an explicit solution for the cantilever, as it exists for the pendulum, is impossible (using elliptic integrals and functions). I leave it open to comments: whether this is correct and whether it is attributable to the set of initial and boundary conditions, the different symmetry of the sine and cosine functions in the ODEs, or both. I hope that the tabular presentation will provide an easy overview, allowing to form an own opinion.
If you are patient enough to work through the table, you will find a link between the cantilever and the pendulum that you are probably not expecting.
Finally, I have to give credit to Bisshopp, who was probably the first to provide a solution for the cantilever. The clarity and compactness on only 3 pages and the way how the inverse of functions was determined before the age of computers makes this paper worth studying. Also, Lawden has to be mentioned, who did the same on 3 pages for the pendulum in a marvelous book on elliptic functions and applications. It happens that he is overlooked in more recent publications and it’s unclear to me if he was the first who published an explicit solution. His book might be one of the last of its kind in this age of computers, and for that reason alone, it is worth enjoying as he enjoyed writing it.
The Pendulum and the Cantilever Side by Side
C_R, Summer 2023
• |
To better compare the pendulum and the cantilever, the symbol was chosen for the angle of the pendulum for the simple reason that this comparison started with bending theory, where is often used to denote a deflection angle.
|
• |
Leibniz and Newton notation was not used to make functional dependencies of variables visible. Instead functional notation and is used.
|
• |
To create an executable document that maintains a clear representation, it is necessary to use functional notation for differential equations and remove functional notation for integration. To avoid using the same symbol for both the integration variable and the upper limit of integration, this document uses two ways to express when the upper limit of integration varies (i.e., depends on the dependent variable of the functions being searched, namely and ). Both ways have their pros and cons.
|

©_®
|
Pendulum
|
Cantilever
|

|

|
Independent variable
|
Time 
|
Arclength 
|
Dependent variable
|
Angle of the pendulum with respect to direction of gravity 

|
(1) |
|
The slope of the cantilever with respect to the unbend state 

|
(2) |
|
Parameters
|
• |
Length 
|
• |
Gravitational constant
|
|
• |
Length 
|
• |
A force at the free end
|
• |
A bending moment at the free end
|
• |
The bending stiffness
|
|
ODE
|


|
(3) |
(for derivation see for example Wikipedia [1] or Lawden [2])
|


|
(4) |
(for derivation see for example Bisshopp [3] or Beléndez [4])
|
Definitions
|


|
(5) |
is periodic with the oscillation period (i.e., the movement is bounded):


|
(6) |
|


|
(7) |
For a downward force:


|
(8) |
|
Parameter C
|
, where is the angular frequency of the pendulum for small anglular excursions


|
(9) |
|
"Specific" Load


|
(10) |
|
Initial/
boundary
conditions
|


|
(11) |
|


|
(12) |
Only the second condition is essential.
Additional essential condition: The length of the cantilever beam is constant (not a boundary condition in its common sense but essential for the solution).
|
#1 integration step
with the second condition
|
Method: Integration with an integration factor (and converting to D notation, not shown)


|
(13) |
Substituting initial conditions (11)


|
(14) |
and isolating in (13) yields


|
(15) |
|
Alternative method [5]: Integration to an implicit representation
![dsolve({(Eval(varphi(s), s = 0) = 0, varphi(L) = varphi__0, Eval(diff(varphi(s), s), s = L) = 1/rho)[3], diff(diff(varphi(s), s), s)+C*cos(varphi(s)) = 0}, `ϕ`(s), implicit)[1]](/view.aspx?sf=221913_post/9c552754163be75bf7bb1c7b096ec958.gif)

|
(16) |
and differentiation w.r.t. to


|
(17) |
(This method works only if ; i.e., only with curvature/bending moment at the free end.)
Continuing now without bending moment

|
(18) |
|
#2 integrating the inverse function
|
With the chain rule


|
(19) |


|
(20) |
(15) can be written as


|
(21) |
where the functional notation was removed for integration


|
(22) |
This relation allows to determine the time the pendulum takes to swing to a certain angle .
|
Similarly, with


|
(23) |


|
(24) |
(16) can be written as


|
(25) |
and integrated over 


|
(26) |
This expression relates the arclength to the slope at the location (i.e., ). It is the inverse of what we intend to solve (i.e., ) but it is essential to derive a solution. Unlike for the pendulum, an indexed symbol has been chosen to avoid formally correct but uncommon expressions like 
|
Special cases
|
Oscillation period T
When the pendulum has swung a quater of the period. With


|
(27) |
(22) becomes


|
(28) |
where was replaced in the integrant by to create input that can be processes by the int command. After evaluation
![isolate(`assuming`([simplify(value((1/4)*T = Int(1/(2*C*cos(varphi)-2*C*cos(varphi__0))^(1/2), varphi = 0 .. varphi__0, continuous)))], [C > 0, 0 < `ϕ__0` and `ϕ__0` < Pi]), T)](/view.aspx?sf=221913_post/85e49042a2f316ba9fd0bdb53d6274d9.gif)

|
(29) |
where denotes the inverse Jacobian amplitude function.
|
Expression for 
Calculation of the length in order to get an expression to determine the unknown slope at the free end of the cantilever as a function of the load parameter . With


|
(30) |
(26) becomes

|
(31) |
where is replaced by to create input that can be processes by the int command. After evaluation
![`assuming`([value(L = int(1/(-2*C*sin(varphi)+2*C*sin(varphi__0))^(1/2), varphi = 0 .. varphi__0, continuous))], [C > 0, 0 < `ϕ__0` and `ϕ__0` < (1/2)*Pi])](/view.aspx?sf=221913_post/105978928d54a51af8811cd311f2bda8.gif)

|
(32) |
where and denote the complete and incomplete elliptic integrals of the first kind.
|
#3 Solutions of particular interest
|
Explicit solution for in bounded motion.
Rearranging (22)
![`assuming`([simplify(2*C*(-t(0)+t(varphi(t)) = Int(1/(2*C*cos(varphi)-2*C*cos(varphi__0))^(1/2), varphi = 0 .. varphi(t), continuous)))], [C > 0])/(sqrt(C)*sqrt(2))](/view.aspx?sf=221913_post/f24477366fc29306a707f8da7992695b.gif)

|
(33) |
and substituting this essential identity (expression 5.1.3 from Lawden [2])


|
(34) |
yields


|
(35) |
![`assuming`([value(-C^(1/2)*2^(1/2)*(t(0)-t(varphi(t))) = Int(1/(2*sin((1/2)*varphi__0)^2-2*sin((1/2)*varphi)^2)^(1/2), varphi = 0 .. varphi(t), continuous))], [0 < `ϕ__0` and `ϕ__0` < Pi])](/view.aspx?sf=221913_post/2c554cdfb81cafd9b8b04a244f83c6b7.gif)

|
(36) |
which simplifies further with


|
(37) |
to


|
(38) |
Mapping now with the modulus to the expression above (Maple converts to and simplifies automatically)


|
(39) |
the angle as a function of time is obtained explicitly


|
(40) |
|
Bending curve of the cantilever for a given load (i.e., for a given , obtainable from (32)).
To obtain a parametric form of the bending curve, the following two ODEs have to be integrated


|
(41) |
Applying


|
(42) |
in the following way to (41)
![subs({diff(x(s), s) = (diff(x(varphi), varphi))*(diff(varphi(s), s)), diff(y(s), s) = (diff(y(varphi), varphi))*(diff(varphi(s), s))}, diff(varphi(s), s) = 1/(diff(s(varphi), varphi)), {diff(x(s), s) = cos(varphi(s)), diff(y(s), s) = sin(varphi(s))})[]](/view.aspx?sf=221913_post/3aaac2ccd2f3c87442170eb909442026.gif)

|
(43) |
![isolate(((diff(x(varphi), varphi))/(diff(s(varphi), varphi)) = cos(varphi(s)), (diff(y(varphi), varphi))/(diff(s(varphi), varphi)) = sin(varphi(s)))[1], diff(x(`ϕ`), `ϕ`)), isolate(((diff(x(varphi), varphi))/(diff(s(varphi), varphi)) = cos(varphi(s)), (diff(y(varphi), varphi))/(diff(s(varphi), varphi)) = sin(varphi(s)))[2], diff(y(`ϕ`), `ϕ`))](/view.aspx?sf=221913_post/42b14d64ff2f8f5e9f5265a5b263722c.gif)

|
(44) |
yields two ODEs where and depend on the variable . Substituting (25) and
![subs(diff(s(varphi), varphi) = 1/(-2*C*sin(varphi(s))+2*C*sin(varphi__0))^(1/2), `ϕ`(s) = `ϕ`, [diff(x(varphi), varphi) = cos(varphi(s))*(diff(s(varphi), varphi)), diff(y(varphi), varphi) = sin(varphi(s))*(diff(s(varphi), varphi))])[]](/view.aspx?sf=221913_post/d6ae241f31d5212a4da8e30b665bae1d.gif)

|
(45) |
![map(Int, (diff(x(varphi), varphi) = cos(varphi)/(-2*C*sin(varphi)+2*C*sin(varphi__0))^(1/2), diff(y(varphi), varphi) = sin(varphi)/(-2*C*sin(varphi)+2*C*sin(varphi__0))^(1/2))[1], `ϕ` = 0 .. `ϕ__s`, continuous), map(Int, (diff(x(varphi), varphi) = cos(varphi)/(-2*C*sin(varphi)+2*C*sin(varphi__0))^(1/2), diff(y(varphi), varphi) = sin(varphi)/(-2*C*sin(varphi)+2*C*sin(varphi__0))^(1/2))[2], `ϕ` = 0 .. `ϕ__s`, continuous)](/view.aspx?sf=221913_post/71c6834f578c48726e41b8c48ea8ebf0.gif)

|
(46) |
results in a parametric solution with parameter where
For the coordinate
![subs(`assuming`([x(0) = 0, simplify(value((Int(diff(x(varphi), varphi), varphi = 0 .. varphi__s, continuous) = Int(cos(varphi)/(-2*C*sin(varphi)+2*C*sin(varphi__0))^(1/2), varphi = 0 .. varphi__s, continuous), Int(diff(y(varphi), varphi), varphi = 0 .. varphi__s, continuous) = Int(sin(varphi)/(-2*C*sin(varphi)+2*C*sin(varphi__0))^(1/2), varphi = 0 .. varphi__s, continuous))[1]))], [0 < `ϕ` and `ϕ` < (1/2)*Pi, C > 0]))](/view.aspx?sf=221913_post/54dd5246a06f5dfccffcb84798c50333.gif)

|
(47) |
For the coordinate a long expression with the following structure
![subs(`assuming`([y(0) = 0, simplify(value((Int(diff(x(varphi), varphi), varphi = 0 .. varphi__s, continuous) = Int(cos(varphi)/(-2*C*sin(varphi)+2*C*sin(varphi__0))^(1/2), varphi = 0 .. varphi__s, continuous), Int(diff(y(varphi), varphi), varphi = 0 .. varphi__s, continuous) = Int(sin(varphi)/(-2*C*sin(varphi)+2*C*sin(varphi__0))^(1/2), varphi = 0 .. varphi__s, continuous))[2]), radical)], [0 < `ϕ` and `ϕ` < (1/2)*Pi, 0 < `ϕ__0` and `ϕ__0` < (1/2)*Pi, 0 < `ϕ__s` and `ϕ__s` < (1/2)*Pi, C > 0])); y(`ϕ__s`) = (A__1*EllipticE(z__1, k)+A__2*EllipticF(z__1, k)+A__3*EllipticE(z__2, k)+A__4*EllipticF(z__2, k))/sqrt(C)](/view.aspx?sf=221913_post/2e6d8161102033341637615e995ada65.gif)

|
(48) |
is obtained where , and .
|

|
Not required in the above: To derive an explicit solution, Lawden performed a change of variable of this kind


|
(49) |
which is not needed with Maple commands.
Furthermore: Formally, it would have been nice to have the pendulum start its movement at t=0 at an angle . However, this leads to an output in (36) with two inverse elliptic functions where is difficult if not impossible to isolate.
|
Solution for the free end of the cantilever (i.e., and )


|
(50) |
![subs(`assuming`([y(0) = 0, y(`ϕ__0`) = y(L), simplify(value(subs(`ϕ__s` = `ϕ__0`, (Int(diff(x(varphi), varphi), varphi = 0 .. varphi__s, continuous) = Int(cos(varphi)/(-2*C*sin(varphi)+2*C*sin(varphi__0))^(1/2), varphi = 0 .. varphi__s, continuous), Int(diff(y(varphi), varphi), varphi = 0 .. varphi__s, continuous) = Int(sin(varphi)/(-2*C*sin(varphi)+2*C*sin(varphi__0))^(1/2), varphi = 0 .. varphi__s, continuous))[2])))], [0 < `ϕ` and `ϕ` < (1/2)*Pi, 0 < `ϕ__0` and `ϕ__0` < (1/2)*Pi, 0 < `ϕ__s` and `ϕ__s` < (1/2)*Pi, C > 0]))](/view.aspx?sf=221913_post/18546edc9098954c9f1ee2e4c1fe07a0.gif)

|
(51) |

|
Some remarks
|

|

|
|
Comparison to the solution from Lawden
Expression (39) compared to 

|
(52) |
(pasted from DLMF 22.19.2 for the case ). The same with adapted variables 

|
(53) |
Now equating the left hand side of (39) to and identifying the parameters and 


|
(54) |
![map(op, JacobiSN(sin((1/2)*varphi__0)*t, csc((1/2)*varphi__0)) = JacobiSN(z, k)); solve([(rhs-lhs)(%)], {k, z})[]](/view.aspx?sf=221913_post/7e7843c56ac81a28d8c519295198a924.gif)

|
(55) |
Using the following identity from Maple's FunctionAdvisor and the correspondence in (55)
![FunctionAdvisor(identities, JacobiSN(z, 1/k))[5]](/view.aspx?sf=221913_post/2ad950918b7c75d1a07a1134caf46c77.gif)

|
(56) |
yields


|
(57) |
Comparing this with (53) confirms that (40) is correct.
|
Equivalent expressions to determine
As returned by value:


|
(58) |
simplify instead of value:
![convert(`assuming`([simplify(L = int(1/(-2*C*sin(varphi)+2*C*sin(varphi__0))^(1/2), varphi = 0 .. varphi__0, continuous))], [0 < `ϕ__0` and `ϕ__0` < (1/2)*Pi]), sincos)](/view.aspx?sf=221913_post/cb0c395519a709b96aeccd0bef53e8e0.gif)

|
(59) |
With integration tools and change of variables using :
![Int(1/sqrt(-2*C*sin(`ϕ`)+2*C*sin(`ϕ__0`)), `ϕ` = 0 .. `ϕ__0`); L = IntegrationTools:-Change(%, x = sin(`ϕ`), x); simplify(subs(isolate(x__0 = sin(`ϕ__0`), `ϕ__0`), %)); subs(x__0 = sin(`ϕ__0`), `assuming`([value(%)], [0 < x and x < 1, 0 < x__0 and x__0 < 1]))](/view.aspx?sf=221913_post/26743998ed81051b148febf2046fcfaf.gif)

|
(60) |
Without having a Maple way: Christian Wolinski has provided 3 additional expressions where one is of particular simplicity [6]


|
(61) |
|
|
Useful identities
![FunctionAdvisor(identities, InverseJacobiSN)[3]](/view.aspx?sf=221913_post/403dc21db3a154fc872c50b637386a2c.gif)

|
(62) |


|
(63) |
![FunctionAdvisor(identities, InverseJacobiSN)[1]](/view.aspx?sf=221913_post/8d75539616e9d7c522b4921caa3e49e4.gif)

|
(64) |
![FunctionAdvisor(identities, JacobiSN)[5]](/view.aspx?sf=221913_post/a5f82853680b1ee33733ccb73abd4193.gif)

|
(65) |
|
Explicit solution for 
Since Maple's solve does not solve (32) for , one could try to isolate in expression (32) by combining "somehow" the two elliptic expression into a single expression and to apply an inverse operation to it.
Maple's simplify or combine do not seem to be able to help in this respect. There might be addition theorems that could be applied but identifying them in Maple or in DLMF requires expertise in this field of special functions.
Easier is to try to evaluate (31) in different ways (see above) and hope for success. This yielded equivalent expressions with only one elliptic integral .
Using identities such elliptic integrals can be converted to inverse elliptic functions where elliptic functions can be applied to. Trying this exemplarily for (61)


|
(66) |


|
(67) |
does not isolate in the same way could be separated for the pendulum. The reason why such attempts are deemed to fail is simple. Differently to the pendulum, is not a constant "input" to the system but, causally speaking, an "output". While in the case of the pendulum is constant and independent of , and functionally depend on each other for the cantilever; i.e., . This fundamentally makes the two cases different although many derivation steps are similar.
|
Student:-ODEs
|

|
gives a solution for with two integration constants and , but determining the integration constants with the first two boundary conditions of (12) is probably impossible. odetest confirms that the solution is correct but one of the arguments of an elliptic function is not unitfree (which raises more questions): .
|
Links
|
https://www.mapleprimes.com/questions/232863-Testing-Maples-Solution-Of-The-Nonlinear
https://www.mapleprimes.com/questions/131520-Animation-Of-A-Simple-Pendulum
|
Applying a horizontal load instead of a vertical bends the cantilever in an arc-like fashion. For this load case the corresponding ODE is that of the pendulum (see [2], chapter 5, exercise 8). The parametric equation (bending curve) of the arc becomes simpler but still no explicit solution seems possible.
|
Alternative symbols for 4
|
θ
|

|
References
|
[1] https://en.wikipedia.org/wiki/Pendulum_(mechanics)
[2] Lawden, Derek F. “Elliptic Functions and Applications.” Acta Applicandae Mathematica 24 (1989): 201-202.
[3] Bisshopp, K.E. and Drucker, D.C. (1945) Large Deflection of Cantilever Beams. Quarterly of Applied Mathematics, 3, 272-275.
[4] BELÉNDEZ, Tarsicio; NEIPP, Cristian; BELÉNDEZ, Augusto. "Large and small deflections of a cantilever beam". European Journal of Physics. Vol. 23, No. 3 (May 2002). ISSN 0143-0807, pp. 371-379
[5] Rouben Rostamian, https://www.mapleprimes.com/questions/236511-How-To-Integrate-This-Ode-And-How-To#answer295192
[6] Christian Wolinski, https://www.mapleprimes.com/questions/233304-How-To-Find-The-Inverse-Function-Of#comment283638
|
|
|
|
Download Cantilever_and_pendulum_side_by_side_-_input_hidden.mw