Items tagged with functions


Can Maple compute the weak derivative of piecewise function like

f:=x->piecewise(0<x and x<0.5,x,0.5<x and x<1,1-x,  elsewhere 0);

Many thanks


how to convert a^2*b+c to func2(func1(func1(abc[1],abc[1]),abc[2]),abc[3])

when i use custom function func2 to represent plus, func1 to represent multiply

input 3 parameters,

one is a^2*b + c one is [func1, func2] and second is [abc[1],abc[2],abc[3]] corresponding to a, b, c
a^2*b + c = func2(func1(func1(abc[1],abc[1]),abc[2]),abc[3]);

The material below was presented in the "Semantic Representation of Mathematical Knowledge Workshop", February 3-5, 2016 at the Fields Institute, University of Toronto. It shows the approach I used for “digitizing mathematical knowledge" regarding Differential Equations, Special Functions and Solutions to Einstein's equations. While for these areas using databases of information helps (for example textbooks frequently contain these sort of databases), these are areas that, at the same time, are very suitable for using algorithmic mathematical approaches, that result in much richer mathematics than what can be hard-coded into a database. The material also focuses on an interesting cherry-picked collection of Maple functionality, that I think is beautiful, not well know, and seldom focused inter-related as here.



Digitizing of special functions,

differential equations,

and solutions to Einstein’s equations

within a computer algebra system


Edgardo S. Cheb-Terrab

Physics, Differential Equations and Mathematical Functions, Maplesoft

Editor, Computer Physics Communications



Digitizing (old paradigm)



Big amounts of knowledge available to everybody in local machines or through the internet


Take advantage of basic computer functionality, like searching and editing



Digitizing (new paradigm)


By digitizing mathematical knowledge inside appropriate computational contexts that understand about the topics, one can use the digitized knowledge to automatically generate more and higher level knowledge




1) how to identify, test and organize the key blocks of information,


2) how to access it: the interface,


3) how to mathematically process it to automatically obtain more information on demand





                                           Three examples

Mathematical Functions


"Mathematical functions, are defined by algebraic expressions. So consider algebraic expressions in general ..."

The FunctionAdvisor (basic)


"Supporting information on definitions, identities, possible simplifications, integral forms, different types of series expansions, and mathematical properties in general"



General description





Differential equation representation for generic nonlinear algebraic expressions - their use


"Compute differential polynomial forms for arbitrary systems of non-polynomial equations ..."

The Differential Equations representing arbitrary algebraic expresssions


Deriving knowledge: ODE solving methods


Extending the mathematical language to include the inverse functions


Solving non-polynomial algebraic equations by solving polynomial differential equations





Branch Cuts of algebraic expressions


"Algebraically compute, and visualize, the branch cuts of arbitrary mathematical expressions"






Algebraic expresssions in terms of specified functions


"A conversion network for arbitrary mathematical expressions, to rewrite them in terms of different functions in flexible ways"



General description





Symbolic differentiation of algebraic expressions


"Perform symbolic differentiation by combining different algebraic techniques, including functions of symbolic sequences and Faà di Bruno's formula"






Ordinary Differential Equations


"Beyond the concept of a database, classify an arbitrary ODE and suggest solution methods for it"

General description







Exact Solutions to Einstein's equations



Lambda*g[mu, nu]+G[mu, nu] = 8*Pi*T[mu, nu]


"The authors of "Exact solutions toEinstein's equations" reviewed more than 4,000 papers containing solutions to Einstein’s equations in the general relativity literature, organized the whole material into chapters according to the physical properties of these solutions. These solutions are key in the area of general relativity, are now all digitized and become alive in a worksheet"

The ability to search the database according to the physical properties of the solutions, their classification, or just by parts of keywords (old paradigm) changes the game.

More important, within a computer algebra system this knowledge becomes alive (new paradigm).


The solutions are turned active by a simple call to one commend, called the g_  spacetime metric.


Everything else gets automatically derived and set on the fly ( Christoffel symbols  , Ricci  and Riemann  tensors orthonormal and null tetrads , etc.)


Almost all of the mathematical operations one can perform on these solutions are implemented as commands in the Physics  and DifferentialGeometry  packages.


All the mathematics within the Maple library are instantly ready to work with these solutions and derived mathematical objects.


Finally, in the Maple PDEtools package , we have all the mathematical tools to tackle the equivalence problem around these solutions.






Download:,    Digitizing_Mathematical_Information.pdf

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

This may be a silly question, but does there exist some simple way of (Taylor) expanding an expression of 'small' functions in terms of these functions.

A simple example: Assume that diff(f(x),x) and g(x) are two functions both with range, say, in [-a,+a], where a << 1, and consider the following expression:

sqrt(1 + diff(f(x),x)) * (2 + g(x));

Its expansion to first order in terms of diff(f(x),x) and g(x) should be 2 + diff(f(x),x) + g(x). My problem is that mtaylor does not accept functions as variables to expand on, and I would prefer not to have to substitute back and forth with some 'placeholders'.

Hi! I'm trying to find the way to plot the solution with series representation. I need some help to find the easiest way.

Note: I realized some typing errors, which do not change the question a lot ,and I corrected them.

Typically sets are created like:



and then you can carryout A union B or B\A


what if  you wanted to create the set as

A:={values in some three dimensional space};

B:={volume, based on values taken from A};

Can these relationships be set up in Maple? If so, how? If there are commands that specifically handle these types of sets, what does maple call them?  I've seen the term 'set function' but what might Maple call them?

Note: I am not even sure i 'tagged' this correctly because it I am not sure the proper terms for these functions/sets.

Thanks in advance for any help.

I am working in Document mode, 2D input.  I have doing some complex number evalutions

Lets say I have a complex number Z= 2+3i

when I ask maple for the "abs(Z)" I get the display of "abs(2+3i)" rather than the numberic answer. This occurs with all the complex operation arg, abs, polar conversion, 

polar(abs(2+3*i), argument(2+3*i))   this is from Maple. 

How do I display the numeric value for these functions in my document


Thanks Bill

I have entered three functions into Maple and I would like to create a set of all possible two-function and three-function compositions involving the three functions. For instance, for my three functions f(x), g(x) and h(x), the set would contain f(g(x)), g(f(x)), f(g(h(x))), f(f(f(x))), etc. 

I'm also looking for a method that will be generalisable to larger numbers of initial functions than just three.

i'm using maple in a research but i want to add a recursive function h_m(t) in 2 case : if m is integer positive and not, 
la formule est donnée comme suit :  if (mod(m,1) = 0  and m>0) then  h:=proc(m,t)  local  t ;  h[0,t]:=t ;   for  i from -4 to  m  by  2 do  h [m,t]:= h[0, t]-(GAMMA(i/(2)))/(2*GAMMA((i+1)/(2)))*cos(Pi*t)*sin(Pi*t)  od:  fi:  end; 
  if (mod(m,1) = 0  and m>0) then  h:=proc(m,t)  local  t ;  h[0,t]:=t ;   for  i from -4 to  m  by  2 do  h [m,t]:= h[0, t]-(GAMMA(i/(2)))/(2*GAMMA((i+1)/(2)))*cos(Pi*t)*sin(Pi*t)  od:  fi:  end;
and i wanna to know how to programmate a Gaus Hypegeometric function. Thank You


I am fairly new to Maple and cannot figure this out.

I'm having some trouble in computing formally the derivatives of
some composite functions

h:= x -> f(g(x)),

imposing conditions on the unknown functions f and g.

For example, I cannot find a way to impose g'(0)=0,
such that the computation of


simply gives 0.


Thank you in advance!

This is a stripped down example of something I've been doing. Basically I'm building matrices which I then, using unapply, convert into functions of some variables of t.
.... but found that simplify seems to often not work as i'd wish.

mm:=Matrix([[cos(sqrt(g__1^2)*t), (-I*g__1*sin(sqrt(g__1^2)*t))*(1/sqrt(g__1^2))], [(-I*g__1*sin(sqrt(g__1^2)*t))*(1/sqrt(g__1^2)) ,cos(sqrt(g__1^2)*t)]]);

#great - simplifies as i'd expect:
simplify(mm) assuming g__1::positive;

Do the same thing but when matrix is a function of t
mmFun:=unapply(mm, t);

#the function works - gives what i'd expect
mmFun(3); mmFun(t);

#but now the simplification does not work - why the g__1 in the argument of cos does not get properly simplified?
simplify(mmFun(t)) assuming g__1::positive;

Any ideas if this is a bug? I'm using maple 2015.2 on linux 64-bit.

here is the worksheet:



as a side note once can sometimes overcome this with mapping simplify  as in :

map(simplify, resultMatrix ) assuming g__1::positive;

but this is not optimal, and sometimes does not work when i first multiply the matrix by say a vector.





I would like to create a function from an equation.
I have define 4 functions u[1](t), ..., u[4](t).
From these 4 functions, I would like to define 4 equations. I would like to obtain this result:

My code is the following:

for i to 4
end do;

These lines are not working because the left member is not incremented (u[i](t) stays at each iteration u[i](t))

Generally, how can I transform a function to an equation ?
And, in this specific case, how can I obtain the four equations mentioned above ?

Thanks a lot for your help.


The year 2015 has been one with interesting and relevant developments in the MathematicalFunctions  and FunctionAdvisor projects.


Gaps were filled regarding mathematical formulas, with more identities for all of BesselI, BesselK, BesselY, ChebyshevT, ChebyshevU, Chi, Ci, FresnelC, FresnelS, GAMMA(z), HankelH1, HankelH2, InverseJacobiAM, the twelve InverseJacobiPQ for P, Q in [C,D,N,S], KelvinBei, KelvinBer, KelvinKei, KelvinKer, LerchPhi, arcsin, arcsinh, arctan, ln;


Developments happened in the Mathematical function package, to both compute with symbolic sequences and symbolic nth order derivatives of algebraic expressions and functions;


The input FunctionAdvisor(differentiate_rule, mathematical_function) now returns both the first derivative (old behavior) and the nth symbolic derivative (new behavior) of a mathematical function;


A new topic, plot, used as FunctionAdvisor(plot, mathematical_function), now returns 2D and 3D plots for each mathematical function, following the NIST Digital Library of Mathematical Functions;


The previously existing FunctionAdvisor(display, mathematical_function) got redesigned, so that it now displays more information about any mathematical function, and organized into a Section with subsections for each of the different topics, making it simpler to find the information one needs without getting distracted by a myriad of formulas that are not related to what one is looking for.

More mathematics


More mathematical knowledge is in place, more identities, differentiation rules of special functions with respect to their parameters, differentiation of functions whose arguments involve symbolic sequences with an indeterminate number of operands, and sum representations for special functions under different conditions on the functions' parameters.



More powerful symbolic differentiation (nth order derivative)


Significative developments happened in the computation of the nth order derivative of mathematical functions and algebraic expressions involving them.



Mathematical handling of symbolic sequences


Symbolic sequences enter various formulations in mathematics. Their computerized mathematical handling, however, was never implemented - only a representation for them existed in the Maple system. In connection with this, a new subpackage, Sequences , within the MathematicalFunctions package, has been developed.



Visualization of mathematical functions


When working with mathematical functions, it is frequently desired to have a rapid glimpse of the shape of the function for some sampled values of their parameters. Following the NIST Digital Library of Mathematical Functions, a new option, plot, has now been implemented.



Section and subsections displaying properties of mathematical functions


Until recently, the display of a whole set of mathematical information regarding a function was somehow cumbersome, appearing all together on the screen. That display was and is still available via entering, for instance for the sin function, FunctionAdvisor(sin) . That returns a table of information that can be used programmatically.

With time however, the FunctionAdvisor evolved into a consultation tool, where a better organization of the information being displayed is required, making it simpler to find the information we need without being distracted by a screen full of complicated formulas.

To address this requirement, the FunctionAdvisor now returns the information organized into a Section with subsections, built using the DocumentTools package. This enhances the presentation significantly.



These developments can be installed in Maple 2015 as usual, by downloading the updates (bundled with the Physics and Differential Equations updates) from the Maplesoft R&D webpage for Mathematical Functions and Differential Equations


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

I have functions like

g := (y, t)->sin(y(t))

diff(g(y, t), t) # ok

How to determine the derivative below with maple :

diff(g(y, t), y(t))


How plot two functions of two variables to (2-dimension)?

approximate := exp(-2*t)+x*exp(-2*t)+(1/2)*exp(-2*t)*x^2+(1/6)*exp(-2*t)*x^3+(1/24)*exp(-2*t)*x^4+(1/120)*exp(-2*t)*x^5+(1/720)*exp(-2*t)*x^6+(1/5040)*exp(-2*t)*x^7+(1/40320)*exp(-2*t)*x^8+(1/362880)*exp(-2*t)*x^9+(1/3628800)*exp(-2*t)*x^10+(1/39916800)*exp(-2*t)*x^11+(1/479001600)*exp(-2*t)*x^12+(1/6227020800)*exp(-2*t)*x^13+(1/87178291200)*exp(-2*t)*x^14+(1/1307674368000)*exp(-2*t)*x^15+(1/20922789888000)*exp(-2*t)*x^16+(1/355687428096000)*exp(-2*t)*x^17+(1/6402373705728000)*exp(-2*t)*x^18+(1/121645100408832000)*exp(-2*t)*x^19+(1/2432902008176640000)*exp(-2*t)*x^20+(1/51090942171709440000)*exp(-2*t)*x^21;
apr := unapply(approximate, x, t);
Exact := (x, t)-> exp(x-2*t) ;
plot3d(exp(x-2*t)-approximate, x = 0 .. 5, t = 0 .. 5);

1 2 3 4 5 6 7 Last Page 1 of 43