Applications, Examples and Libraries

Share your work here

    Intersection of surfaces:

x3-.25*(sin(4*x1)+sin(3*x2+x3)+sin(2*x2))=0;  (1)

(x1-xx1)^4+(x2-xx2)^4+(x3-xx3)^4-1=0;          (2)   

   Surface (1) and a set of surfaces (2). Point (xx1, xx2, xx3) belongs to (1). Moving along the surface (1), we compute its intersection with the surface (2).
   The program is very simple and its algorithm can be used for many other combinations of equations.

intersection_of_surfaces.mw  

There seems to be a bug in the CodeGeneration package for Python which leads to a deletion of braces in some cases.

# E.g.

CodeGeneration[Python](Pi*(a+2));

# leads to

cg5 = math.pi * a + 2

which is obviously wrong.

Hey Everyone:

I was wondering what are your favorite and most useful code snippets that you often use. Maybe ones that are in your initialization code? Maybe ones that speed up something that you often do in maple? Maybe ones that you've seen on this and other websites and adopted for your own purposes?

For fun, I attach my init.mpl (.txt here, as .mpl attachments are not allowed by mapleprimes) here init.txt


Some of the snippets that I use the most are also listed below:

#rearrange curves inside an already created plot, so that certain curves are "on top" of the other ones.
#discussed here:
#http://www.mapleprimes.com/questions/201626-Order-Of-Curves-In-A-Plot
rearrangeCurves:= proc(
     v_items::specfunc(anything, PLOT),
     v_reorder::list([integer,integer]):= []
)
local p, curves, rest;
     (curves,rest):= selectremove(type, v_items, specfunc(anything, CURVES));
     curves:= < op(curves) >:         
     for p in v_reorder do
          curves[p]:= curves[p[[2,1]]]
     end do;
     PLOT(convert(curves,list)[], op(rest))
end proc:


#for numerical differentiation
#based on the idea from:
#http://www.mapleprimes.com/posts/119554-Data-Interpolation
#example use:
#alist:=[seq(i, i=0..10, 0.1)]:
#data:=map(x->evalf(sin(x)), alist):
#plot(alist, data);
#plot([cos(x), 'num_diff(x, LinearAlgebra:-Transpose(Matrix([alist,data])))'], x=1..10, thickness=5, linestyle=[solid, dot], color=[blue, red]);
num_diff:=proc(x, v_data, v_options:=[method=spline, degree=3])
 #v_data is a matrix
 #TODO: let the data be in a more arbitrary format that ArrayInterpolation understands, but keep x as first var
 evalf(D[1](x->CurveFitting:-ArrayInterpolation(v_data, [x],v_options[])[])(x));
end:

#extract nth columns/rows from a matrix
#these only work if have a 2d object... should be updated to also work
#with 1d row/column vectors
#Example use cases
#A := LinearAlgebra:-RandomMatrix(20, 20, outputoptions = [datatype = float[8]]);
#nthColumns(A, 2); #Every other column
#nthRows(A, 10)[.., 1..3]; #Every 10th row, but show only first 3 columns
nthColumns:=proc(v_m, v_n)
  v_m[..,[seq(i, i=1..rtable_size(v_m)[2], v_n)]]
end:
nthRows:=proc(v_m, v_n)
  v_m[[seq(i, i=1..rtable_size(v_m)[1], v_n)],..]
end:


#saves a png plot
savePlot:=proc(v_p, v_fileName, v_w:="800", v_h:="500")
    plotsetup("png", plotoutput=v_fileName, plotoptions=cat("quality=100,portrait,noborder,width=",v_w,",height=",v_h));
    print(plots[display](v_p));
    Threads[Sleep](2):
    fclose(v_fileName):
    plotsetup(default);
end:

 

The well-known  combinat[composition]  command computes and returns a list containing all distinct ordered  k-tuples of positive integers whose elements sum equals  . These are known as the compositions of  n .  For some applications, additional constraints are required for the elements of these k-tuples, for example, that they are within a certain range.

The  Composition  procedure solves this problem. Required parameters:  n - a nonnegative integer, - a positive integer. The parameter  res  is the optional parameter (by default  res is  ). If  res  is a number, all elements of  k-tuples must be greater than or equal  res .  If  res  is a range  a .. b ,   all elements of  k-tuples must be greater than or equal  a  and  less than or equal  b .  Composition(n,k,1)  is equivalent to  combinat[composition](n,k) .

 

The code of the procedure:

Composition := proc (n::nonnegint, k::posint, res::{range, nonnegint} := 0)

local a, b, It, L0; 

if res::nonnegint then a := res; b := n-(k-1)*a  else a := lhs(res); b := rhs(res) fi;

if b < a or b*k < n then return `No solutions` fi; 

It := proc (L)

local m, j, P, R, i, N;

m := nops(L[1]); j := k-m; N := 0;

for i to nops(L) do

R := n-`+`(op(L[i]));

if R <= b*j and a*j <= R then N := N+1;

P[N] := [seq([op(L[i]), s], s = max(a, R-b*(j-1)) .. min(R, b))] fi;

od;

[seq(op(P[s]), s = 1 .. N)];

end proc;

L0 := [[]];

(It@@k)(L0); 

end proc:

 

Three simple examples:

Composition(10,3); ``;   # All terms greater than or equal 0

Composition(10,3, 2);   # All terms greater than or equal 2

Composition(10,3, 2..4);   # All terms greater than or equal 2 and less than or equal to 4 

 

 

A more complex example. The problem - to find all the numbers in the range  1 .. 99999999  whose digits sum is equal to 21 .

Each number is represented by a list of digits from left to right, replacing missing digits at the left with zeros.

M:=Composition(21,8, 0..9):  

nops(M);  # The number of solutions

[seq(M[1+100000*i], i=0..9)]; # 10 solutions from the list M starting the first one

seq(add(%[i,k]*10^(8-k), k=1..8),i=1..nops(%));  # Conversion into numbers

 

Composition.mws

Greetings to all.

I am writing to alert MaplePrimes users to a Maple package that makes an remarkable contribution to combinatorics and really ought to be part of your discrete math / symbolic combinatorics class if you teach one. The combstruct package was developed at INRIA in Paris, France, by the algorithmics research team of P. Flajolet during the mid 1990s. This software package features a parser for grammars involving combinatorial operators such as sequence, set or multiset and it can derive functional equations from the grammar as well as exponential and ordinary generating functions for labeled and unlabeled enumeration. Coefficients of these generating functions can be computed. All of it easy to use and very powerful. If you are doing research on some type of combinatorial structure definitely check with combstruct first.

My purpose in this message is to advise you of the existence of this package and encourage you to use it in your teaching and research. With this in mind I present five applications of the combstruct package. These are very basic efforts that admit improvement that can perhaps serve as an incentive to deploy combstruct nonetheless. Here they are:

I hope you enjoy reading these and perhaps you might want to feature combstruct as well, which presented the first complete implementation in a computer algebra system of the symbolic method, sometimes called the folklore theorem of combinatorial enumeration, when it initially appeared.

Best regards,

Marko Riedel.

We are happy to announce the first results of a partnership between Maplesoft and the University of Waterloo to provide effective, engaging online education for technical courses.

Combining rich course materials developed by the University with Maple T.A. and Maplesoft technology for developing, managing, and displaying dynamic content, the Secondary School Courseware project supports high school students and teachers from around the world in their Precalculus and Calculus courses. The site includes interactive investigations, videos, and self-assessment questions that provide immediate feedback.

Feel free to take a look. The site is free, and no login is required.  

For more information about the project, see Online Mathematical Courseware.

eithne

D_Method.mw

The classical Draghilev’s method.  Example of solving the system of two transcendental equations. For a single the initial approximation are searched 9 approximate solutions of the system.
(4*(x1^2+x2-11))*x1+2*x1+2*x2^2-14+cos(x1)=0;
2*x1^2+2*x2-22+(4*(x1+x2^2-7))*x2-sin(x2)=0; 
x01 := -1.; x02 := 1.;


Equation: ((x1+.25)^2+(x2-.2)^2-1)^2+(x3-.1)^2-.999=0;



a_cam_3D.mw


Cam mechanism animation.   Equation:  (xx2-1.24)^10+5*(xx1-.66)^10-9.=0
a_cam.mw



Transformation and
rotation.

transformation.mw


The William Lowell Putnam Mathematical Competition, often abbreviated to the Putnam Competition, is an annual mathematics competition for undergraduate college students enrolled at institutions of higher learning in the world (regardless of the students' nationalities). One can see some problems and answers here. I find it remarkable that a lot of these problems can be done with Maple. Here is a sample (The DirectSearch package should be downloaded from http://www.maplesoft.com/applications/view.aspx?SID=101333 and installed in your Maple.).

 

rsolve({a(k)=a(k-1)^2-2,a(0)=5/2},a)#2014,A-3

NULL

rs := unapply(rsolve({a(0) = 5/2, a(k) = a(k-1)^2-2}, a), k)

proc (k) options operator, arrow; 2*cosh(arccosh(5/4)*2^k) end proc

(1)

(2)

evalf(product(1-1/rs(k), k = 0 .. infinity))

.4285714286

(3)

identify(%)

3/7

(4)

sol := solve({1/x-1/(2*y) = 2*(-x^4+y^4), 1/x+1/(2*y) = (x^2+3*y^2)*(3*x^2+y^2)}, explicit)

sol[1]; evalf(sol)

{x = 1.122865470, y = .1228654698}, {x = -0.39087502e-2+.3661111372*I, y = -1.003908750+.3661111372*I}, {x = .6924760152-.5923802638*I, y = -.3075239848-.5923802638*I}, {x = .6924760152+.5923802638*I, y = -.3075239848+.5923802638*I}, {x = -0.39087502e-2-.3661111372*I, y = -1.003908750-.3661111372*I}, {x = .3469845126+.1168520057*I, y = 0.3796751170e-1+1.067908527*I}, {x = .7773739670+.4755282581*I, y = .4683569607-.4755282736*I}, {x = .2183569726+.2938926261*I, y = 1.027373941-.2938926802*I}, {x = .3469845126+1.067908522*I, y = 0.3796751830e-1+.1168520056*I}, {x = -.2120324818+.8862728900*I, y = .5969845187+.2984876419*I}, {x = -.3494002531+.8416393955*I, y = -.6584172547-.1094171332*I}, {x = -.2120324818+.2984876377*I, y = .5969845144+.8862728969*I}, {x = -.9084172475+.6600037635*I, y = -0.9940025307e-1+0.7221851120e-1*I}, {x = -.3494002531+.1094171208*I, y = -.6584172336-.8416394020*I}, {x = -.9084172475+0.7221851117e-1*I, y = -0.9940025050e-1+.6600037719*I}, {x = -.9084172475-0.7221851117e-1*I, y = -0.9940025050e-1-.6600037719*I}, {x = -.3494002531-.1094171208*I, y = -.6584172336+.8416394020*I}, {x = -.9084172475-.6600037635*I, y = -0.9940025307e-1-0.7221851120e-1*I}, {x = -.2120324818-.2984876377*I, y = .5969845144-.8862728969*I}, {x = -.3494002531-.8416393955*I, y = -.6584172547+.1094171332*I}, {x = -.2120324818-.8862728900*I, y = .5969845187-.2984876419*I}, {x = .3469845126-1.067908522*I, y = 0.3796751830e-1-.1168520056*I}, {x = .2183569726-.2938926261*I, y = 1.027373941+.2938926802*I}, {x = .7773739670-.4755282581*I, y = .4683569607+.4755282736*I}, {x = .3469845126-.1168520057*I, y = 0.3796751170e-1-1.067908527*I}

(5)

plots:-implicitplot([1/x+1/(2*y) = (x^2+3*y^2)*(3*x^2+y^2), 1/x-1/(2*y) = 2*(-x^4+y^4)], x = 0 .. 2, y = 0 .. 1, color = [red, blue], gridrefine = 4)

 

"http://kskedlaya.org/putnam-archive/  and https://en.wikipedia.org/wiki/William_Lowell_Putnam_Mathematical_Competition"

Re(convert(int(ln(x+1)/(x^2+1), x = 0 .. 1), polylog))

(1/8)*Pi*ln(2)

(6)

Im(convert(int(ln(x+1)/(x^2+1), x = 0 .. 1), polylog))

0

(7)

NULL

DirectSearch:-GlobalOptima(int(sqrt(x^4+(-y^2+y)^2), x = 0 .. y), {y = 0 .. 1}, maximize)

[.333333333333333, [y = HFloat(0.9999999999999992)], 96]

(8)

rsolve({T(0) = 2, T(1) = 3, T(2) = 6, T(n) = (n+4)*T(n-1)-4*n*T(n-2)+(4*n-8)*T(n-3)}, T)

GAMMA(n+1)+2^n

(9)

floor(10^20000/(10^100+3))

9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999997000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000899999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999975700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007289999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999997813000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000656099999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999803170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059048999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999982285300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005314409999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999998405677000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000478296899999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999856510930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043046720999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999987085983700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003874204889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999998837738533000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000348678440099999999999999999999999999999999999999999999999999999999999999999999999999999999999999999895396467970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031381059608999999999999999999999999999999999999999999999999999999999999999999999999999999999999999990585682117300000000000000000000000000000000000000000000000000000000000000000000000000000000000000002824295364809999999999999999999999999999999999999999999999999999999999999999999999999999999999999999152711390557000000000000000000000000000000000000000000000000000000000000000000000000000000000000000254186582832899999999999999999999999999999999999999999999999999999999999999999999999999999999999999923744025150130000000000000000000000000000000000000000000000000000000000000000000000000000000000000022876792454960999999999999999999999999999999999999999999999999999999999999999999999999999999999999993136962263511700000000000000000000000000000000000000000000000000000000000000000000000000000000000002058911320946489999999999999999999999999999999999999999999999999999999999999999999999999999999999999382326603716053000000000000000000000000000000000000000000000000000000000000000000000000000000000000185302018885184099999999999999999999999999999999999999999999999999999999999999999999999999999999999944409394334444770000000000000000000000000000000000000000000000000000000000000000000000000000000000016677181699666568999999999999999999999999999999999999999999999999999999999999999999999999999999999994996845490100029300000000000000000000000000000000000000000000000000000000000000000000000000000000001500946352969991209999999999999999999999999999999999999999999999999999999999999999999999999999999999549716094109002637000000000000000000000000000000000000000000000000000000000000000000000000000000000135085171767299208899999999999999999999999999999999999999999999999999999999999999999999999999999999959474448469810237330000000000000000000000000000000000000000000000000000000000000000000000000000000012157665459056928800999999999999999999999999999999999999999999999999999999999999999999999999999999996352700362282921359700000000000000000000000000000000000000000000000000000000000000000000000000000001094189891315123592089999999999999999999999999999999999999999999999999999999999999999999999999999999671743032605462922373000000000000000000000000000000000000000000000000000000000000000000000000000000098477090218361123288099999999999999999999999999999999999999999999999999999999999999999999999999999970456872934491663013570000000000000000000000000000000000000000000000000000000000000000000000000000008862938119652501095928999999999999999999999999999999999999999999999999999999999999999999999999999997341118564104249671221300000000000000000000000000000000000000000000000000000000000000000000000000000797664430768725098633609999999999999999999999999999999999999999999999999999999999999999999999999999760700670769382470409917000000000000000000000000000000000000000000000000000000000000000000000000000071789798769185258877024899999999999999999999999999999999999999999999999999999999999999999999999999978463060369244422336892530000000000000000000000000000000000000000000000000000000000000000000000000006461081889226673298932240999999999999999999999999999999999999999999999999999999999999999999999999998061675433231998010320327700000000000000000000000000000000000000000000000000000000000000000000000000581497370030400596903901689999999999999999999999999999999999999999999999999999999999999999999999999825550788990879820928829493000000000000000000000000000000000000000000000000000000000000000000000000052334763302736053721351152099999999999999999999999999999999999999999999999999999999999999999999999984299571009179183883594654370000000000000000000000000000000000000000000000000000000000000000000000004710128697246244834921603688999999999999999999999999999999999999999999999999999999999999999999999998586961390826126549523518893300000000000000000000000000000000000000000000000000000000000000000000000423911582752162035142944332009999999999999999999999999999999999999999999999999999999999999999999999872826525174351389457116700397000000000000000000000000000000000000000000000000000000000000000000000038152042447694583162864989880899999999999999999999999999999999999999999999999999999999999999999999988554387265691625051140503035730000000000000000000000000000000000000000000000000000000000000000000003433683820292512484657849089280999999999999999999999999999999999999999999999999999999999999999999998969894853912246254602645273215700000000000000000000000000000000000000000000000000000000000000000000309031543826326123619206418035289999999999999999999999999999999999999999999999999999999999999999999907290536852102162914238074589413000000000000000000000000000000000000000000000000000000000000000000027812838944369351125728577623176099999999999999999999999999999999999999999999999999999999999999999991656148316689194662281426713047170000000000000000000000000000000000000000000000000000000000000000002503155504993241601315571986085848999999999999999999999999999999999999999999999999999999999999999999249053348502027519605328404174245300000000000000000000000000000000000000000000000000000000000000000225283995449391744118401478747726409999999999999999999999999999999999999999999999999999999999999999932414801365182476764479556375682077000000000000000000000000000000000000000000000000000000000000000020275559590445256970656133087295376899999999999999999999999999999999999999999999999999999999999999993917332122866422908803160073811386930000000000000000000000000000000000000000000000000000000000000001824800363140073127359051977856583920999999999999999999999999999999999999999999999999999999999999999452559891057978061792284406643024823700000000000000000000000000000000000000000000000000000000000000164232032682606581462314678007092552889999999999999999999999999999999999999999999999999999999999999950730390195218025561305596597872234133000000000000000000000000000000000000000000000000000000000000014780882941434592331608321020638329760099999999999999999999999999999999999999999999999999999999999995565735117569622300517503693808501071970000000000000000000000000000000000000000000000000000000000001330279464729113309844748891857449678408999999999999999999999999999999999999999999999999999999999999600916160581266007046575332442765096477300000000000000000000000000000000000000000000000000000000000119725151825620197886027400267170471056809999999999999999999999999999999999999999999999999999999999964082454452313940634191779919848858682957000000000000000000000000000000000000000000000000000000000010775263664305817809742466024045342395112899999999999999999999999999999999999999999999999999999999996767420900708254657077260192786397281466130000000000000000000000000000000000000000000000000000000000969773729787523602876821942164080815560160999999999999999999999999999999999999999999999999999999999709067881063742919136953417350775755331951700000000000000000000000000000000000000000000000000000000087279635680877124258913974794767273400414489999999999999999999999999999999999999999999999999999999973816109295736862722325807561569817979875653000000000000000000000000000000000000000000000000000000007855167211278941183302257731529054606037304099999999999999999999999999999999999999999999999999999997643449836616317645009322680541283618188808770000000000000000000000000000000000000000000000000000000706965049015104706497203195837614914543357368999999999999999999999999999999999999999999999999999999787910485295468588050839041248715525636992789300000000000000000000000000000000000000000000000000000063626854411359423584748287625385342308902163209999999999999999999999999999999999999999999999999999980911943676592172924575513712384397307329351037000000000000000000000000000000000000000000000000000005726416897022348122627345886284680807801194688899999999999999999999999999999999999999999999999999998282074930893295563211796234114595757659641593330000000000000000000000000000000000000000000000000000515377520732011331036461129765621272702107522000999999999999999999999999999999999999999999999999999845386743780396600689061661070313618189367743399700000000000000000000000000000000000000000000000000046383976865881019793281501678905914543189676980089999999999999999999999999999999999999999999999999986084806940235694062015549496328225637043096905973000000000000000000000000000000000000000000000000004174557917929291781395335151101532308887070928208099999999999999999999999999999999999999999999999998747632624621212465581399454669540307333878721537570000000000000000000000000000000000000000000000000375710212613636260325580163599137907799836383538728999999999999999999999999999999999999999999999999887286936215909121902325950920258627660049084938381300000000000000000000000000000000000000000000000033813919135227263429302214723922411701985274518485609999999999999999999999999999999999999999999999989855824259431820971209335582823276489404417644454317000000000000000000000000000000000000000000000003043252722170453708637199325153017053178674706663704899999999999999999999999999999999999999999999999087024183348863887408840202454094884046397588000888530000000000000000000000000000000000000000000000273892744995340833777347939263771534786080723599733440999999999999999999999999999999999999999999999917832176501397749866795618220868539564175782920079967700000000000000000000000000000000000000000000024650347049580675039961314533739438130747265123976009689999999999999999999999999999999999999999999992604895885125797488011605639878168560775820462807197093000000000000000000000000000000000000000000002218531234462260753596518308036549431767253861157840872099999999999999999999999999999999999999999999334440629661321773921044507589035170469823841652647738370000000000000000000000000000000000000000000199667811101603467823686647723289448859052847504205678488999999999999999999999999999999999999999999940099656669518959652894005683013165342284145748738296453300000000000000000000000000000000000000000017970102999144312104131798295096050397314756275378511064009999999999999999999999999999999999999999994608969100256706368760460511471184880805573117386446680797000000000000000000000000000000000000000001617309269922988089371861846558644535758328064784065995760899999999999999999999999999999999999999999514807219023103573188441446032406639272501580564780201271730000000000000000000000000000000000000000145557834293068928043467566190278008218249525830565939618480999999999999999999999999999999999999999956332649712079321586959730142916597534525142250830218114455700000000000000000000000000000000000000013100205086376203523912080957125020739642457324750934565663289999999999999999999999999999999999999996069938474087138942826375712862493778107262802574719630301013000000000000000000000000000000000000001179018457773858317152087286141251866567821159227584110909696099999999999999999999999999999999999999646294462667842504854373814157624440029653652231724766727091170000000000000000000000000000000000000106111661199647248543687855752712667991103904330482569981872648999999999999999999999999999999999999968166501640105825436893643274186199602668828700855229005438205300000000000000000000000000000000000009550049507968252368931907017744140119199351389743431298368538409999999999999999999999999999999999997134985147609524289320427894676757964240194583076970610489438477000000000000000000000000000000000000859504455717142713203871631596972610727941625076908816853168456899999999999999999999999999999999999742148663284857186038838510520908216781617512476927354944049462930000000000000000000000000000000000077355401014542844188348446843727534965514746256921793516785161120999999999999999999999999999999999976793379695637146743495465946881739510345576122923461944964451663700000000000000000000000000000000006961986091308855976951360215935478146896327163122961416510664500889999999999999999999999999999999997911404172607343206914591935219356555931101851063111575046800649733000000000000000000000000000000000626578748217797037925622419434193033220669444681066527485959805080099999999999999999999999999999999812026375534660888622313274169742090033799166595680041754212058475970000000000000000000000000000000056392087339601733413306017749077372989860250021295987473736382457208999999999999999999999999999999983082373798119479976008194675276788103041924993611203757879085262837300000000000000000000000000000005075287860564156007197541597416963569087422501916638872636274421148809999999999999999999999999999998477413641830753197840737520774910929273773249425008338209117673655357000000000000000000000000000000456775907450774040647778743767526721217868025172497498537264697903392899999999999999999999999999999862967227764767787805666376869741983634639592448250750438820590628982130000000000000000000000000000041109831670569663658300086939077404909608122265524774868353822811305360999999999999999999999999999987667050498829100902509973918276778527117563320342567539493853156608391700000000000000000000000000003699884850351269729247007824516966441864731003897229738151844053017482489999999999999999999999999998890034544894619081225897652644910067440580698830831078554446784094755253000000000000000000000000000332989636531614275632230704206526979767825790350750676433665964771573424099999999999999999999999999900103109040515717310330788738041906069652262894774797069900210568527972770000000000000000000000000029969067287845284806900763378587428179104321131567560879029936829441608168999999999999999999999999991009279813646414557929770986423771546268703660529731736291018951167517549300000000000000000000000002697216055906075632621068704072868536119388901841080479112694314649744735209999999999999999999999999190835183228177310213679388778139439164183329447675856266191705605076579437000000000000000000000000242749445031546806935896183366558168250745001165697243120142488318477026168899999999999999999999999927175166490535957919231144990032549524776499650290827063957253504456892149330000000000000000000000021847450052839212624230656502990235142567050104912751880812823948662932355200999999999999999999999993445764984148236212730803049102929457229884968526174435756152815401120293439700000000000000000000001966270504755529136180759085269121162831034509442147669273154155379663911968089999999999999999999999410118848573341259145772274419263651150689647167355699218053753386100826409573000000000000000000000176964345427997622256268317674220904654793105849793290234583873984169752077128099999999999999999999946910696371600713323119504697733728603562068245062012929624837804749074376861570000000000000000000015926791088519786003064148590679881418931379526481396121112548658575277686941528999999999999999999995221962673444064199080755422796035574320586142055581163666235402427416693917541300000000000000000001433411197966780740275773373161189327703824157383325650900129379271774991824737609999999999999999999569976640609965777917267988051643201688852752785002304729961186218467502452578717000000000000000000129007007817010266624819603584507039493344174164499308581011644134459749264226384899999999999999999961297897654896920012554118924647888151996747750650207425696506759662075220732084530000000000000000011610630703530923996233764322605633554400975674804937772291047972101377433780374640999999999999999996516810788940722801129870703218309933679707297558518668312685608369586769865887607700000000000000001044956763317783159661038789034507019896087810732444399506194317489123969040233717689999999999999999686512971004665052101688363289647894031173656780266680148141704753262809287929884693000000000000000094046108698600484369493491013105631790647902965919995955557488574021157213621034592099999999999999971786167390419854689151952696068310462805629110224001213332753427793652835913689622370000000000000008464149782874043593254414191179506861158311266932799636000173971661904149225893113288999999999999997460755065137786922023675742646147941652506619920160109199947808501428755232232066013300000000000000761773480458663923392897277206155617504248014023951967240015657449571373430330380196009999999999999771467955862400822982130816838153314748725595792814409827995302765128587970900885941197000000000000068559613241279753105360754948554005575382321262155677051601409170461423608729734217640899999999999979432116027616074068391773515433798327385303621353296884519577248861572917381079734707730000000000006170365191715177779482467945369860501784408913594010934644126825341528124785676079587680999999999998148890442485446666155259616389041849464677325921796719606761952397541562564297176123695700000000000555332867254366000153422115083287445160596802223460984117971414280737531230710847162891289999999999833400139823690199953973365475013766451820959332961704764608575715778740630786745851132613000000000049979958052892940013807990357495870064453712200111488570617427285266377810763976244660216099999999985006012584132117995857602892751238980663886339966553428814771814420086656770807126601935170000000004498196224760364601242719132174628305800834098010033971355568455673974002968757862019419448999999998650541132571890619627184260347611508259749770596989808593329463297807799109372641394174165300000000404837660228432814111844721895716547522075068820903057422001161010657660267188207581747750409999999878548701931470155766446583431285035743377479353729082773399651696802701919843537725475674877000000036435389420558953270066024970614489276986756193881275167980104490959189424046938682357297536899999989069383173832314018980192508815653216903973141835617449605968652712243172785918395292810738930000003279185047850305794305942247355304034928808057449314765118209404186327048164224481412156778320999999016244485644908261708217325793408789521357582765205570464537178744101885550732655576352966503700000295126654306527521487534802261977363143592725170438328860638846376769434334780203327094110048889999911462003708041743553739559321406791056922182448868501341808346086969169699565939001871766985333

(10)

int(exp(-1985*(t+1/t))/sqrt(t), t = 0 .. infinity)

(1/1985)*Pi^(1/2)*exp(-3970)*1985^(1/2)

(11)

l := [seq(LinearAlgebra:-Determinant(Matrix(n, proc (i, j) options operator, arrow; 1/min(i, j) end proc)), n = 1 .. 10)]

[1, -1/2, 1/12, -1/144, 1/2880, -1/86400, 1/3628800, -1/203212800, 1/14631321600, -1/1316818944000]

(12)

with(gfun):

rec := listtorec(l, u(n))

[{u(n+1)+(n^2+5*n+6)*u(n+2), u(0) = 1, u(1) = -1/2}, ogf]

(13)

rsolve(rec[1], u)

(-1)^n*(n+1)/GAMMA(n+2)^2

(14)

``

Hope the reader will try to continue the above.

Download Putnam_done_with_Maple.mw

Ever year about this time, somewhat geeky holiday-themed content makes the rounds on the internet.  And I realized that even though I have seen much of this content already, I still enjoy seeing it again. (Why wouldn’t I want to see a Dalek Christmas tree every year?)

So in the spirit of internet recycling, here are a couple of older-but-still-fun Maple applications with a Christmas/holiday theme for your enjoyment.

Talkin’ Turkey

The Physics of Santa Claus

Other examples (old or new) are most welcome, if anyone wants to share.

eithne

Hi
Two new things recently added to the latest version of Physics available on Maplesoft's R&D Physics webpage are worth mentioning outside the framework of Physics.

  • automaticsimplification. This means that after "Physics:-Setup(automaticsimplification=true)", the output corresponding to every single input (literally) gets automatically simplified in size before being returned to the screen. This is fantastically convenient for interactive work in most situations.

  • Add Physics:-Library:-Assume, to perform the same operations one typically performs with the  assume command, but without the side effect that the variables get redefined. So the variables do not get redefined, they only receive assumptions.

This new Assume implements the concept of an "extended assuming". It permits re-using expressions involving the variables being assumed, expressions that were entered before the assumptions were placed, as well as reusing all the expressions computed while the variables had assumptions, even after removing the variable's assumptions. None of this is possible when placing assumptions using the standard assume. The new routine also permits placing assumptions on global variables that have special meaning, that cannot be redefined, e.g. the cartesian, cylindrical or spherical coordinates sets, or the coordinates of a coordinate spacetime system within the Physics package, etc.

Examples:

 

with(Physics):

This is Physics from today:

Physics:-Version()[2]

`2014, December 9, 16:51 hours`

(1.1)
• 

Automatic simplification is here. At this point automaticsimplification is OFF by default.

Setup(automaticsimplification)

[automaticsimplification = false]

(1.2)

Hence, for instance, if you input the following expression, the computer just echoes your input:

Physics:-`*`(a, c)+Physics:-`*`(a, d)+Physics:-`*`(b, c)+Physics:-`*`(b, d)

a*c+a*d+b*c+b*d

(1.3)

There is however some structure behind (1.3) and, in most situations, it is convenient to have these structures
apparent, in part because they frequently provide hints on how to proceed ahead, but also because a more
compact expression is, roughly speaking, simpler to understand. To see this
automaticsimplification in action,
turn it ON:

Setup(automaticsimplification = true)

[automaticsimplification = true]

(1.4)

Recall this same expression (you could input it with the equation label (1.3) as well) 

Physics:-`*`(a, c)+Physics:-`*`(a, d)+Physics:-`*`(b, c)+Physics:-`*`(b, d)

(c+d)*(a+b)

(1.5)

What happened: this output, as everything else after you set automaticsimplification = true and with no
exceptions, is now further processed with simplify/size before being returned. And enjoy computing with frankly
shorter expressions all around! And no need anymore for "simplify(%, size)" every three or four input lines.

Another  example, typical in computer algebra where expressions become uncomfortably large and difficult to
read: convert the following input to 2D math input mode first, in order to compare what is being entered with the
automatically simplified output on the screen

-Physics:-`*`(Physics:-`*`(Physics:-`*`(3, sin(x)^(1/2)), cos(x)^2), sin(x)^m)+Physics:-`*`(Physics:-`*`(Physics:-`*`(3, sin(x)^(1/2)), cos(x)^2), cos(x)^n)+Physics:-`*`(Physics:-`*`(Physics:-`*`(4, sin(x)^(1/2)), cos(x)^4), sin(x)^m)-Physics:-`*`(Physics:-`*`(Physics:-`*`(4, sin(x)^(1/2)), cos(x)^4), cos(x)^n)

-4*(cos(x)^n-sin(x)^m)*sin(x)^(1/2)*cos(x)^2*(cos(x)^2-3/4)

(1.6)

You can turn automaticsimplification OFF the same way

Setup(automaticsimplification = false)

[automaticsimplification = false]

(1.7)
• 

New Library:-Assume facility; welcome to the world of "extended assuming" :)

 

Consider a generic variable, x. Nothing is known about it

about(x)

x:

  nothing known about this object

 

Each variable has associated a number that depends on the session, and the computer (internally) uses this
number to refer to the variable.

addressof(x)

18446744078082181054

(1.8)

When using the assume  command to place assumptions on a variable, this number, associated to it, changes,
for example:

assume(0 < x and x < Physics:-`*`(Pi, 1/2))

addressof(x)

18446744078179060574

(1.9)

Indeed, the variable x got redefined and renamed, it is not anymore the variable x referenced in (1.8).

about(x)

Originally x, renamed x~:

  is assumed to be: RealRange(Open(0),Open(1/2*Pi))

 


The semantics may seem confusing but that is what happened, you enter x and the computer thinks x~, not x 
anymore.This means two things:

1) all the equations/expressions, entered before placing the assumptions on x using assume, involve a variable x 
that is different than the one that exists after placing the assumptions, and so these previous expressions
cannot
be reused
. They involve a different variable.

2) Also, because, after placing the assumptions using assume, x refers to a different object, programs that depend
on the
x that existed before placing the assumptions will not recognize the new x redefined by assume .

 

For example, if x was part of a coordinate system and the spacetime metric g[mu, nu]depends on it, the new variable x
redefined within assume, being a different symbol, will not be recognized as part of the dependency of "g[mu,nu]." This
posed constant obstacles to working with curved spacetimes that depend on parameters or on coordinates that
have a restricted range. These problems are resolved entirely with this new
Library:-Assume, because it does not
redefine the variables. It only places assumptions on them, and in this sense it works like
assuming , not assume .
As another example, all the
Physics:-Vectors commands look for the cartesian, cylindrical or spherical coordinates
sets
[x, y, z], [rho, phi, z], [r, theta, phi] in order to determine how to proceed, but these variables disappear if you use
assume to place assumptions on them. For that reason, only assuming  was fully compatible with Physics, not assume.

 

To undo assumptions placed using the assume command one reassigns the variable x to itself:

x := 'x'

x

(1.10)

Check the numerical address: it is again equal to (1.8) 

addressof(x)

18446744078082181054

(1.11)

·All these issues get resolved with the new Library:-Assume, that uses all the implementation of the existing 
assume command but with a different approach: the variables being assumed do not get redefined, and hence:
a) you can reuse expressions/equations entered before placing the assumptions, you can also undo the
assumptions and reuse results obtained with assumptions. This is the concept of an
extended assuming. Also,
commands that depend on these assumed variables will all continue to work normally, before, during or after
placing the assumption, because
the variables do not get redefined.

Example:

about(x)

x:

  nothing known about this object

 

So this simplification attempt accomplishes nothing

simplify(arccos(cos(x)))

arccos(cos(x))

(1.12)

Let's assume now that 0 < x and x < (1/2)*Pi

Library:-Assume(0 < x and x < Physics:-`*`(Pi, 1/2))

{x::(RealRange(Open(0), Open((1/2)*Pi)))}

(1.13)

The new command echoes the internal format representing the assumption placed.

a) The address is still the same as (1.8)

addressof(x)

18446744078082181054

(1.14)

So the variable did not get redefined. The system however knows about the assumption - all the machinery of the
assume command is being used

about(x)

Originally x, renamed x:

  is assumed to be: RealRange(Open(0),Open(1/2*Pi))

 


Note that the renaming is to the variable itself - i.e. no renaming.

Hence, expressions entered before placing assumptions can be reused. For example, for (1.12), we now have

simplify(arccos(cos(x)))

x

(1.15)

To clear the assumptions on x, you can use either of Library:-Assume(x=x) or Library:-Assume(clear = {x, ...}) in
the case of many variables being cleared in one go, or in the case of a single variable being cleared:

Library:-Assume(clear = x)

about(x)

x:

  nothing known about this object

 


The implementation includes the additionally functionality, for that purpose add the keyword
additionally 
anywhere in the calling sequence. For example:

Library:-Assume(x::positive)

{x::(RealRange(Open(0), infinity))}

(1.16)

about(x)

Originally x, renamed x:

  is assumed to be: RealRange(Open(0),infinity)

 

Library:-Assume(additionally, x < 1)

{x::(RealRange(Open(0), Open(1)))}

(1.17)

Library:-Assume(x = x)

In summary, the new Library:-Assume command implements the concept of an extended assuming, that can be
turned ON and OFF at will at any moment without changing the variables involved.


Download AutomaticSimplificationAndAssume.mw

 

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


Partial rectification for the Physics:-Simplify and Physics:-Library:-SortProducts procedures dealing with Fermi annihilation/creation operators

This post will be useful for physicists dealing with Fermi annihilation/creation operators. Physics Package provides plenty of powerful tools for quantum operators handling, however some of them often fail to render correct result.  In particular incorrect behaviour with respect to Fermi annihilation/creation operators is observed for routines Simplify and SortProducts.  In this post I present my procedures S*implifyFermionicOperators and SortProductsFermi which partially solve these issues.

Problems with Physics Package routines

   

Short explanation of custom routines SimplifyFermionicOperators and SortProductsFermi

   

"Details for SimplifyFermionicOperators(z,prefix)"

   

"Details for SortProductsFermi(x,L,prefix)"

   

Weak points

   

Final notes

   


Download FermiCreationAnnihilation.mw

First 46 47 48 49 50 51 52 Last Page 48 of 77