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

  • For years I've been angry that Maple isn't capable of formally manipulating random vectors (aka multivariate random variables).
    For the record Mathematica does.

    The problem I'm concerned with is to create a vector W such that

    type(W, RandomVariable)

    will return true.
    Of course defining W from its components w1, .., wN, where each w is a random variable is easy, even if these components are correlated or, more generally dependent ( the two concepts being equivalent iif all the w are gaussian random variables).
    But one looses the property that W is no longer a (multivariate) random variable.
    See a simple example here:

    This is the reason why I've developped among years several pieces of code to build a few multivariate random variable (multinormal, Dirichlet, Logistic-Normal, Skew Multivariate Normal, ...).

    In the framework of my activities, they are of great interest and the purpose of this post is to share what I have done on this subject by presenting the most classic example: the multivariate gaussian random variable.

    My leading idea was (is) to build a package named MVStatistics on the image of the Statistics package but devoted to Multi Variate random variables.
    I have already construct such a package aggregating about fifty different procedures. But this latter doesn't merit the appellation of "Maple package" because I'm not qualified to write something like this which would be at the same time perennial, robust, documented, open and conflict-free with the  Statistics package.
    In case any of you are interested in pursuing this work (because I'm about to change jobs), I can provide it all the different procedures I built to construct and manipulate multivariate random variables.

    To help you understand the principles I used, here is the most iconic example of a multivariate gaussian random variable.
    The attached file contains the following procedures

      Constructs a gaussian random vector whose components can be mutually correlated
      The statistics defined in Distribution are: (this list could be extended to other
      statistics, provided they are "recognized" statitics, see at the end of this 
          StandardDeviation = add(s[k]*x[k], k=1..K)
      Builds and draws the dispersion ellipses of a bivariate gaussia, random vector
      Builds and draws the dispersion ellipsoids of a trivariate gaussia, random vector
      Computes several statistics of a random vector (Mean, Variance, ...)
      Computes the moments of any order of a gaussian random vector
      Computes the central moments of a gaussian random vector
      Builds the conditional random vector of a gaussian random vector wrt some of its components 
      the moments of any order of a gaussian random vector.
      Note: the result has type RandomVariable.
      Builds the marginal random vector of a gaussian random vector wrt some of its components 
      the moments of any order of a gaussian random vector.
      Note: the result has type RandomVariable.
      The multi-dimensional analogue of the Shapiro-Wilks normality test
      Henze-Zirkler test for Multivariate Normality
      A multivariate version of the non-parametrix Wald-Folfowitz test

    Do not hesitate to ask me any questions that might come to mind.
    In particular, as Maple introduces limitations on the type of some attributes (for instance Mean  must be of algebraic type), I've been forced to lure it by transforming vector or matrix quantities into algebraic ones.
    An example is

    Mean = add(m[k]*x[k], k=1..K)

    where m[k] is the expectation of the kth component of this random vector.
    This implies using the procedure MVstat to "decode", for instance, what Mean returns and write it as a vector.

    About the  statistics ths Statistics:-Distribution constructor recognizes:
    To get them one can do this (the Normal distribution seems to be the continuous one with the most exhaustive list os statistics):

    X := RandomVariable(Normal(a, b)):
          protected, RandomVariable, _ProbabilityDistribution
    map(e -> printf("%a\n", e), [exports(attributes(X)[3])]):

    Unfortunately it happens that for some unknown reason a few statistics cannot be set by the user.
    This is for instance the case of Parameters serious consequences in certain situations.
    Among the other statistics that cannot be set by the user one finds:

    • ParentName,
    • QuantileNumeric  whose role is not very clear, at least for me, but which I suspect is a procedure which "inverts" the CDF to give a numerical estimation of a quantile given its probability.
      If it is so accessing  QuantileNumeric would be of great interest for distributions whose the quantiles have no closed form expressions.
    • CDFNumeric  (same remark as above)

    Finally, the statistics Conditions, which enables defining the conditions the elements of Parameters must verify are not at all suited for multivariate random variables.
    It is for instance impossible to declare that the variance matrix (or the correlation matrix) is a square symmetric positive definite matrix).

    A new feature has been released on Maple Learn called “collapsible sections”! This feature allows for users to hide content within sections on the canvas. You can create a section by highlighting the desired text and clicking this icon in the top toolbar:

    “Well, when can I actually use sections?” you may ask. Let me walk you through two quick scenarios so you can get an idea.

    For our first scenario, let’s say you’re an instructor. You just finished a lesson on the derivatives of trigonometric functions and you’re now going through practice problems. The question itself is not long enough to hide the answers, so you’re wondering how you can cover the two solutions below so that the students can try out the problem themselves first.


    Before, you might have considered hyperlinking a solution document or placing the solution lower down on the page. But now, collapsible sections have come to the rescue! Here’s how the document looks like now:  


    You can see that the solutions are now hidden, although the section title still indicates which solution it belongs to. Now, you can 1) keep both solutions hidden, 2) show one solution at a time, or 3) show solutions side-by side and compare them!

    Now for the second scenario, imagine you’re making a document which includes a detailed visualization such as in Johnson and Jackson’s proof of the Pythagorean theorem. You want the focus to be on the proof, not the visualizations commands that come along with the proof. What do you do?

    It’s an easy solution now that collapsible sections are available!

    Now, you can focus on the proof without being distracted by other information—although the visualization commands can still be accessed by expanding the section again.

    So, take inspiration and use sections to your advantage! We will be doing so as well. you may gradually notice some changes in existing documents in the Maple Learn Gallery as we update them to use collapsible sections. 

    Happy document-making!

    A Flow and Maple user wonders why Maple Flow may evaluate to high-precision, floating point numbers compared to the same commands used in Maple that evaluate to simple, concise answers.



    We suggest the same results can be achieved by toggling the numeric/symbolic evaluation mode toggle in the Flow math container(s)





    For more information, please see section 3.5 of the Maple Flow User Manual (Numeric and Symbolic Evaluation Modes). 


    A new collection has been released on Maple Learn! The new Pascal’s Triangle Collection allows students of all levels to explore this simple, yet widely applicable array.

    Though the binomial coefficient triangle is often referred to as Pascal’s Triangle after the 17th-century mathematician Blaise Pascal, the first drawings of the triangle are much older. This makes assigning credit for the creation of the triangle to a single mathematician all but impossible.

    Persian mathematicians like Al-Karaji were familiar with the triangular array as early as the 10th century. In the 11th century, Omar Khayyam studied the triangle and popularised its use throughout the Arab world, which is why it is known as “Khayyam’s Triangle” in the region. Meanwhile in China, mathematician Jia Xian drew the triangle to 9 rows, using rod numerals. Two centuries later, in the 13th century, Yang Hui introduced the triangle to greater Chinese society as “Yang Hui’s Triangle”. In Europe, various mathematicians published representations of the triangle between the 13th and 16th centuries, one of which being Niccolo Fontana Tartaglia, who propagated the triangle in Italy, where it is known as “Tartaglia’s Triangle”. 

    Blaise Pascal had no association with the triangle until years after his 1662 death, when his book, Treatise on Arithmetical Triangle, which compiled various results about the triangle, was published. In fact, the triangle was not named after Pascal until several decades later, when it was dubbed so by Pierre Remond de Montmort in 1703.

    The Maple Learn collection provides opportunities for students to discover the construction, properties, and applications of Pascal’s Triangle. Furthermore, students can use the triangle to detect patterns and deduce identities like Pascal’s Rule and The Binomial Symmetry Rule. For example, did you know that colour-coding the even and odd numbers in Pascal’s Triangle reveals an approximation of Sierpinski’s Fractal Triangle?

    See Pascal’s Triangle and Fractals

    Or that taking the sum of the diagonals in Pascal's Triangle produces the Fibonacci Sequence?

    See Pascal’s Triangle and the Fibonacci Sequence

    Learn more about these properties and discover others with the Pascal’s Triangle Collection on Maple Learn. Once you are confident in your knowledge of Pascal’s Triangle, test your skills with the interactive Pascal’s Triangle Activity


    On November 11th, Canada and other Commonwealth member states will celebrate Remembrance Day, also known as Armistice Day. This holiday commemorates the armistice signed by Germany and the Entente Powers in Compiègne, France on November 11, 1918, to end the hostilities on the Western Front of World War I. The armistice came into effect at 11:00 am that morning – the “eleventh hour of the eleventh day of the eleventh month”. 

    Similar to how November 11th – which can be written as 11/11 – is a palindromic date that reads the same forward and backward, last year there was “Twosday” – February 22, 2022, also written 22/2/22. 

    Palindromic dates like November 11th that consist only of a day and a month happen every year, but how long will we have to wait until the next “Twosday”? We can use Maple Learn’s new Calendar Calculator to find out!

    To use this document, simply input two dates and press ‘Calculate’ to find the amount of time between them, presented in a variety of units. For example, here are the results for the number of days left until Christmas from November 11th of this year:

    If we return to our original question, which concerns how long we’ll have to wait until the next “Twosday”, we can use this document to find our answer:

    You can use this document as a countdown to find out how much time is left until your favorite holiday, your next birthday, or the time between now and any past or future date; try out the countdown document here!

    We have just released updates to Maple and MapleSim.

    Maple 2023.2 includes a strikethrough character style, a new unit system, improved behavior when editing or deleting subscripts, improved find-and-replace, better mouse selection of piecewise functions and the contents of matrices, and moreWe recommend that all Maple 2023 users install this update.

    This update also include a fix to the problem with setoptions3d, as first reported on MaplePrimes. Thanks, as always, for helping us make Maple better.

    This update is available through Tools>Check for Updates in Maple, and is also available from the Maple 2023.2 download page, where you can find more details.

    At the same time, we have also released an update to MapleSim, which contains a variety of improvements to MapleSim and its add-ons. You can find more information on the MapleSim 2023.2 download page.


    Many everyday decisions are made using the results of coin flips and die rolls, or of similar probabilistic events. Though we would like to assume that a fair coin is being used to decide who takes the trash out or if our favorite soccer team takes possession of the ball first, it is impossible to know if the coin is weighted from a single trial.


    Instead, we can perform an experiment like the one outlined in Hypothesis Testing: Doctored Coin. This is a walkthrough document for testing if a coin is fair, or if it has been doctored to favor a certain outcome. 


    This hypothesis testing document comes from Maple Learn’s new Estimating collection, which contains several documents, authored by Michael Barnett, that help build an understanding of how to estimate the probability of an event occurring, even when the true probability is unknown.

    One of the activities in this collection is the Likelihood Functions - Experiment document, which builds an intuitive understanding of likelihood functions. This document provides sets of observed data from binomial distributions and asks that you guess the probability of success associated with the random variable, giving feedback based on your answer. 



    Once you’ve developed an understanding of likelihood functions, the next step in determining if a coin is biased is the Maximum Likelihood Estimate Example – Coin Flip activity. In this document, you can run as many randomized trials of coin flips as you like and see how the maximum likelihood estimate, or MLE, changes, bearing in mind that if a coin is fair, the probability of either heads or tails should be 0.5. 



    Finally, in order to determine in earnest if a coin has been doctored to favor one side over the other, a hypothesis test must be performed. This is a process in which you test any data that you have against the null hypothesis that the coin is fair and determine the p-value of your data, which will help you form your conclusion.

    This Hypothesis Testing: Doctored Coin document is a walkthrough of a hypothesis test for a potentially biased coin. You can run a number of trials on this coin, determine the null and alternative hypotheses of your test, and find the test statistic for your data, all using your understanding of the concepts of likelihood functions and MLEs. The document will then guide you through the process of determining your p-value and what this means for your conclusion.

    So if you’re having suspicions that a coin is biased or that a die is weighted, check out Maple Learn’s Estimating collection and its activities to help with your investigation!

    The Maple Conference starts tomorrow Oct. 26 at 9am EDT! It's not too late to register: Even if you can't attend all the presentations, registration will allow you to view the recorded videos after the conference. 

    Check out the detailed conference program here:

    My idea has been written down here, check out


    This is an successfull attempt to simulate space frames in MapleSim using the relatively new Rod component.

    At t=3s, a lateral force component is applied to make the simulation more interesting.

    The structure collapses/folds in an origami style fashion.