MaplePrimes Posts

MaplePrimes Posts are for sharing your experiences, techniques and opinions about Maple, MapleSim and related products, as well as general interests in math and computing.

Latest Post
  • Latest Posts Feed
  • We’re kicking off 2018 right, with another Meet Your Developers interview! This edition comes from Erik Postma, Manager of the Mathematical Software Group.

    To catch up on previous interviews, search the “meet-your-developers” tag.

    Without further ado…

     

    1. What do you do at Maplesoft?
      I’m the manager of the mathematical software group, a team of 7 mathematicians and computer scientists working on the mathematical algorithms in Maple (including myself). So my work comes in two flavours: I do the typical managerial things, involving meetings to plan new features and solve my team’s day to day problems, and in the remaining time I do my own development work.
       
    2. What did you study in school?
      I studied at Eindhoven University of Technology in the Netherlands. The first year, I took a combined program of mathematics and computer science; then for the rest of my undergrad, I studied mathematics. The program was called Applied Mathematics, but with the specialization I took it really wasn’t all that applied at all. Afterwards I continued in the PhD program at the same university, where my thesis was on a subject in abstract algebra (Lie algebras over finite fields).
       
    3. What area(s) of Maple are you currently focusing on in your development?
      I’ve spent quite a bit of time over the past two years making the facilities for working with units of measurement in Maple easier to use. There is a very powerful package for doing this that has been part of Maple for many years, but we keep hearing from our users it’s difficult to use. So I’ve worked on keeping the power of the package but making it easier to use.
       
    4. What’s the coolest feature of Maple that you’ve had a hand in developing?
      This was actually working on a problem in a part of the code that existed long before I started with Maplesoft. We have a very clever algorithm for drawing random numbers according to a custom, user-specified probability distribution. I wrote about it on MaplePrimes in a series of four blog posts, here. I’ve talked at various workshops and the like about this algorithm and how it is implemented in Maple.
       
    5. What do you like most about working at Maplesoft? How long have you worked here?
      I love working at the crossroads of mathematics and computer science; there aren’t many places in the world where you can do that as much as at Maplesoft. Butthe best thing is the people I work with: us mathematicians are all crazy in slightly different ways, and that makes for a very interesting working environment.
       
    6. Favourite hobby?
      Ultimate frisbee. I captain a mixed (i.e., coed) team called The Clockwork. (We play in orange jerseys – it references the book/movie A Clockwork Orange.) We play in a couple of local leagues, and some of the other members also work here. We don’t win much – but we work hard and have fun!
       
    7. What do you like on your pizza?
      Mushrooms. Mushrooms on everything!
       
    8. What’s your favourite movie?
      Probably Black Book, a dark movie about the Dutch resistance in the second world war from 2006, directed by Paul Verhoeven. I think what I like best about it is that it highlights the moral shades of grey in even so morally elevated a group as the resistance.
       
    9. What skill would you love to learn? Why?
      I’d love to learn to speak Russian! I’m trying, but I have a very hard time with it. It would allow me to communicate with my in-laws more easily; they speak Russian.
       
    10. Who’s your favourite mathematician?
      Oh, so many to choose from! I’m torn between:
    • Ada Lovelace (1815-1852), known as the first programmer.
    • Felix Klein (1849-1925), driving force behind a lot of research into geometries and their underlying symmetry groups.
    • Wilhelm Killing (1847-1923), a secondary school teacher who made big contributions to the theory of Lie algebras.

    Or wait, can I choose my wife?

    Please take a look at the attached document, a partial design for a power supply I'm working on.  I find I am spending a lot of time reformatting results with units to look as nice as what you see here.  For every result, I need to do Units Formatting, change to a sensible unit like uH instead of 10^-6 H, and then do Numeric Formatting to change the number to show just three significant digits.  That requires from 0 to 2 decimals, in fixed point.

    This is the way engineering documents should look.  You want to see a fixed point number from 1.00 to 999, with a certain number of significant digits (not decimal points), and have the unit scaled accordingly.  You want to see 12.3 uA, not 1.23402 x 10^-5 A.

    I would like to see Maple add "N significant digits" to its Numeric Formatting options and auto-scale results with units to the appropriate multiplier.  If I could set that as my default result formatting it would save a huge amount of work.  Often as a design progresses the multiplier will change, also.  A result may initially come out in mA but later change to uA.  Not only do I have to do them all manually now, but I have to go back and change them.  Automating all that would be a great help.

    (You may also notice that my vector results with units are not scaled like I describe here.  If anyone can tell me how to do that I would appreciate it.  Otherwise, it looks like a bug to me.)

    Example_Document.zip

    This post is devoted to the rigorous proof of Miquel's five circles theorem, which I learned about from this question. The proof is essentially very simple and takes only 15 lines of code. The figure below, in which all the labels coincide with the corresponding names in the code, illustrates the basic ideas of the code. First, we symbolically define common points of intersection of blue circles with a red unit circle  (these parameters  s1 .. s5  are the polar coordinates of these points). All other parameters of this configuration can be expressed through them. Then we find the centers  M  and  N  of two circles. Then we find the coordinates of the point  K  from the condition that  CK  is perpendicular to  MN . Then we find the point  and using the result obtained, we easily find the coordinates  of all the points  A1 .. A5. Then we find the coordinates of the point   P  as the point of intersection of the lines  A1A2  and  A3A4 . Finally, we verify that the point  P  lies on a circle with center at the point  N , which completes the proof.

                          

     

    Below - the code of the proof. Note that the code does not use any special (in particular geometric) packages, only commands from the Maple kernel. I usually try any geometric problems to solve in this style, it is more reliable,  and often shorter.

    restart;
    t1:=s1/2+s2/2: t2:=s2/2+s3/2:
    M:=[cos(t1),sin(t1)]: N:=[cos(t2),sin(t2)]:
    C:=[cos(s2),sin(s2)]: K:=(1-t)*~M+t*~N:
    CK:=K-C: MN:=M-N:
    t0:=simplify(solve(CK[1]*MN[1]+CK[2]*MN[2]=0, t)):
    E:=combine(simplify(C+2*eval(CK,t=t0))):
    s0:=s5-2*Pi: s6:=s1+2*Pi:
    assign(seq(A||i=eval(E,[s2=s||i,s1=s||(i-1),s3=s||(i+1)]), i=1..5)):
    Dist:=(p,q)->sqrt((p[1]-q[1])^2+(p[2]-q[2])^2):
    LineEq:=(P,Q)->(y-P[2])*(Q[1]-P[1])=(x-P[1])*(Q[2]-P[2]):
    Line1:=LineEq(A1,A2):
    Line2:=LineEq(A3,A4):
    P:=combine(simplify(solve({Line1,Line2},[x,y])))[]:
    Circle:=(x-N[1])^2+(y-N[2])^2-Dist(N,C)^2:
    is(eval(Circle, P)=0);  
    # The final result

                                                                        true


    It may seem that this proof is easy to repeat manually. But this is not so. Maple brilliantly coped with very cumbersome trigonometric transformations. Look at the coordinates of point  , expressed through the initial parameters  s1 .. s5 :

    simplify(eval([x,y], P));  # The coordinates of the point  P

      

      

     

    ProofMiquel.mw

    My September 9, 2016, blog post ("Next Number" Puzzles) pointed out the meaninglessness of the typical "next-number" puzzle. It did this by showing that two such puzzles in the STICKELERS column by Terry Stickels had more than one solution. In addition to the solution proposed in the column, another was found in a polynomial that interpolated the given members of the sequence. Of course, the very nature of the question "What is the next number?" is absurd because the next number could be anything. At best, such puzzles should require finding a pattern for the given sequence, admitting that there need not be a unique pattern.

    The STICKELERS column continued to publish additional "next-number" puzzles, now no longer of interest. However, the remarkable puzzle of December 30, 2017, caused me to pull from the debris on my retirement desk the puzzle of July 15, 2017, a puzzle I had relegated to the accumulating dust thereon.

    The members of the given sequence appear across the top of the following table that reproduces the graphic used to provide the solution.

    It turns out that the pattern in the graphic can be expressed as 100 – (-1)k k(k+1)/2, k=0,…, a pattern Maple helped find. By the techniques in my earlier blog, an alternate pattern is expressed by the polynomial

    which interpolates the nodes (1, 100), (2, 101) ... so that f(8) = -992.

    The most recent puzzle consists of the sequence members 0, 1, 8, 11, 69, 88; the next number is given as 96 because these are strobogrammatic numbers, numbers that read the same upside down. Wow! A sequence with apparently no mathematical structure! Is the pattern unique? Well, it yields to the polynomial

    which can also be expressed as

    Hence, g(x) is an integer for any nonnegative integer x, and g(6) = -401, definitely not a strobogrammatic number. However, I do have a faint recollection that one of Terry's "next-number" puzzles had a pattern that did not yield to interpolation. Unfortunately, the dust on my desk has not yielded it up.
     

    A few days ago, I drew attention to the question in which OP talked about the generation of triangles in a plane, for which the lengths of all sides, the area and radius of the inscribed circle are integers. In addition, all vertices must have different integer coordinates (6 different integers), the lengths of all sides are different and the triangles should not be rectangular. I prepared the answer to this question, but the question disappeared somewhere, so I designed my answer as a separate post.

    The triangles in the plane, for which the lengths of all sides and the area  are integers, are called as Heronian triangles. See this very interesting article in the wiki about such triangles
    https://en.wikipedia.org/wiki/Integer_triangle#Heronian_triangles

    The procedure finds all triangles (with the fulfillment of all conditions above), for which the lengths of the two sides are in the range  N1 .. N2 . The left side of the range is an optional parameter (by default  N1=5). It is not recommended to take the length of the range more than 100, otherwise the operating time of the procedure will greatly increase. The procedure returns the list in which each triangle is represented by a list of  [list of coordinates of the vertices, area, radius of the inscribed circle, list of lengths of the sides]. Without loss of generality, one vertex coincides with the origin (obviously, by a shift it is easy to place it at any point). 

    The procedure works as follows: one vertex at the origin, then the other two must lie on circles with integer and different radii  x^2+y^2=r^2. Using  isolve  command, we find all integer points on these circles, and then in the for loops we select the necessary triangles.


     

     

    restart;
    HeronianTriangles:=proc(N2::posint,N1::posint:=5)
    local k, r, S, L, Ch, Dist, IsOnline, c, P, p, A, B, C, a, b, s, ABC, cc, s1, T ;
    uses combinat, geometry;
    if N2<N1 then error "Should be N2>=N1" fi;
    if N2<34 then return [] fi;
    k:=0:
    for r from max(N1,5) to N2 do
    S:=[isolve(x^2+y^2=r^2)];
    if nops(S)>4 then k:=k+1; L[k]:=select(s->s[1]<>0 and s[2]<>0,map(t->rhs~(convert(t,list)), S)); fi;
    od:
    L:=convert(L, list):
    if type(L[1],symbol) then return [] fi;

    Ch:=combinat:-choose([$1..nops(L)], 2):
    Dist:=(A::list,B::list)->simplify(sqrt((A[1]-B[1])^2+(A[2]-B[2])^2));
    IsOnline:=(A::list,B::list)->`if`(A[1]*B[2]-A[2]*B[1]=0, true, false);
    k:=0:
    for c in Ch do
    for A in L[c[1]] do
    for B in L[c[2]] do
    if not IsOnline(A,B) and nops({A[],B[]})=4 then if type(Dist(A,B),posint) then
     k:=k+1; P[k]:=[A,B] fi; fi;
    od: od: od:
    P:=convert(P, list):
    if type(P[1],symbol) then return [] fi;

    k:=0:
    for p in P do
    point('A',0,0), point('B',p[1]), point('C',p[2]);
    a:=simplify(distance('A','B')); b:=simplify(distance('A','C')); c:=simplify(distance('B','C'));
    s:=sort([a,b,c]); s1:={a,b,c};
    triangle(ABC,['A','B','C']);
    incircle(cc,ABC);
    r:=radius(cc);
    if type(r,integer) and s[3]^2<>s[1]^2+s[2]^2 and nops(s1)=3 then k:=k+1; T[k]:=[[[0,0],p[]],area(ABC),r, [a,b,c]] fi;
    od:
    T:=convert(T,list);
    if type(T[1],symbol) then return [] fi;
    T;
    end proc:

    Examples of use of the procedure  HeronianTriangles

    T:=HeronianTriangles(100): # All the Geronian triangles, whose lengths of two sides do not exceed 100
    nops(T);

    256

    (1)

    Tp:=select(p->p[1,2,1]>0 and p[1,2,2]>0 and p[1,3,1]>0 and p[1,3,2]>0, T);

    [[[[0, 0], [16, 30], [28, 21]], 252, 6, [34, 35, 15]], [[[0, 0], [30, 16], [21, 28]], 252, 6, [34, 35, 15]], [[[0, 0], [21, 28], [15, 36]], 168, 4, [35, 39, 10]], [[[0, 0], [28, 21], [36, 15]], 168, 4, [35, 39, 10]], [[[0, 0], [27, 36], [13, 84]], 900, 10, [45, 85, 50]], [[[0, 0], [36, 27], [84, 13]], 900, 10, [45, 85, 50]], [[[0, 0], [33, 44], [48, 36]], 462, 7, [55, 60, 17]], [[[0, 0], [44, 33], [36, 48]], 462, 7, [55, 60, 17]], [[[0, 0], [33, 44], [96, 28]], 1650, 15, [55, 100, 65]], [[[0, 0], [44, 33], [28, 96]], 1650, 15, [55, 100, 65]], [[[0, 0], [16, 63], [72, 21]], 2100, 20, [65, 75, 70]], [[[0, 0], [63, 16], [21, 72]], 2100, 20, [65, 75, 70]], [[[0, 0], [39, 52], [18, 80]], 1092, 12, [65, 82, 35]], [[[0, 0], [52, 39], [80, 18]], 1092, 12, [65, 82, 35]], [[[0, 0], [32, 60], [56, 42]], 1008, 12, [68, 70, 30]], [[[0, 0], [60, 32], [42, 56]], 1008, 12, [68, 70, 30]], [[[0, 0], [42, 56], [30, 72]], 672, 8, [70, 78, 20]], [[[0, 0], [56, 42], [72, 30]], 672, 8, [70, 78, 20]]]

    (2)

    Tr:=map(p->p+[2,1],Tp[1,1]);
    with(geometry):
    point(A,Tr[1]), point(B,Tr[2]), point(C,Tr[3]):
    triangle(ABC,[A,B,C]):
    simplify(distance(A,B)), simplify(distance(A,C)), simplify(distance(B,C));
    local O:
    incircle(c,ABC, centername=O):
    draw([A,B,C, ABC, c(color=blue)], color=red, thickness=2, symbol=solidcircle, tickmarks = [spacing(1)$2], gridlines, scaling=constrained, view=[0..31,0..33], size=[800,550], printtext=true, font=[times, 18], axesfont=[times, 10]);

    [[2, 1], [18, 31], [30, 22]]

     

    34, 35, 15

     

     



    Examples of triangles with longer sides

    T:=HeronianTriangles(1000,980):  # All the Geronian triangles, whose lengths of two sides lie in the range  980..1000
    nops(T);

    56

    (3)

    Tp:=select(p->p[1,2,1]>0 and p[1,2,2]>0 and p[1,3,1]>0 and p[1,3,2]>0, T);  # Triangles lying in the first quarter x>0, y>0
    nops(%);

    [[[[0, 0], [540, 819], [680, 714]], 85680, 80, [981, 986, 175]], [[[0, 0], [819, 540], [714, 680]], 85680, 80, [981, 986, 175]], [[[0, 0], [216, 960], [600, 800]], 201600, 168, [984, 1000, 416]], [[[0, 0], [960, 216], [800, 600]], 201600, 168, [984, 1000, 416]], [[[0, 0], [380, 912], [324, 945]], 31806, 31, [988, 999, 65]], [[[0, 0], [912, 380], [945, 324]], 31806, 31, [988, 999, 65]], [[[0, 0], [594, 792], [945, 324]], 277992, 216, [990, 999, 585]], [[[0, 0], [792, 594], [324, 945]], 277992, 216, [990, 999, 585]]]

     

    8

    (4)

     


     

    Download Integer_Triangle1.mw

    Edit.

    Irrational numbers: numbers that cannot be represented as a ratio of integers. The decimal form of a rational number is non-repeating and non-terminating.

    Change to:

    Irrational numbers: numbers that cannot be represented as a ratio of integers. The decimal form of an irrational number is non-repeating and non-terminating. 

    or change to

    Irrational numbers can be represented by decimal fractions in which the digits go on forever without ever repeating a pattern.  See Downing, Douglas. Dictionary of Mathematics Terms. 2nd ed. Hauppauge, NY: Barron's Ed. Series, Inc., 1995, p. 176).

    The Joint Mathematics Meetings are taking place this week (January 10 – 13) in San Diego, California, U.S.A. This will be the 101th annual winter meeting of the Mathematical Association of America (MAA) and the 124nd annual meeting of the American Mathematical Society (AMS).

    Maplesoft will be exhibiting at booth #505 as well as in the networking area. Please stop by our booth or the networking area to chat with me and other members of the Maplesoft team, as well as to pick up some free Maplesoft swag or win some prizes.

    There are also several interesting Maple-related talks and events happening this week - I would definitely not miss the talk by our own Paulina Chin on grading sketch graphs.

     

    Using Symbol-Crunching to find ALL Sucker's Bets (with given deck sizes). 

    AMS Special Session on Applied and Computational Combinatorics, II 
    Wednesday January 10, 2018, 2:15 p.m.-2:45 p.m.

    Shalosh B. Ekhad, Rutgers University, New Brunswick 
    Doron Zeilberger*, Rutgers University, New Brunswick 
     

    Collaborative Research: Maplets for Calculus. 

    MAA Poster Session: Projects Supported by the NSF Division of Undergraduate Education 
    Thursday January 11, 2018, 2:00 p.m.-4:00 p.m.

    Philip B. Yasskin*, Texas A&M University 
    Douglas B. Meade, University of South Carolina 
    Matthew Barry, Texas A&M Engineering Extension Service 
    Andrew Crenwelge, Texas A&M University 
    Joseph Martinson, Texas A&M University 
    Matthew Weihing, Texas A&M University

     

    Automated Grading of Sketched Graphs in Introductory Calculus Courses. 

    AMS Special Session on Visualization in Mathematics: Perspectives of Mathematicians and Mathematics Educators, I 

    Friday January 12, 2018, 9:00 a.m.

    Dr. Paulina Chin*, Maplesoft 

     

    Semantic Preserving Bijective Mappings of Mathematical Expressions between LaTeX and Computer Algebra Systems.

    AMS Special Session on Mathematical Information in the Digital Age of Science, III 
    Friday January 12, 2018, 9:00 a.m.-9:20 a.m.

    Howard S. Cohl*, NIST 

     

    Interactive Animations in MYMathApps Calculus. 

    MAA General Contributed Paper Session on Mathematics and Technology 
    Saturday January 13, 2018, 11:30 a.m.-11:40 a.m.

    Philip B. Yasskin*, Texas A&M University 
    Andrew Crenwelge, Texas A&M University 
    Joseph Martinsen, Texas A&M University 
    Matthew Weihing, Texas A&M University 
    Matthew Barry, Texas A&M Engineering Experiment Station 

     

    Applying Maple Technology in Calculus Teaching To Create Artwork. 

    MAA General Contributed Paper Session on Teaching and Learning Calculus, II 
    Saturday January 13, 2018, 2:15 p.m.

    Lina Wu*, Borough of Manhattan Community College-The City University of New York

     

    If you are attending the Joint Math meetings this week and plan on presenting anything on Maple, please feel free to let me know and I'll update this list accordingly.


    See you in San Diego!

    Daniel

    Maple Product Manager

    Implementation of Maple apps for the creation of mathematical exercises in
    engineering

    In this research work has allowed to show the implementation of applications developed in the Maple software for the creation of mathematical exercises given the different levels of education whether basic or higher.
    For the majority of teachers in this area, it seems very difficult to implement apps in Maple; that is why we show the creation of exercises easily and permanently. The purpose is to get teachers from our institutions to use applications ready to be evaluated in the classroom. The results of these apps (applications with components made in Maple) are supported on mobile devices such as tablets and / or laptops and taken to the cloud to be executed online from any computer. The generation of patterns is a very important alternative leaving aside random numbers, which would allow us to lose results
    onscreen. With this; Our teachers in schools or universities would evaluate their students in parallel on the blackboard without losing the results of any student and thus achieve the competencies proposed in the learning sessions.
    In these apps would be the algorithms for future research updates and integrated with systems in content management. Therefore what we show here is extremely important for the evaluation on the blackboard in bulk to students without losing any scientific criteria.

    FAST_UNT_2018.mw

    FAST_UNT_2018.pdf

    Lenin Araujo Castillo

    Ambasador of Maple

     

    In the beginning, Maple had indexed names, entered as x[abc]; as early as Maple V Release 4 (mid 1990s), this would display as xabc. So, x[1] could be used as x1, a subscripted variable; but assigning a value to x1 created a table whose name was x. This had, and still has, undesirable side effects. See Table 0 for an illustration in which an indexed variable is assigned a value, and then the name of the concomitant table is also assigned a value. The original indexed name is destroyed by these steps.
     

     

    At one time this quirk could break commands such as dsolve. I don't know if it still does, but it's a usage that those "in the know" avoid. For other users, this was a problem that cried out for a solution. And Maplesoft did provide such a solution by going nuclear - it invented the Atomic Variable, which subsumed the subscript issue by solving a larger problem.

    The larger problem is this: Arbitrary collections of symbols are not necessarily valid Maple names. For example, the expression  is not a valid name, and cannot appear on the left of an assignment operator. Values cannot be assigned to it. The Atomic solution locks such symbols together into a valid name originally called an Atomic Identifier but now called an Atomic Variable. Ah, so then xcan be either an indexed name (table entry) or a non-indexed literal name (Atomic Variable). By solving the bigger problem of creating assignable names, Maplesoft solved the smaller problem of subscripts by allowing literal subscripts to be Atomic Variables.

    It is only in Maple 2017 that all vestiges of "Identifier" have disappeared, replaced by "Variable" throughout. The earliest appearance I can trace for the Atomic Identifier is in Maple 11, but it might have existed in Maple 10. Since Maple 11, help for the Atomic Identifier is found on the page 

     

    In Maple 17 this help could be obtained by executing help("AtomicIdentifier"). In Maple 2017, a help page for AtomicVariables exists.

    In Maple 17, construction of these Atomic things changed, and a setting was introduced to make writing literal subscripts "simpler." With two settings and two outcomes for a "subscripted variable" (either indexed or non-indexed), it might be useful to see the meaning of "simpler," as detailed in the worksheet AfterMath.mw.

    Hi,

    2 examples to explore components to illustrated Fractals
     

    NULL

    Flocon de VonKoch

     

     

     

    NULL

    NULL

    NULL

    NULL

     

     

    ``


     

    Download AppliFloconVonKoch.mw

    It passed through my mind it would be interesting to collect the links to the most relevant Mapleprimes posts about Quantum Mechanics using the Physics package of the last couple of years, to have them all accessible from one place. These posts give an idea of what kind of computation is already doable in quantum mechanics, how close is the worksheet input to what we write with paper and pencil, and how close is the typesetting of the output to what we see in textbooks.

    At the end of each page linked below, you will see another link to download the corresponding worksheet, that you can open using Maple (say the current version or the version 1 or 2 years ago).

    This other set of three consecutive posts develops one problem split into three parts:

    This other link is interesting as a quick and compact entry point to the use of the Physics package:

    There is an equivalent set of Mapleprimes posts illustrating the Physics package tackling problems in General Relativity, collecting them is for one other time.

    Edgardo S. Cheb-Terrab
    Physics, Differential Equations and Mathematical Functions, Maplesoft

    This is, perhaps, one of the most complicated computations done in this area using the Physics package. To the best of my knowledge never before performed on a computer algebra worksheet. It is exciting to present a computation like this one. At the end the corresponding worksheet is linked so that it can be downloaded and the sections be opened, the computation be reproduced. There is also a link to a pdf with everything open.  Special thanks to Pascal Szriftgiser for bringing this problem. To reproduce the computations below, please update the Physics library with the one distributed from the Maplesoft R&D Physics webpage.

     

    Quantum Runge-Lenz Vector and the Hydrogen Atom,

    the hidden SO(4) symmetry

     

    Pascal Szriftgiser1 and Edgardo S. Cheb-Terrab2 

    (1) Laboratoire PhLAM, UMR CNRS 8523, Université Lille 1, F-59655, France

    (2) Maplesoft

    ``

     

    Let's consider the Hydrogen atom and its Hamiltonian

    H = LinearAlgebra[Norm](`#mover(mi("p"),mo("&rarr;"))`)^2/(2*m__e)-kappa/r,

     

    where `#mover(mi("p"),mo("&rarr;"))`is the electron momentum, m__e its mass, κ a real positive constant, and r the distance of the electron from the proton located at the origin. We assume that the proton's mass is infinite. Classically, from the potential -kappa/r, one can derive a central force `#mover(mi("F"),mo("&rarr;"))` = -kappa*`#mover(mi("r"),mo("&and;"))`/r^2 that drives the electron's motion. Introducing the angular momentum

     

    `#mover(mi("L"),mo("&rarr;"))` = `&x`(`#mover(mi("r"),mo("&rarr;"))`, `#mover(mi("p"),mo("&rarr;"))`),

     

    one can further define the Runge-Lenz vector `#mover(mi("Z"),mo("&rarr;"))`

     

    "Z=1/(`m__e`) (L)*(p)+kappa ( r)/r."

     

    It is well known that `#mover(mi("Z"),mo("&rarr;"))` is a constant of the motion, i.e. diff(`#mover(mi("Z"),mo("&rarr;"))`(t), t) = 0. Switching to Quantum Mechanics, this condition reads

     

    %Commutator(H, Z_) = 0.

    where, for hermiticity purpose, the expression of `#mover(mi("Z"),mo("&rarr;"))` must be symmetrized

     

    `#mover(mi("Z"),mo("&rarr;"))` = (`&x`(`#mover(mi("L"),mo("&rarr;"))`, `#mover(mi("p"),mo("&rarr;"))`)-`&x`(`#mover(mi("p"),mo("&rarr;"))`, `#mover(mi("L"),mo("&rarr;"))`))/(2*m__e)+kappa*`#mover(mi("r"),mo("&rarr;"))`/r.

     

    Here, departing from the basic commutation rules between position `#mover(mi("r"),mo("&rarr;"))`, momentum `#mover(mi("p"),mo("&rarr;"))` and angular momentum `#mover(mi("L"),mo("&rarr;"))` all in tensor notation, we first derive a useful couple of intermediate identities, then we demonstrate the following commutation rules between the quantum Hamiltonian, angular momentum and Runge-Lenz vector `#mover(mi("Z"),mo("&rarr;"))`

     

    "[H,L[n]][-]=0   "and   "[H,Z[n]][-]=0",

    "[L[m],Z[n]][-]=i `&hbar;` `&epsilon;`[m,n,o] Z[o]",

    "[Z[m],Z[n]][-]=-2 (i `&hbar;`)/(`m__e`) H `&epsilon;`[m,n,o]  L[o]".

     

    Since H commutes with both `#mover(mi("L"),mo("&rarr;"))`NULL and `#mover(mi("Z"),mo("&rarr;"))`, defining

     

    "`M__n`=sqrt(-(`m__e`)/(2 H)) `Z__n`,"

    one gets the set of relations (the first one is part of the departure point)

    "[L[m],L[n]][-]=i `&hbar;` `&epsilon;`[m,n,o] L[o],   [L[m],M[n]][-]=i `&hbar;` `&epsilon;`[m,n,o] M[o],"

    "[M[m],M[n]][-]= i `&hbar;` `&epsilon;`[m,n,o]  L[o]."


    This set constitutes the Lie algebra of the SO(4) group (closely related to a Poincaré group in special relativity).

     

    I Commutation rules and useful identities

     

    Quantum commutation rules basics and the Hamiltonian of the hydrogen atom

       

    Identities (I):  `&PartialD;__n`(V) = -V^3*X__n,  V^3*X[l]^2 = V  and  `&square;`(V) = 0

       

    Identities (II): the commutation rules between  `#mover(mi("L",mathcolor = "olive"),mo("&rarr;"))`, `#mover(mi("p",mathcolor = "olive"),mo("&rarr;"))` and the potential V(X)

       

    II "[H,L[n]][-]=0" and "[H,Z[n]][-]=0"``

     

    "[H,L[n]][-]=0"

       

    "[H,Z[n]][-]=0"

     

    Setting up the problem and Z[n] is hermitian

       

    Algebraic approach

       

    Alternative approach using differential operators

       

    III "[L[m],Z[n]][-]=i `&hbar;` `&epsilon;`[m,n,k] Z[k]"

       

    IV "[Z[m],Z[n]][-]=-(2 i `&hbar;` )/(`m__e`)H `&epsilon;`[m,n,o] L[o]"

     

    Algebraic approach

       

    Alternative approach using differential operators

       


    Download HiddenSO4.mw    Download  HiddenSO4.pdf

    Edgardo S. Cheb-Terrab
    Physics, Differential Equations and Mathematical Functions, Maplesoft

    hi guys....new image that I am very proud of....utilzing the number theoretic argument λ (n)