Applications, Examples and Libraries

Share your work here

Why this post
This work was intended to be a simple reply to a question asked a few days ago.
At some point, I realised that the approach I was using could have a more general interest which, in my opinion, was worth a post.
In a few words, this post is about solving an algebra problem using a method originally designed to tackle statistical problems.

The Context
Recently @raj2018 submitted a question I'm going to resume this way:

Let S(phi ;  beta, f) a function of phi parameterized by beta and f.
Here is the graph of S(phi ;  0.449, 0.19)  @raj2018 provided

@raj2018 then asked how we can find other values (A, B)  of values for (beta, f) such that the graph of S(phi, A, B) has the same aspect of the graph above.
More precisely, let phi_0 the largest strictly negative value of phi such that  S(phi_0, A, B) = 0.
Then  S(phi, A, B) must be negative (strictly negative?) in the open interval (phi_0, 0), and must have exactly 3 extrema in this range.
I will said the point  (A, B) is admissible is S(phi, A, B) verifies thess conditions

The expression of S(phi, A, B) is that complex that it is likely impossible to find an (several?, all?) admissible point using analytic developments.

The approach

When I began thinking to this problem I early thought to find the entire domain of admissible points: was it something possible, at least with some reasonable accuracy? 

Quite rapidly I draw an analogy with an other type of problems whose solution is part of my job: the approximate construction of the probability density function (PDF) of multivariate random variables (obviously this implies that no analytical expression of this PDF is available). This is a very classical problem in Bayesian Statistics, for instance when we have to construt an approximation of a posterior PDF.

To stick with this example and put aside the rare situations where this PDF can be derived analytically, building a posterior PDF is largely based on specific numerical methods. 
The iconic one is known under the generic name MCMC  which stands for Markov Chain Monte Carlo.

Why am I speaking about MCMC or PDF or even random variables?
Let us consider some multivariate random variable R whose PDF as a constant on some bounded domain D and is equal to 0 elsewhere. R is then a uniform random variable with support supp(R) = D.
Assuming the domain Adm of admissible (beta, f) is bounded, we may  think of it as the support of some uniform random variable. Following this analogy we may expect to use some MCMC method to "build the PDF of the bivariate random variable (beta, f)", otherwise stated "to capture​​​​​​ the boundary of​ Adm".

The simplest MCMC method is the Metropolis-Hastings algorithm (MH).
In a few simple words MH builds a Markov chain this way:

  1. Let us assume that the chain already contains elements e1, ..., en.
    Let  f  some suitable "fitness" function (whose nature is of no importance right now).
  2. A potential new element c is randomly picked in some neighborhood or en.
  3. If the ratio (c) / (en) is larger than 1, we decide to put c into the chain (thus en+1 = c) otherwise we leave it to chance to decide whether or not c iis put into the chain.
    If chance decides the contrary,  then en is duclicated (thus en+1 = en).


MH is not the most efficient MCMC algorithm but it is efficient enough for what we want to achieve.
The main difficulty here is that there is no natural way to build the fitness function  f , mainly because the equivalent random variable I talked about is a purely abstract construction.

A preliminary observation is that if S(phi, beta, f) < 0 whatever phi in (phi_0, 0), then S has an odd number of extrema in (phi_0, 0). The simplest way to find these extrema is to search for the zeros of the derivative S' of S with respect to phi, while discardinq those where the second derivative can reveal "false" extrema where both S'' of S is null (I emphasize this last point because I didn't account for it in attached file).
The algorithm designed in this file probably misses a few points for not checking if S''=0, but it is important to keep in mind that we don't want a complete identification of  Adm but just the capture of its boundary.
Unless we are extremely unlucky there is only a very small chance that omitting to check if S''=0 will deeply modify this boundary.


How to define function f  ?
What we want is that  f (c) / (en) represents the probability to decide wether c is an admissible point or not. In a Markov chain this  ratio represents how better or worse c is relatively to en, and this is essential for the chain to be a true Markov chain.
But as our aim is not to build a true Markov chain but simply a chain which looks like a Markov chain, we we can take some liberties and replace  f (c) / (en) by some function  g(c) which quantifies the propability for c to be an admissible couple. So we want that  g(c) = 1 if  S(phi, c) has exactly M=3 negative extrema and  g(c) < 1 if M <> 3.
The previous algorihm transforms into:

  1. Let us assume that the chain already contains elements e1, ..., en.
    Let  g  a function which the propability that element is admissible
  2. A potential new element c is randomly picked in some neighborhood or en.
  3. If the ratio g(c) is larger than 1, we decide to put c into the chain (thus en+1 = c) otherwise we leave it to chance to decide whether or not c iis put into the chain.
    If chance decides the contrary,  then en is duclicated (thus en+1 = en).

This algorithm can also be seen as a kind of genetic algorithm.

A possible choice is  g(c)= exp(-|3-M|).
In the attached file I use instead the expression g(c) = (M + 1) / 4 fo several reasons:

  • It is less sharp at M=3 and thus enables more often to put c into the chain, which increases its exploratory capabilities.
  • The case M > 3, which no preliminary investigation was able to uncover, is by construction eliminated in the procedure Extrema which use an early stopping strategy (if as soon as more than M=3 negative extrema are found the procedure stops).


The algorithm I designed basically relies upon two stages:

  1. The first one is aimed to construct a "long" Markov-like chain ("long" and not long because Markov chains are usually much longer than those I use).
    There are two goals here:
    1. Check if Adm is or not simply-connected or not (if it has holes or not).
    2. Find a first set of admissible points that can be used as starting points for subsequent chains.
       
  2. Run several independent Markov-like chains from a reduced set of admissible points.
    The way this reduced set is constructed depends on the goal to achieve:
    1. One may think of adding points among those already known in order to assess the connectivity of Adm,
    2. or refinining the boundary of Adm.

These two concurent objectives are mixed in an ad hoc way depending on the observation of the results already in hand.


We point here an important feature of MCMC methods: behind their apparent algorithmic simplicity, it is common that high-quality results can only be obtained efficiently at the cost of problem-dependent tuning.

A last word to say that after several trials and failures I found it simpler to reparameterize the problems in terms of (phi_0, f) instead of (beta, f).

Codes and results

Choice g(c) = (M + 1) / 4 
The code : Extrema_and_MCMC.mw

To access the full results I got load this m file (do not bother its extension, Mapleprimes doesn't enable uploading m files) MCMC_20231209_160249.mw (save it and change it's extension in to m instead mw)

EDITED: choice  g(c)= exp(-|3-M|)
Here are the files contzining the code and the results:
Extrema_and_MCMC_g2.mw
MCMC_20231211_084053.mw

To ease the comparison of the two sets of results I used the same random seeds inn both codes.
Comparing the results got around the first admissible point is straightforward.
It's more complex for @raj2018's solution because the first step of the algorithim (drawing of a sibgle chain of length 1000) finds six times more admissible point with g(c)= exp(-|3-M|) than with g(c) = (M + 1) / 4.                                 

 

A new “Sudoku Puzzle” document is now on Maple Learn! Sudoku is one of the world’s most popular puzzle games and it is now ready to play on our online platform. 

This document is a great example of how Maple scripts can be used to create complex and interactive content. Using Maple’s built-in DocumentTools:-Canvas package, anyone can build and share content in Maple Learn. If you are new to scripting, a great place to start is with one of the scripting templates, which are accessible through the Build Interactive Content help page. In fact, I built the Sudoku document script by starting from the “Clickable Plots” template.

A Sudoku puzzle is a special type of Latin Square. The concept of a Latin Square was introduced to the mathematical community by Leonard Euler in his 1782 paper, Recherches sur une nouvelle espèce de Quarrés, which translates to “Research on a new type of square”. A Latin Square is an n by n square array composed of n symbols, each repeated exactly once in every row and column. The Sudoku board is a Latin Square where n=9, the symbols are the digits from 1 to 9,  and there is an additional requirement that each 3 by 3 subgrid contains each digit exactly once. 

Mathematical research into Sudoku puzzles is still ongoing. While the theory about Latin Squares is extensive, the additional parameters and relative novelty of Sudoku means that there are still many open questions about the puzzle. For example, a 2023 paper from Peter Dukes and Kate Nimegeers examines Sudoku boards through the lenses of graph theory and linear algebra.

The modern game of Sudoku was created by a 74-year-old Indiana retiree named Howard Garnes in 1979 and published under the name “Number Place”. The game had gained popularity in Japan by the mid-1980s, where it was named “Sudoku,” an abbreviation of the phrase “Sūji wa dokushin ni kagiru,” which means “the numbers must be single”.

Today, Sudoku is a worldwide phenomenon. This number puzzle helps players practice using their logical reasoning, short-term memory, time management, and decision-making skills, all while having fun. Furthermore, research from the International Journal of Geriatric Psychiatry concluded that doing regular brain exercises, like solving a Sudoku, is correlated with better brain health for adults over 50 years old. Additionally, research published in the BMJ medical journal suggests that playing Sudoku can help your brain build and maintain cognition, meaning that mental decline due to degenerative conditions like Alzheimer’s would begin from a better initial state, and potentially delay severe symptoms. However, playing Sudoku will by no means cure or prevent such conditions.

If you are unfamiliar with the game of Sudoku, need a refresher on the rules, or want to improve your approach, the “Sudoku Rules and Strategies” document is the perfect place to start. This document will teach you essential strategies like Cross Hatching:

And Hidden Pairs:

After reading through this document, you will have all the tools you need to start solving puzzles with the “Sudoku Puzzle” document on Maple Learn. 

Have fun solving!

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: NoRandomVectorsInMaple.mw

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

MVNormal
  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 
  post):
      PDF
      Mode
      Mean
      Variance
      StandardDeviation = add(s[k]*x[k], k=1..K)
      RandomSample

DispersionEllipse
  Builds and draws the dispersion ellipses of a bivariate gaussia, random vector

DispersionEllipsoid
  Builds and draws the dispersion ellipsoids of a trivariate gaussia, random vector

MVstat
  Computes several statistics of a random vector (Mean, Variance, ...)

Iserlis
  Computes the moments of any order of a gaussian random vector

MVCentralMoment
  Computes the central moments of a gaussian random vector

Conditional
  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.

MarginalizeAgainst
  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.

MardiaNormalityTest
  The multi-dimensional analogue of the Shapiro-Wilks normality test

HZNormalityTest
  Henze-Zirkler test for Multivariate Normality

MVWaldWolfowitzTest
  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.

MultivariateNormal.mw

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

restart
with(Statistics):
X := RandomVariable(Normal(a, b)):
attributes(X);
      protected, RandomVariable, _ProbabilityDistribution

map(e -> printf("%a\n", e), [exports(attributes(X)[3])]):
Conditions
ParentName
Parameters
CharacteristicFunction
CDF
CGF
HodgesLehmann
Mean
Median
MGF
Mode
PDF
RousseeuwCrouxSn
StandardDeviation
Support
Variance
CDFNumeric
QuantileNumeric
RandomSample
RandomSampleSetup
RandomVariate
MaximumLikelihoodEstimate

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

 

 

primes-flow-evaluation-modes.flow

 

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!

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.

To build the model, MapleSim needs additional components.

For example, an equilateral triangle

requires the addition of rigid body frames at the connection of two rods.

Additionally, the rigid body frames must have initial position conditions (ICs) that match the intended structure.

Interestingly the ICs do not have to be set to Treat as Guess. It is only required to put an approximate coordinate. Leaving the ICs on Ignore was sufficient for the attached model.

Rod components can be replaced by Flexible Beam components which require considerably more simulation time and either Revolute joints at their ends or a rather complex connection with Rigid Body frames (of zero length) to adjacent Flexible Beam components.

 

Spaceframe_2.msim

 

 

Almost 300 years ago, a single letter exchanged between two brilliant minds gave rise to one of the most enduring mysteries in the world of number theory. 

In 1742, Christian Goldbach penned a letter to fellow mathematician Leonhard Euler proposing that every even integer greater than 2 can be written as a sum of two prime numbers. This statement is now known as Goldbach’s Conjecture (it is considered a conjecture, and not a theorem because it is unproven). While neither of these esteemed mathematicians could furnish a formal proof, they shared a conviction that this conjecture held the promise of being a "completely certain theorem." The following image demonstrates how prime numbers add to all even numbers up to 50:

From its inception, Goldbach's Conjecture has enticed generations of mathematicians to seek evidence of its legitimacy. Though weaker versions of the conjecture have been proved, the definitive proof of the original conjecture has remained elusive. There was even once a one-million dollar cash prize set to be awarded to anyone who could provide a valid proof, though the offer has now elapsed. While a heuristic argument, which relies on the probability distribution of prime numbers, offers insight into the conjecture's likelihood of validity, it falls short of providing an ironclad guarantee of its truth.

The advent of modern computing has emerged as a beacon of progress. With vast computational power at their disposal, contemporary mathematicians like Dr. Tomàs Oliveira e Silva have achieved a remarkable feat—verification of the conjecture for every even number up to an astonishing 4 quintillion, a number with 18 zeroes.

Lazar Paroski’s Goldbach Conjecture Document on Maple Learn offers an avenue for users of all skill levels to delve into one of the oldest open problems in the world of math. By simply opening this document and inputting an even number, a Maple algorithm will swiftly reveal Goldbach’s partition (the pair of primes that add to your number), or if you’re lucky it could reveal that you have found a number that disproves the conjecture once and for all.

# ----------------------------------THE DESIGN OF THE MAPLET SCREEN---------------------
with(Maplets[Elements]):
HCC:=Maplet(Window('title'="HEAT CONDUCTIVITY CONTROL",["WITH THIS APPLICATION THE CONDUCTIVITY COEFFICIENT OF A ONE-DIMENSIONAL OBJECT, APPROXIMATING THE TEMPRATURE OF THE OBJECT TO A TARGET TEMPRETURE AT A CERTAIN FINAL TIME, IS CONTROLLED. ",[["l",TextField[l](3)],["T",TextField[T](3)],["f(x,t)",TextField[f](15)],["phi(x)",TextField[ph](5)]],[["k(0)",TextField[k0](3)],["g0(t)",TextField[g0](10)],["k(l)",TextField[kl](3)],["g1(t)",TextField[g1](10)],["mu(x)",TextField[mu](10)]],[["alpha",TextField[alpha](3)],["kaplus(x)",TextField[kaplus](5)],["N",TextField[N](3)],["kstart(x)",TextField[kstart](3)],["beta",TextField[beta](3)],["eps",TextField[eps](3)]] ,[Button("Calculate the Control",Evaluate('kutu'=ms(N,l,alpha,T,ph,f,g0,g1,mu,kaplus,k0,kl,kstart,beta,eps))),[TextBox['kutu'](30..30)],Button("Draw the Control",Evaluate('Draw'='plot(kutu,x=0..l)')),Plotter['Draw'](),[[Button("Distance to
Target",Evaluate('kutu2'=ms8(N,l,alpha,T,ph,f,g0,g1,mu,kaplus,k0,kl,kstart,beta,eps))),TextField['kutu2'](12)],[Button("Approximation to kaplus",Evaluate('kutu3'='evalf(int((kutu-kaplus)^2,x=0..l))')),TextField['kutu3'](12)]]],Button("Shutdown",Shutdown())])):
# -------------------------PROCEDURE FOR CALCULATION OF THE CONTROL FUNCTION-----------
with(inttrans):
with(linalg):
ms:=proc(N,l,alpha,T,ph,f,g0,g1,mu,kaplus,k0,kl,kstart,beta,eps):
with(inttrans):
with(linalg):
w:=simplify(x^2/2*g1/(l*kl)+(x^2/2-x*l)*g0/(l*k0)):
phdal:=ph-subs(t=0,w):
fdal:=simplify(f-diff(w,t)+diff(kaplus*diff(w,x),x)):
# ---------------------------------Solution of the Heat Problem------------------------------------
dp:=proc(ka)
with(inttrans):
with(linalg):
phi:=Vector(1..N):
phi[1]:=1/sqrt(l):
for i from 2 to N do
phi[i]:=evalf(sqrt(2/l)*cos((i-1)*Pi*x/l)):
od:
K:=Array(1..N,1..N):
for j from 1 to N do
for k from 1 to N do
K[j,k]:=evalf(-int(ka*diff(phi[k],x$2)*phi[j],x=0..l)):
od:
od:
F:=Vector(1..N):
for n from 1 to N do
F[n]:=evalf(int(fdal*phi[n],x=0..l)):
od:
A:=Vector(1..N):
for m from 1 to N do
A[m]:=evalf(int(phdal*phi[m],x=0..l)):
od:
KL:=Matrix(1..N,1..N):
for j1 from 1 to N do
for k1 from 1 to N do
if (j1=k1) then KL[j1,k1]:=s+K[j1,k1] else KL[j1,k1]:=K[j1,k1] fi:
od:
od:
FL:=Vector(1..N):
for i1 from 1 to N do
FL[i1]:=evalf(laplace(F[i1],t,s));
od:
S:=Vector(1..N):
for i2 from 1 to N do
S[i2]:=(A[i2]+FL[i2]);
od:
C:=Vector(1..N):
C:=evalm(inverse(KL)&*S):
c:=Vector(1..N):
for i3 from 1 to N do
c[i3]:=evalf(invlaplace(C[i3],s,t)):
od:
v:=evalf(add(c[n1]*phi[n1],n1=1..N)):
uyak:=v+w;
end:
# ---------------------------------Solution of the Adjoint Problem------------------------------------
ap:=proc(ka)
with(inttrans):
with(linalg):
utau:=evalf(subs(t=T-tau,dp(ka))):
phe:=evalf(2*(subs(tau=0,utau)-mu));
phie:=Vector(1..N):
phie[1]:=1/sqrt(l):
for i4 from 2 to N do
phie[i4]:=evalf(sqrt(2/l)*cos((i4-1)*Pi*x/l)):
od:
Kc:=Array(1..N,1..N):
for j2 from 1 to N do
for k2 from 1 to N do
Kc[j2,k2]:=evalf(-int(ka*diff(phie[k2],x$2)*phie[j2],x=0..l)):
od:
od:
Fc:=Vector(1..N):
for m1 from 1 to N do
Fc[m1]:=0:
od:
Ac:=Vector(1..N):
for cm1 from 1 to N do
Ac[cm1]:=evalf(int(phe*phie[cm1],x=0..l)):
od:
KLC:=Matrix(1..N,1..N):
for cj1 from 1 to N do
for ck1 from 1 to N do
if (cj1=ck1) then KLC[cj1,ck1]:=s+Kc[cj1,ck1] else KLC[cj1,ck1]:=Kc[cj1,ck1] fi:
od:
od:
FLC:=Vector(1..N):
for ci1 from 1 to N do
FLC[ci1]:=evalf(laplace(Fc[ci1],tau,s));
od:
Sc:=Vector(1..N):
for ci2 from 1 to N do
Sc[ci2]:=(Ac[ci2]+FLC[ci2]);
od:
CC:=Vector(1..N):
CC:=evalm(inverse(KLC)&*Sc):
cc:=Vector(1..N):
for ci3 from 1 to N do
cc[ci3]:=evalf((invlaplace(CC[ci3],s,tau))):
od:
ve:=evalf(add(cc[cn]*phie[cn],cn=1..N)):
eta:=evalf(subs(tau=T-t,ve));
end:
# ---------------------------------Calculation of the Gradient----------------------------------
T�rev:=proc(alpha,ka)
T�re:=simplify(evalf(-int(diff(dp(ka),x)*diff(ap(ka),x),t=0..T)+2*alpha*(ka-kaplus)));
end:
# ----------------------------Calculation of the Cost Functional--------------------------------
Jka:=proc(ka)
IJ1:=evalf(int((subs(t=T,dp(ka))-mu)^2,x=0..l));
end:
Sta:=proc(ka)
IJ2:=simplify(evalf((int((ka-kaplus)^2,x=0..l))));
end:
II:=proc(ka)
IJ:=simplify(evalf(Jka(ka)+alpha*Sta(ka))):
end:# 
# -----------------------------------Minimizing Process--------------------------------------------
a[0]:=kstart:
ka[0]:=kstart:
say�:=0:
for im from 0 to 60 do
a[im+1]:=simplify(evalf(ka[im-say�]-beta*T�rev(alpha,ka[im-say�]))): 
fark:=evalf(II(ka[im-say�])-II(a[im+1])): 
if(fark>0 and fark<eps) then break elif (fark>0) then 
j:=im+1: ka[j-say�]:=a[im+1]:   elif(fark<=0) then  say�:=say�+1: beta:=beta/(1.2): ka[im-say�+2]:=ka[im-say�+1]:   else fi:
od:
optcont:=a[im+1]:
end:
# -------------------------END OF THE PROCEDURE FOR CALCULATION OF THE CONTROL FUNCTION-----------
# ------PROCEDURE FOR CALCULATION OF THE DISTANCE TO THE TARGET FUNCTION-----------
ms8:=proc(N,l,alpha,T,ph,f,g0,g1,mu,kaplus,k0,kl,kstart,beta,eps):
with(inttrans):
with(linalg):
w8:=simplify(x^2/2*g1/(l*kl)+(x^2/2-x*l)*g0/(l*k0)):
phdal8:=ph-subs(t=0,w8):
fdal8:=simplify(f-diff(w8,t)+diff(kaplus*diff(w8,x),x)):
phi8:=Vector(1..N):
phi8[1]:=1/sqrt(l):
for i8 from 2 to N do
phi8[i8]:=evalf(sqrt(2/l)*cos((i8-1)*Pi*x/l)):
od:
K8:=Array(1..N,1..N):
for j8 from 1 to N do
for k8 from 1 to N do
K8[j8,k8]:=evalf(-int(ms(N,l,alpha,T,ph,f,g0,g1,mu,kaplus,k0,kl,kstart,beta,eps)*diff(phi8[k8],x$2)*phi8[j8],x=0..l)):
od:
od:
F8:=Vector(1..N):
for m28 from 1 to N do
F8[m28]:=evalf(int(fdal8*phi8[m28],x=0..l)):
od:
A8:=Vector(1..N):
for m8 from 1 to N do
A8[m8]:=evalf(int(phdal8*phi8[m8],x=0..l)):
od:
KL8:=Matrix(1..N,1..N):
for j18 from 1 to N do
for k18 from 1 to N do
if (j18=k18) then KL8[j18,k18]:=s+K8[j18,k18] else KL8[j18,k18]:=K8[j18,k18] fi:
od:
od:
FL8:=Vector(1..N):
for i148 from 1 to N do
FL8[i148]:=evalf(laplace(F8[i148],t,s));
od:
S8:=Vector(1..N):
for i48 from 1 to N do
S8[i48]:=(A8[i48]+FL8[i48]);
od:
C8:=Vector(1..N):
C8:=evalm(inverse(KL8)&*S8):
c8:=Vector(1..N):
for i58 from 1 to N do
c8[i58]:=evalf(invlaplace(C8[i58],s,t)):
od:
v8:=evalf(add(c8[n8]*phi8[n8],n8=1..N)):
uyak8:=v8+w8;
IJ18:=evalf(int((subs(t=T,uyak8)-mu)^2,x=0..l));
end:
# ------END OF THE PROCEDURE FOR CALCULATION OF THE DISTANCE TO THE TARGET FUNCTION-----------
Maplets[Display](HCC):


 

Here's a few commands you can use within Maple to collect information about your computer.  This is on a Windows 7 machine but should work for most Win7+ systems.  Not sure how far back the WMIC commands can be used, and it won't work on Mac or Linux. 

kernelopts(version)

`Maple 2022.0, X86 64 WINDOWS, Mar 8 2022, Build ID 1599809`

(1)

interface(version)

`Standard Worksheet Interface, Maple 2022.0, Windows 7, March 8 2022 Build ID 1599809`

(2)

ssystem("WMIC CPU Get Name, NumberOfCores, NumberOfLogicalProcessors")[2]

"Name                                             NumberOfCores  NumberOfLogicalProcessors  

Intel(R) Core(TM)2 Duo CPU     P8700  @ 2.53GHz  2              2                          


"

(3)

ssystem("WMIC computersystem get totalphysicalmemory")[2]

"TotalPhysicalMemory  

8517836800           


"

(4)

ssystem("WMIC memorychip get devicelocator, capacity, speed")[2]

"Capacity    DeviceLocator  Speed  

4294967296  DIMM 0         800    

4294967296  DIMM 1         800    


"

(5)

````

Download Maple_-_computer-info.mw

This post is in response to a question regarding the speed of Maple 2023 on different computers. 

I'm asking users to suggest a few benchmark problems for Maple to calculate for testing.  Basic system information (Processor speed, RAM, video card etc..) perform the calculation, get the timing and then we can collect all the information into a chart where we can update it in the original post of this thread. 

All input is welcome, it doesn't have to be confined to Maple 2023.  We can expand to as many older versions as we wish. 

we have recieved lots of great sumissions, but we want your great submission and now you have more time.

 

The deadline for submissions to the Art Gallery and Showcase for the 2023 Maple Conference is rapidly approaching. We really want to see your art! It doesn't have to be incredibly impressive or sophisticated, we just want to see what our community can create! If you've been working on something or have a great idea, you still have a few days to get it together to submit.

A penrose tiling mosaic of that famous Windows 95 background

Submission can be made by email to gallery@maplesoft.com but be sure to visit the visit our Call for Creative Works for details on the format of the submission.

 

The Proceedings of the Maple Conference 2022 are up at mapletransactions.org and I hope that you will find the articles interesting.  There is a brief memorial to Eugenio Roanes-Lozano, whom some of you will remember from past meetings. 

The cover image was the "People's Choice" from the Art Gallery, by Paul DeMarco.

This provides a nice excuse to remind you to register at the conference page for the Maple Conference 2023 and in particular to remind you to submit your entries for the Art Gallery.  See you there!  The conference will take place October 26 and 27, and features plenary talks by our own Laurent Bernardin and by Tom Crawford (Oxford, but more widely known as "The Naked Mathematician" for his incredibly popular YouTube videos on mathematical topics). See Tom Rocks Maths for more (or less :)

The deadline for submission to the Proceedings (which will again be published in Maple Transactions) will be Nov 27, one month after the conference ends.  We have put new processes in place to ensure a more timely publication schedule, and we anticipate that the Proceedings will be published in early Spring 2024.

 

Advanced Engineering Mathematics with Maple (AEM) by Dr. Lopez is such an art.

Mathematics and Control Theory talks easily in Maple...

Thanks Prof. Lopez. You are the MAN !!

Dr. Ali GÜZEL

The concept of “Maple Learn art” debuted on the MaplePrimes blog in December 2021.  Since then, we’ve come a long way with new Maple Learn features and ever-growing creative minds.  Creating art using mathematical expressions and shapes is a great way to hone both your mathematical skills and your creativity, and is the perfect break from a bout of studying or the like.

I started my own Maple Learn art journey over one year ago.  Let’s see how one’s art can improve over time using new and advanced features!

Art with Shapes, March 2022

This pi-themed pie is simple and cute, but could use some additional features:

Adding Shaded() around Maple Learn shape commands colors them in!

Fun fact: I hand-picked all of the coordinates for that pi symbol.  It was an arduous but rewarding process.  Nowadays, I recommend a new method.  When you create a table in Maple Learn with two number columns, the values are plotted as points.  These points can be clicked and dragged across the plot window, and the table updates automatically to display the new coordinates.  How can you use this to make art?

  1. Create a table as described above.
  2. Move the points with your mouse to create an outline of the desired shape.
  3. Use the coordinates from your table in your geometry command.

Let’s apply these techniques in a newer piece: a full recreation of the spaghetti emoji!

Art with Shapes, August 2023

Would you look at that?!  Fully-shaded colors, a background, and lines of spaghetti noodles that weren’t painstakingly guesstimated combine to create a wonderfully improved piece of art.

Art with Animation, March 2022

Visit the document to see its animation.  Animation is an invaluable feature in Maple Learn, frequently utilized to observe how changing variables affect functions or model a concept.  We’ve harnessed its power for animated artwork!  This animation is cute, using parametric functions and more to change the image as the animation variable changes.  Like the previous piece, it’s missing a background, and the leaves overlap the stem awkwardly in some places.

Art with Animation, August 2023

 

This piece has a simple background made with a large black square, but it enhances the overall effect.

The animation here comes from piecewise functions, which display different values based on a given criterion.  In this case, the criterion is the current value of the animation variable.

There are 32 individual polygons in this image (including 8 really tiny ones along the edges!) and 8 rainbow colors.  Each color is associated with a different piecewise function, and displays four random squares in that color in each frame of the animation.

This image isn’t that much more advanced than the animated flower, but I think the execution has vastly improved.

Whether you’ve been following these blog posts since December 2021 or are new to Maple Learn, we hope you give Maple Learn art a try.

And don’t forget that Maple is also a goldmine of artistic potential.  Maple’s bountiful collection of packages such as Fractals, ColorTools, plottools and more are great places to start for math that is as aesthetically pleasing as it is informative.

This week, our staff participated in a series of art challenges using either Maple Learn or Maple itself, each featuring a suggested theme and suggested mathematical content.  Check out the challenges and some of our employees’ entries below, and try out a challenge for yourself!

 

Tuesday’s Art Theme: Pasta

Mathematical Content: Shapes

Example: Lazar Paroski’s spiraling take on spaghetti

 

Wednesday’s Art Theme: Nature

Mathematical Content: Fractals

Example: John May’s Penrose tiling landscape (in Maple!)

 

Thursday’s Art Theme: Disco

Mathematical Content: Animation

Example: Paulina Chin’s disco ball (in Maple!)

 

Friday’s Art Theme: Space

Mathematical Content: Color

Example: that’s today!  Who knows what our staff will create…?

 

We hope these prompts have inspired you! If you create some art you’re really proud of, consider submitting it to be featured in the 2023 Maple Conference’s Creative Works Showcase.

5 6 7 8 9 10 11 Last Page 7 of 76