MaplePrimes Posts

Latest Posts Latest Posts Feed

A small piece of code for fun before the weekend, inspired by some recent posts:


cycler := proc(t, k, p, m, n, T) local expr, u, v;
  u := exp(k*I*t);
  expr := exp(I*t) * (1 - u/m + I*(u^(-p))/n);
  v := 1 + abs(1/n) + abs(1/m);
  plots:-complexplot( expr, t = 0 .. T, axes = none,
                      view = [-v .. v, -v .. v] );
end proc:

cycler(t, 5, 3, 2, 3, 2*Pi);

And that can be made into a small application (needs Maple 18 or 2015),

Explore( cycler(t, k, p, m, n, T),
         parameters = [ k = -10 .. 10, p = -10 .. 10,
                        m = -10.0 .. 10.0, n = -10.0 .. 10.0,
                        [ T = 0 .. 2*Pi, animate ] ],
         initialvalues = [ k = 5, p = 3, m = 2, n = 3, T = 2*Pi ],
         placement = left, animate = false, numframes = 100 );

The animation of parameter T from 0 to 2*Pi can also be fun if the view option is removed/disabled in the call to complexplot. (That could even be made a choice, by adding an additional argument for calling procedure cycler and an accompanying checkbox parameter on the exploration.)


Maplesoft will be hosting the 2015 Maple T.A. User Summit this June 15 - 17 in New York City. Don’t miss this opportunity to learn about new trends in online education while networking and socializing with fellow educators and Maple T.A. users in the city that never sleeps!

We are happy to announce that the schedule has been finalized! The event will include keynote presentations, talks and discussions from users and Maplesoft staff, training sessions, a welcome reception and a boat cruise around New York City, 

If you'd like ot sign-up but still haven't - don't hesitate to do so today using the following link: .

I hope to see you there!

Maplesoft Product Manager, Maple T.A.

Developed and then implemented with open code components. It is very important to note this post is held for students of civil engineering and mechanics. Using advanced mathematical concepts to concepts in engineering.

(in spanish)








On a related post here, I have posted some screen shots for fun. Today is a special day for me in particular, because I passed my PhD viva with minor corrections! If you look colsely on the date, by coincidence, it was TWO years ago exactly. So I feel like I maybe 'update' the old post with a bit more, to make it V2.


So here comes the new screent shots: (Bear with me for now, I will post some actual content about how I feel when using Maple later.)

Alright, enough with the screent shots. If you click to see the big picture, you would notice that I have managed to get a complete sets of Maple versions from Maple V to Maple 2015!



I am originally from Shanghai and I have always done well in Maths and science. I first heard about Maple in 2004 from a Maths teacher. He introduced me to this software. I played just a couple of times with Maple 6 on his computer, to get a first impression. At that time, all I could say was, hmmm insteresting.


In 2006, I went to UK for a foundation course. That was the first time I was actually taught how to use Maple 9.5. So I had access to it on the university computers. I discovered a lot about Maple and used it for ALL my Maths homeworks. Yes, I am lazy. I hope that Maple can do everything!


Then I got fascinated with Maple. Unfortunately, Maple was not taught in the undergraduate course. But there are materials for self-learning. By that time, I had become quite good with most of the contents in those materials. So I went look for other things to try. I went to ask my foundation course classmates, to see if they have anything on Maple and if they needed the help. One of them was at Imperial College and the questions were a bit chanlleging (finally!). That was the time I first met MaplePrimes! Hello, how have you been?


After that I have never stopped using Maple or Maple Primes. I may have been quite on the forum, but I was there. My PhD research rely hugely on the ability to compute the symbolic rank of certain matrices as well as the ability to simplifiying complicated expressions using siderules.


I do not want to talk too much about the technical details when using Maple. But I do

THANK Maple and it creators, developers and all relavent staff around the globe.

THANK Maple Primes and all its users. Some users have been particulary helpful!


Lastly, I dont have any other words to say other than this:

It's been really fun and enjoyable. Thanks!



This post is related to the this thread

The recursive procedure  PosIntSolve  finds the number of non-negative or positive solutions of any linear Diophantine equation

a1*x1+a2*x2+ ... +aN*xN = n  with positive coefficients a1, a2, ... aN .  

Formal parameters: L is the list of coefficients of the left part, n  is the right part,  s (optional) is nonneg (by default) for nonnegint solutions and  pos  for positive solutions.

The basic ideas:

1) If you make shifts of the all unknowns by the formulas  x1'=x1-1,  x2'=x2-1, ... , xN'=xN-1  then  the number of positive solutions of the first equation equals the number of non-negative solutions of the second equation.

2) The recurrence formula (penultimate line of the procedure) can easily be proved by induction.


The code of the procedure:


PosIntSolve:=proc(L::list(posint), n::nonnegint, s::symbol:=nonneg)

local N, n0;

option remember;

if s=pos then n0:=n-`+`(op(L)) else n0:=n fi;


if N=1 then if irem(n0,L[1])=0 then return 1 else return 0 fi; fi;

add(PosIntSolve(subsop(1=NULL,L),n0-k*L[1]), k=0..floor(n0/L[1]));

end proc:


Examples of use.


Finding of the all positive solutions of equation 30*a+75*b+110*c+85*d+255*e+160*f+15*g+12*h+120*i=8000:


PosIntSolve([30,75,110,85,255,160,15,12,120], 8000, pos);





To test the procedure, solve (separately for non-negative and positive solutions) the simple equation  2*x1+7*x2+3*x3=2000  in two ways (by the  procedure and brute force method):


PosIntSolve([2,7,3], 2000);

PosIntSolve([2,7,3], 2000, pos);








for x from 0 to 2000/2 do

for y from 0 to floor((2000-2*x)/7) do

for z from 0 to floor((2000-2*x-7*y)/3) do

if 2*x+7*y+3*z=2000 then k:=k+1 fi;

od: od: od:



for x from 1 to 2000/2 do

for y from 1 to floor((2000-2*x)/7) do

for z from 1 to floor((2000-2*x-7*y)/3) do

if 2*x+7*y+3*z=2000 then k:=k+1 fi;

od: od: od:







Another example - the solution of the famous problem: how many ways can be exchanged $ 1 using the coins of smaller denomination.




 Edit.  The code has been slightly edited 

The question of colorbars for plots comes up now and then.

One particular theme involves creating an associated 2D plot as the colorbar, using the data within the given 3D plot. But the issue arises of how to easily display the pair together. I'll mention that Maple 2015.1 (the point-release update) provides quite a simple way to accomplish the display of a 3D plot and an associated 2D colorbar side-by-side.

I'm just going to use the example of the latest Question on this topic. There are two parts to here. The first part involves creating a suitable colorbar as a 2D plot, based on the data in the given 3D plot. The second part involves displaying both together.

Here's the 3D plot used for motivating example, for which in this initial experiment I'll apply shading by using the z-value for hue shading. There are a few ways to do that, and a more complete treatment of the first part below would be to detect the shading scheme and compute the colorbar appropriately.

Some of the code below requires update release Maple 2015.1 in order to work. The colors look much better in the actual Maple Standard GUI than they do in this mapleprimes post (rendered by MapleNet).

f := 1.7+1.3*r^2-7.9*r^4+16*r^6:

P := plot3d([r, theta, f],
            r=0..1, theta=0..2*Pi, coords=cylindrical,



Now for the first part. I'll construct two variants, one for a vertical colorbar and one for a horizontal colorbar.

I'll use the minimal and maximal z-values in the data of 3D plot P. This is one of several aspects that needs to be handled according to what's actually inside the 3D plot's data structure.

zmin,zmax := [min,max](op([1,1],P)[..,..,3])[]:

verthuebar := plots:-densityplot(z, dummy=0..1, z=zmin..zmax, grid=[2,49],
                                 size=[90,260], colorstyle=HUE,
                                 style=surface, axes=frame, labels=[``,``],

horizhuebar := plots:-densityplot(z, z=zmin..zmax, dummy=0..1, grid=[49,2],
                                  size=[300,90], colorstyle=HUE,
                                  style=surface, axes=frame, labels=[``,``],

Now we can approach the second part, to display the 3D plot and its colorbar together.

An idea which is quite old is to use a GUI Table for this. Before Maple 2015 that could be done by calling plots:-display on an Array containing the plots. But that involves manual interation to fix it up to look nice: the Table occupies the full width of the worksheet's window and must be resized with the mouse cursor, the relative widths of the columns are not right and must be manually adjusted, the Table borders are all visible and (if unwanted) must be hidden using context-menu changes on the Table, etc. And also the rendering of 2D plots in the display of the generated _PLOTARRAY doesn't respect the size option if applied when creating 2D plots.

I initially thought that I'd have to use several of the commands for programmatic content generation (new in Maple 2015) to build the GUI Table. But in the point-release Maple 2015.1 the size option on 2D plots is respected when using the DocumentTools:-Tabulate command (also new to Maple 2015). So the insertion and display is now possible with that single command.

                        exterior=none, interior=none,
                        weights=[100,25], widthmode=pixels, width=420);




                        exterior=none, interior=none);




We may also with to restrict the view, vertically, and have the colorbar match the shades that are displayed.

                        exterior=none, interior=none,
                        weights=[100,25], widthmode=pixels, width=420);




                        exterior=none, interior=none);




I'd like to wrap both parts into either one or two procedures, and hopefully I'd find time to do that and post here as a followup comment.

Apart from considerations such as handling various kinds of 3D plot data (GRID vs MESH, etc, in the data structure) there are also the matters of detecting a view (VIEW) if specified when creating the 3D plot, handling custom shading schemes, and so on. And then there's the matter of what to do when multiple 3D surfaces (plots) have been merged together.

It's also possible that the construction of the 2D plot colorbar is the only part which requires decent programming as a procedure with special options. The Tabulate command already offers options to specify the placement, column weighting, Table borders, etc. Perhaps it's not necessary to roll both parts into a single command.


I wanted to let everyone know that there is a Maple 2015 update available. Maple 2015.1 provides:

  • Support for high-resolution monitors (e.g. 4K, UHD)
  • Updated translations for Brazilian Portuguese, French, Japanese, and Simplified Chinese
  • Enhancements to the Explore command
  • Improvements to the DataSets package
  • Updates to the Microsoft Excel plug-in
  • Enhancements to unit handling
  • A variety of improvements to the math engine, interface, and documentation

To get this update, you can use Tools>Check for Updates from within Maple, or visit Maple 2015.1 Downloads.

If you are a MapleSim 2015 user, you already have this update, as it was part of the MapleSim 2015 installation.


Here we have a very brief introduction to the use of embedded components, but effective for the study of the polynomials in operations and some products made with maple 2015 to strengthen and raise the mathematics today.

(in spanish)



This post is related to the question. There were  proposed two ways of finding the volume of the cutted part of a sphere in the form of a wedge.  Here the procedure is presented that shows the rest of the sphere. Parameters procedure: R - radius of the sphere, H1 - the distance the first cutting plane to the plane  xOy,  H2 -  the distance the second cutting plane to the plane  zOy. Necessary conditions:  R>0,  H1>=0,  H2>=0,  H1^2+H2^2<R^2 . For clarity, different surfaces are painted in different colors.


Pic := proc (R::positive, H1::nonnegative, H2::nonnegative)

local A, B, C, E, F;

if R^2 <= H1^2+H2^2 then error "Should be H1^(2)+H2^(2)<R^(2)" end if;

A := plot3d([R*sin(theta)*cos(phi), R*sin(theta)*sin(phi), R*cos(theta)], phi = arctan(sqrt(-H1^2-H2^2+R^2), H2) .. 2*Pi-arctan(sqrt(-H1^2-H2^2+R^2), H2), theta = 0 .. Pi, color = green);

B := plot3d([R*sin(theta)*cos(phi), R*sin(theta)*sin(phi), R*cos(theta)], phi = -arctan(sqrt(-H1^2-H2^2+R^2), H2) .. arctan(sqrt(-H1^2-H2^2+R^2), H2), theta = 0 .. arccos(sqrt(R^2-H2^2-H2^2*tan(phi)^2)/R), color = green);

C := plot3d([R*sin(theta)*cos(phi), R*sin(theta)*sin(phi), R*cos(theta)], phi = -arctan(sqrt(-H1^2-H2^2+R^2), H2) .. arctan(sqrt(-H1^2-H2^2+R^2), H2), theta = arccos(H1/R) .. Pi, color = green);

E := plot3d([r*cos(phi), r*sin(phi), H1], phi = -arccos(H2/sqrt(R^2-H1^2)) .. arccos(H2/sqrt(R^2-H1^2)), r = H2/cos(phi) .. sqrt(R^2-H1^2), color = blue);

F := plot3d([H2, r*cos(phi), r*sin(phi)], phi = arccos(sqrt(-H1^2-H2^2+R^2)/sqrt(R^2-H2^2)) .. Pi-arccos(sqrt(-H1^2-H2^2+R^2)/sqrt(R^2-H2^2)), r = H1/sin(phi) .. sqrt(R^2-H2^2), color = gold);

plots[display](A, B, C, E, F, axes = none, view = [-1.5 .. 1.5, -1.5 .. 1.5, -1.5 .. 1.5], scaling = constrained, lightmodel = light4, orientation = [60, 80]);

end proc:


Example of use:

Pic(1,  0.5,  0.3);




Here we have an application to understand how algebraic expressions, calculating degrees relative abosulutos polynomial operations and introduction to work.Here we have an application to understand how algebraic expressions, calculating degrees relative abosulutos polynomial operations and introduction to work.

(in spanish)





We’re trying out something new with our webinars and are hosting our first ever live streaming webinar. Broadcast in real time, and featuring Jonny Zivku, our Maple T.A. Product Manager, this will be your chance to see the face behind the voice, as well as learn more about how academic institutions around the world are using Maple T.A. We hope you can join us.

Here are the full details:

Transforming Testing and Assessment with Maple T.A.

In this webinar, you will learn how Maplesoft's testing and assessment system, Maple T.A., is being used to improve learning, save money, reduce drop-out rates, and increase student satisfaction at academic institutions around the world.

The following Maple T.A. case studies will be presented:

  • The University of Waterloo saved $100,000/year on their grading budget
  • At the Amsterdam University of Applied Science, student pass rates went up approximately 20% within one year
  • The University of Canterbury continued to offer their full academic program after an earthquake damaged classrooms
  • At the University of Guelph, drop-out rates were reduced by more than 10%
  • ...And more!

All attendees of this webinar will be sent a complimentary copy of the Maplesoft magazine Transforming Testing and Assessment.

To join us for the live streaming webinar, please click here to register.

In case anyone is interested, we recently posted a new application on the Application Center,

Time Series Analysis: Forecasting Average Global Temperatures

While interesting in itself (well, I think so, anyway), this application also provides tips and techniques for analyzing time series data in Maple, and shows how to access online data sets through the new data sets functionality in Maple 2015.


The trailers for the new Star Wars movie (Star Wars: The Force Awakens) introduced a new Droid called BB-8. This curious little guy features a spherical body and a controlled instrumented head. More recently, the BB-8 droid was showcased in a Star Wars celebration event and to many peoples' surprise it is real and not a CGI effect!

We have a Sphero robot from Orbotix here at the office, and there was an immediate connection between BB-8 and the Sphero. All that remains is to add the head!

Many have already put together their version of the BB-8, but I wanted to have a physical model that I can play with in a virtual environment and explore some design options.



To build a model of BB-8 like robotic system in MapleSim (Maplesoft's physical modeling software environment), I first needed a couple things in place before going forward:

  1. A few simple CAD shapes (half-sphere, wheels)

  2. A component to represent the contact between two spheres (both outside contact and inside contact)

I used Maple’s plottools package to build the CAD files I needed. First a half-spherical shape:

Then a wheel:


The next step was to create the contact component in MapleSim. I used a Modelica custom component to bring together vector calculations of normal and tangential forces with a variety of options for convenience into one component:



Build the model:

We start with a spherical shape contacting the ground:


Then we add two wheels inside it, and a hanging mass to keep the reference axis vertical when the wheels turn:


Learning from published diagrams showing the internal mechanism of a Sphero, another set of free wheels improves the overall stability when motion commands are given to the two active wheels:


Now this model can be used to move around the surface by giving speed commands to the individual motors that drive to the two bottom wheels. What is needed next is the head and the mechanism to move it around.

Since the head can move almost freely, independent of body rotation, it has to be controlled via magnetic contacts and a controlled arm.

First, we add the control arm:


Now we need to build the head.

The head has an identical triangle to the one at the end of the control arm. At each vertex there is a ball bearing that would slide on the surface of the main spherical body without friction. The magnetic force between the corresponding vertices of the two triangles is modeled via the available point-to-point force element in MapleSim.



Once assembled, the MapleSim model diagram looks like this:


...and our BB-8 droid looks like this:



Seeing the BB-8 in action:

Now that we have constructed our droid in MapleSim, we can animate and see it in action!


With this application we can meet safety characteristics of a relationship and simple or compound functions. Made with maple 2015.

(in spanish)


First 8 9 10 11 12 13 14 Last Page 10 of 238