Maple Questions and Posts

These are Posts and Questions associated with the product, Maple

Hi,

How can I find the same result reported in the figure for dsolve the differential equation?

nima.mw

 

 

When I input
restart;
a := 2;
b := 3;
p := x^2 - a*x - b*x +a*b ;

I get p := x^2 - 5*x + 6
How can I get x^2 - 2 x - 3x + 6.
General question. I have (a,b) in a list [[2,3],[-3,7],[9,10]]. How to subtitute them to get the result
[[x^2 - 2x - 3x + 6, x^2 + 3x - 7x -21, x^2 - 9x - 10x + 90]? 

I am trying to learn Maple and Fourier transform by calculating the coefficients and the resuting summation as follows:

restart;

assume(n>0);

assume(N>0);

target_f := x -> piecewise(-Pi < x and x < 0, 0, 0 < x and x < Pi, x, Pi < x and x < 2*Pi, 0, 2*Pi < x and x < 3*Pi, x - 2*Pi)

a0 := simplify(int(target_f(x), x = -Pi .. Pi)/(2*Pi))

a_n := int(target_f(x)*cos(n . x), x = -Pi .. Pi)/Pi

b_n := int((target_f(x)) . (sin(n*x)), x = -Pi .. Pi)/Pi

fourier_f := N -> a0 + sum(a_n*cos(n*x) + b_n*sin(n . x), n = 1 .. N)

I am making fourier_f as a function of N becasue I want to see the effect of increasing partial sums. The resulting output of the summation "fourier_f" has a lot of terms. The output looks like this:

               /        /  N      
               |        |-----    
               |        | \       
1         1    |   2    |  )   /  
- Pi + ------- |4 N  Pi | /    |- 
4            2 |        |----- |  
       4 Pi N  \        \n = 1 \  

                                        \                     
                                        |                     
                                        |                     
  sin(n x) (cos(n Pi) n Pi - sin(n Pi))\|   /   2             
  -------------------------------------|| + \I N  Pi LerchPhi(
                   2                   ||                     
                  n  Pi                //                     

                         2                                    
  -exp(-I x), 1, N) - 2 N  LerchPhi(-exp(-I x), 2, N) - I N Pi

      \                  
   + 2/ exp(I N (Pi - x))

   - I N Pi (LerchPhi(-exp(I x), 1, N) N - 1) exp(I N (-Pi + x))

        2                                                 
   - I N  Pi LerchPhi(-exp(-I x), 1, N) exp(-I N (Pi + x))

                                 /   2                            
   + I Pi N exp(-I N (Pi + x)) + \I N  Pi LerchPhi(-exp(I x), 1, N

         2                                       \            
  ) - 2 N  LerchPhi(-exp(I x), 2, N) - I N Pi + 2/ exp(I N (Pi

                          2                          
   + x)) + 2 exp(-I x N) N  LerchPhi(exp(-I x), 2, N)

                   2                         
   + 2 exp(I x N) N  LerchPhi(exp(I x), 2, N)

        2                            2                     
   - 2 N  polylog(2, exp(-I x)) - 2 N  polylog(2, exp(I x))

        2                             2                      
   + 2 N  polylog(2, -exp(-I x)) + 2 N  polylog(2, -exp(I x))

                                 \
                                 |
                                 |
                                 |
   - 2 exp(-I x N) - 2 exp(I x N)|
                                 |
                                 /

The target function is not that complicated. I am using the target function shown in this YouTube video: https://www.youtube.com/watch?v=praNtRezlkw&list=PLPBSZvbAshbxULtiBcygm1qh7BtsDv3DW&index=12

It gave me similar output when the target function was x2.  I am not sure what's going on because for a simple square wave, I was able to make this work correctly.

I am deliberately not using existing packages because I want to learn Maple syntax.

Can someone please tell me what's my mistake ?

Wolfram's marketing literature states that a compiled function may generate the dates for the years 1 through 5.7 million in a couple of seconds rather than in minutes (comparing to the "uncompiled implementation").
The given function in this link can be translated into Maple language as follows: 

(*
  Note that this is only a mathematical program that outputs some data,
   hence 'Easter(-2, 1)' will never return real Gregorian Easter dates!
*)
Easter:=proc(BEGIN::integer[4],END::integer[4],$)::Array(BEGIN..END,[integer[1..12],integer[1..31]]);# the parent function
	description "https://www.wolfram.com/language/12/code-compilation/compute-the-date-of-easter.html";
	local computus::procedure[[integer[1 .. 12], integer[1 .. 31]]](integer):=proc(Year::integer,` $`)::[integer[1..12],integer[1..31]];# the child function
		options threadsafe;
		local a::nonnegint,b::integer,c::nonnegint,d::integer,e::nonnegint,f::integer,g::nonnegint,h::nonnegint,i::nonnegint,j::nonnegint,k::nonnegint,Month::integer[1..12],Day::integer[1..31];
		(* For compatibility, when `Year` is nonpositive, the command `iquo` must be replaced with slower `floor`. *)
		if Year<=0 then
			a,b,c:=Year mod 19,floor(Year/100),Year mod 100;
			d,e,f:=floor(b/4),b mod 4,floor((8*b+13)/25);
			g,h,i:=19*a+b-d-f+15 mod 30,floor(c/4),c mod 4;
			j:=floor((a+11*g)/319);k:=2*e+2*h-i-g+j+32 mod 7;
			Month:=floor((g-j+k+90)/25);Day:=g-j+k+Month+19 mod 32
		else
			a,b,c:=irem(Year,19),iquo(Year,100),irem(Year,100):
			d,e,f:=iquo(b,4),irem(b,4),iquo(8*b+13,25);
			g,h,i:=irem(19*a+b-d-f+15,30),iquo(c,4),irem(c,4);
			j:=iquo(a+11*g,319);k:=irem(2*e+2*h-i-g+j+32,7);
			Month:=iquo(g-j+k+90,25);Day:=irem(g-j+k+Month+19,32)
		fi;
		[Month,Day]
	end;
	Array(BEGIN..END,computus)
end:

However, as "no nested procedures can be translated" to optimized native machine code (cf. ), executing Easter(1, 5700000) has to take at least two minutes

Is there some workaround that can provide improved performance for such a numerical procedure that contains a nested procedure? In other words, is it possible to produce the `result` (without modifying the algorithm) in two seconds in modern Maple as that Wolfram marketing literature claims?

I think this is a simple thing but I cannot find the solution. I have lots of complicated computations in Maple 2015 (with different functions of different packages), but I need the final result to be real numbers/functions. Is there a way to prevent maple following along with computations if it detects a potential complex number? For example, if in some internal step is taking sqrt(x) it should stop and tell something like: "you must assume x is positive".

Dear Maple experts

I am using the following two implicitplot commands successfully for variables diffr1 and diffr2:

implicitplot(diffr1, 0. .. 1, 0. .. 1.0, filledregions = true, coloring = [cyan, yellow]);

implicitplot(diffr2, 0. .. 1, 0. .. 1.0, filledregions = true, coloring = [cyan, yellow]);

Now I want to have a plot that mixes them. For example, if diffr1>0 and diffr2>0 I get a color. if diffr1>0 and diffr2<0 I get another color, etc. Is there any way to do that? 

Could someone provide me with the references used when implementing the Statistics:-PredictiveLeastSquares function?

TIA

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 `&varphi;` was chosen for the angle of the pendulum for the simple reason that this comparison started with bending theory, where `&varphi;` 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  `&varphi;` = `&varphi;`(t) and `&varphi;` = `&varphi;`(s)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 `&varphi;` = `&varphi;`(t) and `&varphi;` = `&varphi;`(s)). Both ways have their pros and cons.

 

Typesetting:-EnableTypesetRule({"EllipticE", "EllipticE2", "EllipticF", "EllipticK", "InverseJacobiAM", "InverseJacobiSN", "JacobiSN"})

 

©_®

Pendulum

Cantilever

Independent variable

Time t

Arclength s

Dependent variable

Angle of the pendulum with respect to direction of gravity `&varphi;`(t)

varphi(t)

(1)

The slope of the cantilever with respect to the unbend state `&varphi;`(s)

varphi(s)

(2)

Parameters

• 

Length l

• 

Gravitational constant g 

• 

Length L

• 

A force F at the free end

• 

A bending moment M at the free end

• 

The bending stiffness EI 

ODE

diff(varphi(t), t, t)+C*sin(varphi(t)) = 0

diff(diff(varphi(t), t), t)+C*sin(varphi(t)) = 0

(3)

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

diff(varphi(s), s, s)+C*cos(varphi(s)) = 0

diff(diff(varphi(s), s), s)+C*cos(varphi(s)) = 0

(4)

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

Definitions

`&varphi;`(0) = 0, `&varphi;`((1/4)*T) = `&varphi;__0`

varphi(0) = 0, varphi((1/4)*T) = varphi__0

(5)

`&varphi;`(t)is periodic with the oscillation period T (i.e., the movement is bounded):

0 < abs(`&varphi;__0`) and abs(`&varphi;__0`) < Pi

0 < abs(varphi__0) and abs(varphi__0) < Pi

(6)

`&varphi;`(L) = `&varphi;__0`, Eval(diff(varphi(s), s), s = L) = 1/rho

varphi(L) = varphi__0, Eval(diff(varphi(s), s), s = L) = 1/rho

(7)

For a downward force:

0 < `&varphi;__0` and `&varphi;__0` < (1/2)*Pi

0 < varphi__0 and varphi__0 < (1/2)*Pi

(8)

Parameter C

"C=omega^(2)", where omegais the angular frequency of the pendulum for small anglular excursions

C = g/l

C = g/l

(9)

"Specific" Load

C = F/EI

C = F/EI

(10)

Initial/

boundary
conditions

Eval(varphi(t), t = -(1/4)*T) = -`&varphi;__0`, Eval(diff(varphi(t), t), t = -(1/4)*T) = 0

Eval(varphi(t), t = -(1/4)*T) = -varphi__0, Eval(diff(varphi(t), t), t = -(1/4)*T) = 0

(11)

Eval(varphi(s), s = 0) = 0, varphi(L) = varphi__0, Eval(diff(varphi(s), s), s = L) = 1/rho

Eval(varphi(s), s = 0) = 0, varphi(L) = varphi__0, Eval(diff(varphi(s), s), s = L) = 1/rho

(12)

Only the second condition is essential.
Additional essential condition: The length L 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)

DEtools:-intfactor(diff(diff(varphi(t), t), t)+C*sin(varphi(t)) = 0, `&varphi;`(t)); DETools:-firint((diff(diff(varphi(t), t), t)+C*sin(varphi(t)) = 0)*%, `&varphi;`(t))

-2*C*cos(varphi(t))+(diff(varphi(t), t))^2+c__1 = 0

(13)

Substituting initial conditions (11)

eval(convert(-2*C*cos(varphi(t))+(diff(varphi(t), t))^2+c__1 = 0, D), t = -(1/4)*T); convert(value({Eval(diff(varphi(t), t), t = -(1/4)*T) = 0, Eval(varphi(t), t = -(1/4)*T) = -varphi__0}), D); isolate(eval(`%%`, %), c__1)

c__1 = 2*C*cos(varphi__0)

(14)

and isolating diff(`&varphi;`(t), t)in (13) yields

convert(isolate(subs(c__1 = 2*C*cos(varphi__0), -2*C*cos(varphi(t))+(diff(varphi(t), t))^2+c__1 = 0), diff(`&varphi;`(t), t)), radical)

diff(varphi(t), t) = (2*C*cos(varphi(t))-2*C*cos(varphi__0))^(1/2)

(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}, `&varphi;`(s), implicit)[1]

Int(1/(-2*C*sin(_a)+(2*C*sin(varphi(L))*rho^2+1)/rho^2)^(1/2), _a = 0 .. varphi(s))-s-c__2 = 0

(16)

and differentiation w.r.t. to s 

diff(Int(1/(-2*C*sin(_a)+(2*C*sin(varphi(L))*rho^2+1)/rho^2)^(1/2), _a = 0 .. varphi(s))-s-c__2 = 0, s); isolate(%, diff(`&varphi;`(s), s)); expand(subs(varphi(L) = varphi__0, Eval(diff(varphi(s), s), s = L) = 1/rho, %))

diff(varphi(s), s) = (-2*C*sin(varphi(s))+2*C*sin(varphi__0)+1/rho^2)^(1/2)

(17)

(This method works only if rho <> infinity; i.e., only with curvature/bending moment at the free end.)

Continuing now without bending momenteval(diff(varphi(s), s) = (-2*C*sin(varphi(s))+2*C*sin(varphi__0)+1/rho^2)^(1/2), rho = infinity)

diff(varphi(s), s) = (-2*C*sin(varphi(s))+2*C*sin(varphi__0))^(1/2)

(18)

#2 integrating the inverse function

With the chain rule

(diff(`&varphi;`(t), t))*(diff(t(`&varphi;`), `&varphi;`)) = 1

(diff(varphi(t), t))*(diff(t(varphi), varphi)) = 1

(19)

isolate((diff(varphi(t), t))*(diff(t(varphi), varphi)) = 1, diff(`&varphi;`(t), t))

diff(varphi(t), t) = 1/(diff(t(varphi), varphi))

(20)

(15) can be written as

isolate((diff(varphi(t), t) = 1/(diff(t(varphi), varphi)))*(1/(diff(varphi(t), t) = (2*C*cos(varphi(t))-2*C*cos(varphi__0))^(1/2))), diff(t(`&varphi;`), `&varphi;`)); subs(`&varphi;`(t) = `&varphi;`, %)

diff(t(varphi), varphi) = 1/(2*C*cos(varphi)-2*C*cos(varphi__0))^(1/2)

(21)

where the functional notation `&varphi;`(t)was removed for integration

map(Int, diff(t(varphi), varphi) = 1/(2*C*cos(varphi)-2*C*cos(varphi__0))^(1/2), `&varphi;` = 0 .. `&varphi;`(t), continuous); (`@`(value, lhs) = rhs)(%)

-t(0)+t(varphi(t)) = Int(1/(2*C*cos(varphi)-2*C*cos(varphi__0))^(1/2), varphi = 0 .. varphi(t), continuous)

(22)

This relation allows to determine the time t = t(`&varphi;`(t)) the pendulum takes to swing to a certain angle `&varphi;` = `&varphi;`*t__.

Similarly, with

(diff(`&varphi;`(s), s))*(diff(s(`&varphi;`), `&varphi;`)) = 1

(diff(varphi(s), s))*(diff(s(varphi), varphi)) = 1

(23)

isolate((diff(varphi(s), s))*(diff(s(varphi), varphi)) = 1, diff(`&varphi;`(s), s))

diff(varphi(s), s) = 1/(diff(s(varphi), varphi))

(24)

(16) can be written as

isolate((diff(varphi(s), s) = 1/(diff(s(varphi), varphi)))*(1/(diff(varphi(s), s) = (-2*C*sin(varphi(s))+2*C*sin(varphi__0))^(1/2))), diff(s(`&varphi;`), `&varphi;`))

diff(s(varphi), varphi) = 1/(-2*C*sin(varphi(s))+2*C*sin(varphi__0))^(1/2)

(25)

and integrated over s

map(int, diff(s(varphi), varphi) = 1/(-2*C*sin(varphi(s))+2*C*sin(varphi__0))^(1/2), `&varphi;` = 0 .. `&varphi;__s`, continuous)

-s(0)+s(varphi__s) = int(1/(-2*C*sin(varphi(s))+2*C*sin(varphi__0))^(1/2), varphi = 0 .. varphi__s, continuous)

(26)

This expression relates the arclength s to the slope `&varphi;__s` at the location s (i.e., `&varphi;`(s) = `&varphi;__s`). It is the inverse of what we intend to solve (i.e., `&varphi;` = `&varphi;`(s)) but it is essential to derive a solution. Unlike for the pendulum, an indexed symbol `#msub(mi("&varphi;",fontstyle = "normal"),mi("s"))`has been chosen to avoid formally correct but uncommon expressions like "t(`&varphi;`(t))."

Special cases

Oscillation period T

When `&varphi;`*t__ = `&varphi;__0` the pendulum has swung a quater of the period. With
t(0) = 0, `&varphi;`(t) = `&varphi;__0`, t(`&varphi;__0`) = (1/4)*T

t(0) = 0, varphi(t) = varphi__0, t(varphi__0) = (1/4)*T

(27)

(22) becomes

subs(t(0) = 0, varphi(t) = varphi__0, t(varphi__0) = (1/4)*T, -t(0)+t(varphi(t)) = Int(1/(2*C*cos(varphi)-2*C*cos(varphi__0))^(1/2), varphi = 0 .. varphi(t), continuous))

(1/4)*T = Int(1/(2*C*cos(varphi)-2*C*cos(varphi__0))^(1/2), varphi = 0 .. varphi__0, continuous)

(28)

where `&varphi;`(t)was replaced in the integrant by `&varphi;` 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 < `&varphi;__0` and `&varphi;__0` < Pi]), T)

T = 4*2^(1/2)*InverseJacobiAM((1/2)*varphi__0, 2^(1/2)/(1-cos(varphi__0))^(1/2))/(C^(1/2)*(1-cos(varphi__0))^(1/2))

(29)

where 1/am = InverseJacobiAM denotes the inverse Jacobian amplitude function.

Expression for `&varphi;__0`
Calculation of the length L in order to get an expression to determine the unknown slope `&varphi;__0` at the free end of the cantilever as a function of the load parameter C. With
s(0) = 0, s(`&varphi;__s`) = L, `&varphi;__s` = `&varphi;__0`, `&varphi;`(s) = `&varphi;`

s(0) = 0, s(varphi__s) = L, varphi__s = varphi__0, varphi(s) = varphi

(30)

(26) becomessubs(s(0) = 0, s(varphi__s) = L, varphi__s = varphi__0, varphi(s) = varphi, -s(0)+s(varphi__s) = int(1/(-2*C*sin(varphi(s))+2*C*sin(varphi__0))^(1/2), varphi = 0 .. varphi__s, continuous))

L = int(1/(-2*C*sin(varphi)+2*C*sin(varphi__0))^(1/2), varphi = 0 .. varphi__0, continuous)

(31)

where `&varphi;`(s)is replaced by `&varphi;` 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 < `&varphi;__0` and `&varphi;__0` < (1/2)*Pi])

L = EllipticK((1/2)*(2*sin(varphi__0)+2)^(1/2))/C^(1/2)-EllipticF(1/(sin(varphi__0)+1)^(1/2), (1/2)*(2*sin(varphi__0)+2)^(1/2))/C^(1/2)

(32)

where K = EllipticK and F = EllipticF denote the complete and incomplete elliptic integrals of the first kind.

#3 Solutions of particular interest  

Explicit solution for `&varphi;`(t) 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))

-C^(1/2)*2^(1/2)*(t(0)-t(varphi(t))) = Int(1/(cos(varphi)-cos(varphi__0))^(1/2), varphi = 0 .. varphi(t), continuous)

(33)

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

-cos(`&varphi;__0`)+cos(`&varphi;`) = 2*sin((1/2)*`&varphi;__0`)^2-2*sin((1/2)*`&varphi;`)^2

cos(varphi)-cos(varphi__0) = 2*sin((1/2)*varphi__0)^2-2*sin((1/2)*varphi)^2

(34)

yields

subs(cos(varphi)-cos(varphi__0) = 2*sin((1/2)*varphi__0)^2-2*sin((1/2)*varphi)^2, -C^(1/2)*2^(1/2)*(t(0)-t(varphi(t))) = Int(1/(cos(varphi)-cos(varphi__0))^(1/2), varphi = 0 .. varphi(t), continuous))

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

(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 < `&varphi;__0` and `&varphi;__0` < Pi])

-C^(1/2)*2^(1/2)*(t(0)-t(varphi(t))) = 2^(1/2)*InverseJacobiAM((1/2)*varphi(t), csc((1/2)*varphi__0))/sin((1/2)*varphi__0)

(36)

which simplifies further with

t(0) = 0, t(`&varphi;`(t)) = t

t(0) = 0, t(varphi(t)) = t

(37)

to

subs(t(0) = 0, t(varphi(t)) = t, ((-C^(1/2)*2^(1/2)*(t(0)-t(varphi(t))) = 2^(1/2)*InverseJacobiAM((1/2)*varphi(t), csc((1/2)*varphi__0))/sin((1/2)*varphi__0))*(1/sqrt(2)))*sin((1/2)*`&varphi;__0`))

sin((1/2)*varphi__0)*C^(1/2)*t = InverseJacobiAM((1/2)*varphi(t), csc((1/2)*varphi__0))

(38)

Mapping now sn = JacobiSN with the modulus csc((1/2)*`&varphi;__0`) to the expression above (Maple converts InverseJacobiAM to InverseJacobiSN and simplifies automatically)

map(JacobiSN, sin((1/2)*varphi__0)*C^(1/2)*t = InverseJacobiAM((1/2)*varphi(t), csc((1/2)*varphi__0)), csc((1/2)*`&varphi;__0`))

JacobiSN(sin((1/2)*varphi__0)*C^(1/2)*t, csc((1/2)*varphi__0)) = sin((1/2)*varphi(t))

(39)

the angle `&varphi;`as a function of time is obtained explicitly

convert(isolate(JacobiSN(sin((1/2)*varphi__0)*C^(1/2)*t, csc((1/2)*varphi__0)) = sin((1/2)*varphi(t)), `&varphi;`(t)), sincos)

varphi(t) = 2*arcsin(JacobiSN(sin((1/2)*varphi__0)*C^(1/2)*t, 1/sin((1/2)*varphi__0)))

(40)

Bending curve of the cantilever for a given load (i.e., for a given `&varphi;__0`, obtainable from (32)).

To obtain a parametric form x(p), y(p)of the bending curve, the following two ODEs have to be integrated

diff(x(s), s) = cos(`&varphi;`(s)), diff(y(s), s) = sin(`&varphi;`(s))

diff(x(s), s) = cos(varphi(s)), diff(y(s), s) = sin(varphi(s))

(41)

Applying

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(x(s), s) = (diff(x(varphi), varphi))*(diff(varphi(s), s)), diff(y(s), s) = (diff(y(varphi), varphi))*(diff(varphi(s), s))

(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))})[]

(diff(x(varphi), varphi))/(diff(s(varphi), varphi)) = cos(varphi(s)), (diff(y(varphi), varphi))/(diff(s(varphi), varphi)) = sin(varphi(s))

(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(`&varphi;`), `&varphi;`)), 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(`&varphi;`), `&varphi;`))

diff(x(varphi), varphi) = cos(varphi(s))*(diff(s(varphi), varphi)), diff(y(varphi), varphi) = sin(varphi(s))*(diff(s(varphi), varphi))

(44)

yields two ODEs where x and y depend on the variable `&varphi;`(s). Substituting (25) and `&varphi;`(s) = `&varphi;` 

subs(diff(s(varphi), varphi) = 1/(-2*C*sin(varphi(s))+2*C*sin(varphi__0))^(1/2), `&varphi;`(s) = `&varphi;`, [diff(x(varphi), varphi) = cos(varphi(s))*(diff(s(varphi), varphi)), diff(y(varphi), varphi) = sin(varphi(s))*(diff(s(varphi), varphi))])[]

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)

(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], `&varphi;` = 0 .. `&varphi;__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], `&varphi;` = 0 .. `&varphi;__s`, continuous)

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)

(46)

results in a parametric solution with parameter `#mrow(mi("p"),mo("&equals;"),mi("\`&varphi;__s\`"))` where "0<= `&varphi;__s`<=`&varphi;__0`." 
For the x 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 < `&varphi;` and `&varphi;` < (1/2)*Pi, C > 0]))

x(varphi__s) = (2^(1/2)*sin(varphi__0)^(1/2)-(-2*sin(varphi__s)+2*sin(varphi__0))^(1/2))/C^(1/2)

(47)

For the y 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 < `&varphi;` and `&varphi;` < (1/2)*Pi, 0 < `&varphi;__0` and `&varphi;__0` < (1/2)*Pi, 0 < `&varphi;__s` and `&varphi;__s` < (1/2)*Pi, C > 0])); y(`&varphi;__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)

y(varphi__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))/C^(1/2)

(48)

is obtained where A__i = A__i(`&varphi;__s`, `&varphi;__0`), z__i = z__i(`&varphi;__s`, `&varphi;__0`) and k = k(`&varphi;__0`).

NULL

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

sin((1/2)*`&varphi;`) = sin((1/2)*`&varphi;__0`)*sin(u)

sin((1/2)*varphi) = sin((1/2)*varphi__0)*sin(u)

(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 -`&varphi;__0`. However, this leads to an output in (36) with two inverse elliptic functions where `&varphi;`(t) is difficult if not impossible to isolate.

 

Solution for the free end of the cantilever (i.e., `&varphi;__s` = `&varphi;__0`and s = L)

subs(x(0) = 0, `&varphi;__s` = `&varphi;__0`, x(`&varphi;__0`) = x(L), x(varphi__s) = (2^(1/2)*sin(varphi__0)^(1/2)-(-2*sin(varphi__s)+2*sin(varphi__0))^(1/2))/C^(1/2))

x(L) = 2^(1/2)*sin(varphi__0)^(1/2)/C^(1/2)

(50)

subs(`assuming`([y(0) = 0, y(`&varphi;__0`) = y(L), simplify(value(subs(`&varphi;__s` = `&varphi;__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 < `&varphi;` and `&varphi;` < (1/2)*Pi, 0 < `&varphi;__0` and `&varphi;__0` < (1/2)*Pi, 0 < `&varphi;__s` and `&varphi;__s` < (1/2)*Pi, C > 0]))

y(L) = (EllipticK((1/2)*(2*sin(varphi__0)+2)^(1/2))-EllipticF(1/(sin(varphi__0)+1)^(1/2), (1/2)*2^(1/2)*(sin(varphi__0)+1)^(1/2))-2*EllipticE((1/2)*2^(1/2)*(sin(varphi__0)+1)^(1/2))+2*EllipticE(1/(sin(varphi__0)+1)^(1/2), (1/2)*2^(1/2)*(sin(varphi__0)+1)^(1/2)))/C^(1/2)

(51)

``

Some remarks

NULL

NULL

 

Comparison to the solution from Lawden

Expression (39) compared to sin((1/2)*theta(t)) = sin((1/2)*alpha)*sn(t+K, sin((1/2)*alpha))

sin((1/2)*theta(t)) = sin((1/2)*alpha)*sn(t+K, sin((1/2)*alpha))

(52)

(pasted from DLMF 22.19.2 for the case C = 1). The same with adapted variables  subs(alpha = `&varphi;__0`, sn = JacobiSN, K = 0, theta(t) = `&varphi;__t`, sin((1/2)*theta(t)) = sin((1/2)*alpha)*sn(t+K, sin((1/2)*alpha)))

sin((1/2)*varphi__t) = sin((1/2)*varphi__0)*JacobiSN(t, sin((1/2)*varphi__0))

(53)

Now equating the left hand side of (39) to JacobiSN(z, k)and identifying the parameters z and k

subs(C = 1, lhs(JacobiSN(sin((1/2)*varphi__0)*C^(1/2)*t, csc((1/2)*varphi__0)) = sin((1/2)*varphi(t)))) = JacobiSN(z, k)

JacobiSN(sin((1/2)*varphi__0)*t, csc((1/2)*varphi__0)) = JacobiSN(z, k)

(54)

map(op, JacobiSN(sin((1/2)*varphi__0)*t, csc((1/2)*varphi__0)) = JacobiSN(z, k)); solve([(rhs-lhs)(%)], {k, z})[]

k = csc((1/2)*varphi__0), z = sin((1/2)*varphi__0)*t

(55)

Using the following identity from Maple's FunctionAdvisor and the correspondence in (55)

FunctionAdvisor(identities, JacobiSN(z, 1/k))[5]

JacobiSN(z, k) = JacobiSN(z*k, 1/k)/k

(56)

yields

convert(subs(k = csc((1/2)*varphi__0), z = sin((1/2)*varphi__0)*t, JacobiSN(z, k) = JacobiSN(z*k, 1/k)/k), sincos)

JacobiSN(sin((1/2)*varphi__0)*t, 1/sin((1/2)*varphi__0)) = sin((1/2)*varphi__0)*JacobiSN(t, sin((1/2)*varphi__0))

(57)

Comparing this with (53) confirms that (40) is correct.

Equivalent expressions to determine `&varphi;__0` 

As returned by value:

normal(L = EllipticK((1/2)*(2*sin(varphi__0)+2)^(1/2))/C^(1/2)-EllipticF(1/(sin(varphi__0)+1)^(1/2), (1/2)*(2*sin(varphi__0)+2)^(1/2))/C^(1/2))

L = (EllipticK((1/2)*(2*sin(varphi__0)+2)^(1/2))-EllipticF(1/(sin(varphi__0)+1)^(1/2), (1/2)*(2*sin(varphi__0)+2)^(1/2)))/C^(1/2)

(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 < `&varphi;__0` and `&varphi;__0` < (1/2)*Pi]), sincos)

L = -I*2^(1/2)*EllipticF(I*sin(varphi__0)^(1/2)/(1-sin(varphi__0))^(1/2), I*(1-sin(varphi__0))^(1/2)/(sin(varphi__0)+1)^(1/2))/(C^(1/2)*(sin(varphi__0)+1)^(1/2))

(59)

With integration tools and change of variables using x = sin(`&varphi;`):

Int(1/sqrt(-2*C*sin(`&varphi;`)+2*C*sin(`&varphi;__0`)), `&varphi;` = 0 .. `&varphi;__0`); L = IntegrationTools:-Change(%, x = sin(`&varphi;`), x); simplify(subs(isolate(x__0 = sin(`&varphi;__0`), `&varphi;__0`), %)); subs(x__0 = sin(`&varphi;__0`), `assuming`([value(%)], [0 < x and x < 1, 0 < x__0 and x__0 < 1]))

L = 2^(1/2)*EllipticF(sin(varphi__0)^(1/2)/(sin(varphi__0)+1)^(1/2), I*(-sin(varphi__0)^2+1)^(1/2)/(-1+sin(varphi__0)))/(C^(1/2)*(1-sin(varphi__0))^(1/2))

(60)

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

  L = EllipticF(sqrt(1-1/(sin(`&varphi;__0`)+1))*sqrt(2), (1/2)*sqrt(2)*sqrt(sin(`&varphi;__0`)+1))/sqrt(C)

L = EllipticF((1-1/(sin(varphi__0)+1))^(1/2)*2^(1/2), (1/2)*2^(1/2)*(sin(varphi__0)+1)^(1/2))/C^(1/2)

(61)

 

 

Useful identities

FunctionAdvisor(identities, InverseJacobiSN)[3]

InverseJacobiSN(z, k) = InverseJacobiAM(arcsin(z), k)

(62)

InverseJacobiSN(z, k) = InverseJacobiAM(arcsin(z), k)

InverseJacobiSN(z, k) = EllipticF(z, k)

(63)

FunctionAdvisor(identities, InverseJacobiSN)[1]

JacobiSN(InverseJacobiSN(z, k), k) = z

(64)

FunctionAdvisor(identities, JacobiSN)[5]

JacobiSN(z, 1/k) = k*JacobiSN(z/k, k)

(65)

 

Explicit solution for `&varphi;__0`

Since Maple's solve does not solve (32) for `&varphi;__0`, one could try to isolate `&varphi;__0` 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 EllipticF.

Using identities such elliptic integrals can be converted to inverse elliptic functions where elliptic functions can be applied to. Trying this exemplarily for (61)  

 

L/sqrt(C) = InverseJacobiSN(sqrt(1-1/(sin(`&varphi;__0`)+1))*sqrt(2), (1/2)*sqrt(2)*sqrt(sin(`&varphi;__0`)+1))

L/C^(1/2) = InverseJacobiSN((1-1/(sin(varphi__0)+1))^(1/2)*2^(1/2), (1/2)*2^(1/2)*(sin(varphi__0)+1)^(1/2))

(66)

map(JacobiSN, L/C^(1/2) = InverseJacobiSN((1-1/(sin(varphi__0)+1))^(1/2)*2^(1/2), (1/2)*2^(1/2)*(sin(varphi__0)+1)^(1/2)), (1/2)*sqrt(2)*sqrt(sin(`&varphi;__0`)+1))

JacobiSN(L/C^(1/2), (1/2)*2^(1/2)*(sin(varphi__0)+1)^(1/2)) = (1-1/(sin(varphi__0)+1))^(1/2)*2^(1/2)

(67)

does not isolate `&varphi;__0`in the same way `&varphi;`(t)could be separated for the pendulum. The reason why such attempts are deemed to fail is simple. Differently to the pendulum, `#msub(mi("&varphi;",fontstyle = "normal"),mi("0"))` is not a constant "input" to the system but, causally speaking, an "output". While C in the case of the pendulum is constant and independent of `&varphi;__0`, C and `&varphi;__0`functionally depend on each other for the cantilever; i.e., `&varphi;__0` = `&varphi;__0`(C). This fundamentally makes the two cases different although many derivation steps are similar.

Student:-ODEs

Student:-ODEs:-ODESteps(diff(diff(varphi(t), t), t)+C*sin(varphi(t)) = 0)

Error, (in Student:-ODEs:-OdeSolveOrder2) ODE is not supported

 

Student:-ODEs:-ODESteps(diff(diff(varphi(s), s), s)+C*cos(varphi(s)) = 0)gives a solution for `&varphi;` = `&varphi;`(s)with two integration constants C1 and C2, 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): JacobiSN((1/2)*sqrt(2*C-2*C1)*(-s+C2), sqrt(-(C1+C)/(-C1+C))).

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 `&varphi;__0` = `&varphi;__0`(C)seems possible.

Alternative symbols for 4

θ

phi, theta

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

Hi,
Apparently I have a problem but I can't find it. Please advise what is the source of the error?
Please see the attached worksheet.
1.mw

I have a great deal of output from a procedure that I wrote clumsily.  How can I delete that output without highlighting and pressing the delete button.  Maple help is often of no help whatsoever.

What is the simplest way to direct all Maple output, and only Maple output, into a PDF?  

My preference would be to include a command at the beginning of a worksheet so that causes all output returned by Maple, print and graphics, to be directed to a named PDF.  Does such a command or set of commands exist, and if so, what is the process to get it to work?

An alternative is to have a command at the end of a worksheet that causes Maple to print the worksheet to a PDF.  Does that exist, and if so, what is it?

For example: n=78 (is squarefree because 2 x 3 x 13)

Possible periodlenghts in different bases for 1/78  are  {2,3,4,6,12} this is calculated with Multiplicative-Order (Maple).

Now we pick a period from above, for example 6.

The question is:

Which possible bases exist for 1/78 with  periodlenght of 6 ?

The result is: possible bases calculated with Multiplicative-Order
are {17,23,29,35,43,49}.

Question:
Is there a formular to calculate the bases directly or with less calculations than the Maple-Command ?

Thanks for helping :)

hi i am trying to create a procedure for newton rhapson method, which finds roots of a function. the first procedure i made work but now i want it to show an error message for when the function diverges at x0 and when the derivative at x0 = 0. can someone pls advise me how to fix it? thank you:)

NM1 := proc(f, xold)
    local x1, x0, precision;
    x0 := xold;
    x1 := evalf(x0 - f(x0)/D(f)(x0));
    precision := 10^(-3);
        if limit(f,(x0)) = 0 then
            error("Newton's Method cannot do the calculation");
        end if;
        if D(f)(x0) = 0 then
            error("Newton's Method cannot do the calculation");
        else
        while abs(x1-x0) > precision do
            x0 := x1;
            print(x0);        
            x1 := evalf(x0 - f(x0)/D(f)(x0));            
        end do;
        end if;

   return x1;
end proc:

Dear users! 

I hope everyone is fine here. I have the following expression:

r*y[0, 1]+y[0, 0]+(1/6)*r*(r-1)*(1+r)*y[-1, 3]+(1/2)*r*(r-1)*y[-1, 2]+(1/120)*r*(r-1)*(r-2)*(1+r)*(2+r)*y[-2, 5]+(1/24)*r*(r-1)*(r-2)*(1+r)*y[-2, 4]+(1/720)*r*(r-1)*(r-2)*(r-3)*(r-4)*(1+r)*y[-3, 8]+(1/360)*r*(r-1)^2*(r-2)*(r-3)*(1+r)*y[-3, 7]+(1/720)*r*(r-1)*(r-2)*(r-3)*(1+r)*(2+r)*y[-3, 6]:

What is the procedure to select some terms in the above expression for example for N=2 I just want the following terms:

y[0, 0]+r*y[0, 1]+(1/2)*r*(r-1)*y[-1, 2];

and for N=3 I just want the following terms:

y[0, 0]+r*y[0, 1]+(1/2)*r*(r-1)*y[-1, 2]+(1/6)*r*(r-1)*(1+r)*y[-1, 3];

and for N=4 I want:

(1/24)*r*(r-1)*(r-2)*(1+r)*y[-2, 4]+y[0, 0]+r*y[0, 1]+(1/2)*r*(r-1)*y[-1, 2]+(1/6)*r*(r-1)*(1+r)*y[-1, 3];

and so on,

in the descending order in first suffices and ascending order in second suffices (like term having y[0,0],  y[0,1], y[-1,2], y[-1,3], y[-2,4]). I am waiting for your response. Thanks.

 

First 59 60 61 62 63 64 65 Last Page 61 of 2097