Advanced Mathematics
Maple 2021 includes numerous cutting-edge updates in a variety of branches of mathematics.
Integration
Multivariate limits
New MultivariatePowerSeries package
New simplifications involving the LambertW function
Numerical solution of vectorized ODEs
Polyhedral sets
Asymptotic expansions
GF package
Additions to the intsolve command
LREtools
Generic linear algebra
The int command now supports the method option for indefinite integrals. Methods include Risch, MeijerG, Elliptic, Norman and Trager. More methods and details can be found on the help page.
int⁡cos⁡x+1,x,method=meijerg_raw
cos⁡1⁢x⁢hypergeom⁡,32,−x24−sin⁡1⁢x2⁢hypergeom⁡1,32,2,−x242
int⁡cos⁡x+1,x,method=risch
sin⁡x+1
Additionally, the new meta-method _RETURNVERBOSE has been added for both definite and indefinite integration. It returns the result of integration for most of the available integration methods.
int⁡cos⁡x+1,x,method=_RETURNVERBOSE
derivativedivides=sin⁡x+1,default=sin⁡x+1,norman=2⁢tan⁡x2+121+tan⁡x2+122,meijerg=cos⁡1⁢sin⁡x−sin⁡1⁢π⁢1π−cos⁡xπ,risch=sin⁡x+1,FAILS=gosper,lookup,trager,elliptic
int⁡1−t2+1⁢−2⁢t2+1,t=0..1,method=_RETURNVERBOSE
ftoc=EllipticK⁡2,elliptic=−I⁢2⁢EllipticK⁡222+2⁢EllipticK⁡222,ftocms=EllipticK⁡2,FAILS=distribution,piecewise,series,o,polynomial,ln,lookup,cook,ratpoly,elliptictrig,meijergspecial,improper,asymptotic,meijerg,contour
The internal algorithms of indefinite integration have been improved. The Risch-Trager algorithm gets called more often so that fewer integrals containing radical expressions will return partially evaluated. In Maple 2020, the integral ∫3⋅ x5+2⋅x5+x2−1x5−12 ⅆx returned as −x⁢x5+x2−1x5−1+∫3⁢x5+22⁢x5−1⁢x5+x2−1ⅆx. Now, an elementary answer is computed.
∫2+3⁢x5⁢−1+x2+x512−1+x52ⅆx
−x⁢x5+x2−1x5−1+ln⁡−−x5+2⁢x5+x2−1⁢x−2⁢x2+1x−1⁢x4+x3+x2+x+12
The limit command has been improved for the multivariate case of quotients of analytic functions. The following limits can now be computed.
g ≔ x2−x⋅y+y2+z4:
g is not homogeneous but has an isolated root at the origin. It is, however, weighted homogeneous.
PolynomialTools:-IsHomogeneousg
false
PolynomialTools:-IsHomogeneousg,x,y,z,2,2,1
true
RC≔RegularChains: R≔RC:-PolynomialRingx,y,z:RC:-DisplayRC:-RealTriangularizeg,R,R
x=0y=0z=0
limitx⋅y⋅zg,x,y,z=~0
0
limitg+x⋅y⋅zg+x⋅y3−y⋅z3,x,y,z=~0
1
limitg+x⋅z2g+y⋅z2,x,y,z=~0
undefined
limitsinx+y+z2g,x,y,z=~0
limitgx−z24,x,y,z=~0
∞
The MultivariatePowerSeries package is new. It provides functionality for doing lazy computations with multivariate power series at high speed and high precision. The word 'lazy' here means that terms are computed only when necessary; further terms can always be computed at relatively little cost.
withMultivariatePowerSeries;
Add,ApproximatelyEqual,ApproximatelyZero,Copy,Degree,Display,Divide,EvaluateAtOrigin,Exponentiate,GeometricSeries,GetAnalyticExpression,GetCoefficient,HenselFactorize,HomogeneousPart,Inverse,IsUnit,MainVariable,Multiply,Negate,PowerSeries,Precision,SetDefaultDisplayStyle,SetDisplayStyle,Subtract,SumOfAllMonomials,TaylorShift,Truncate,UnivariatePolynomialOverPowerSeries,UpdatePrecision,Variables,WeierstrassPreparation
a ≔ GeometricSeriesx, y
Object⁡PowerSeriesObject,Array(0..1, {(1) = 1}),1,geo_gen,x,y,ancestors
b ≔ SumOfAllMonomialsx, y
Object⁡PowerSeriesObject,Array(0..1, {(1) = 1}),1,sam_gen,x,y,ancestors
c ≔ a − b
Object⁡PowerSeriesObject,Array(0..0, {}),0,add_gen,x,y,ancestors
CodeTools:-UsageHomogeneousPartc, 100
99⁢x99⁢y+4949⁢x98⁢y2+161699⁢x97⁢y3+3921224⁢x96⁢y4+75287519⁢x95⁢y5+1192052399⁢x94⁢y6+16007560799⁢x93⁢y7+186087894299⁢x92⁢y8+1902231808399⁢x91⁢y9+17310309456439⁢x90⁢y10+141629804643599⁢x89⁢y11+1050421051106699⁢x88⁢y12+7110542499799199⁢x87⁢y13+44186942677323599⁢x86⁢y14+253338471349988639⁢x85⁢y15+1345860629046814649⁢x84⁢y16+6650134872937201799⁢x83⁢y17+30664510802988208299⁢x82⁢y18+132341572939212267399⁢x81⁢y19+535983370403809682969⁢x80⁢y20+2041841411062132125599⁢x79⁢y21+7332066885177656269199⁢x78⁢y22+24865270306254660391199⁢x77⁢y23+79776075565900368755099⁢x76⁢y24+242519269720337121015503⁢x75⁢y25+699574816500972464467799⁢x74⁢y26+1917353200780443050763599⁢x73⁢y27+4998813702034726525205099⁢x72⁢y28+12410847811948286545336799⁢x71⁢y29+29372339821610944823963759⁢x70⁢y30+66324638306863423796047199⁢x69⁢y31+143012501349174257560226774⁢x68⁢y32+294692427022540894366527899⁢x67⁢y33+580717429720889409486981449⁢x66⁢y34+1095067153187962886461165019⁢x65⁢y35+1977204582144932989443770174⁢x64⁢y36+3420029547493938143902737599⁢x63⁢y37+5670048986634686922786117599⁢x62⁢y38+9013924030034630492634340799⁢x61⁢y39+13746234145802811501267369719⁢x60⁢y40+20116440213369968050635175199⁢x59⁢y41+28258808871162574166368460399⁢x58⁢y42+38116532895986727945334202399⁢x57⁢y43+49378235797073715747364762199⁢x56⁢y44+61448471214136179596720592959⁢x55⁢y45+73470998190814997343905056799⁢x54⁢y46+84413487283064039501507937599⁢x53⁢y47+93206558875049876949581681099⁢x52⁢y48+98913082887808032681188722799⁢x51⁢y49+100891344545564193334812497255⁢x50⁢y50+98913082887808032681188722799⁢x49⁢y51+93206558875049876949581681099⁢x48⁢y52+84413487283064039501507937599⁢x47⁢y53+73470998190814997343905056799⁢x46⁢y54+61448471214136179596720592959⁢x45⁢y55+49378235797073715747364762199⁢x44⁢y56+38116532895986727945334202399⁢x43⁢y57+28258808871162574166368460399⁢x42⁢y58+20116440213369968050635175199⁢x41⁢y59+13746234145802811501267369719⁢x40⁢y60+9013924030034630492634340799⁢x39⁢y61+5670048986634686922786117599⁢x38⁢y62+3420029547493938143902737599⁢x37⁢y63+1977204582144932989443770174⁢x36⁢y64+1095067153187962886461165019⁢x35⁢y65+580717429720889409486981449⁢x34⁢y66+294692427022540894366527899⁢x33⁢y67+143012501349174257560226774⁢x32⁢y68+66324638306863423796047199⁢x31⁢y69+29372339821610944823963759⁢x30⁢y70+12410847811948286545336799⁢x29⁢y71+4998813702034726525205099⁢x28⁢y72+1917353200780443050763599⁢x27⁢y73+699574816500972464467799⁢x26⁢y74+242519269720337121015503⁢x25⁢y75+79776075565900368755099⁢x24⁢y76+24865270306254660391199⁢x23⁢y77+7332066885177656269199⁢x22⁢y78+2041841411062132125599⁢x21⁢y79+535983370403809682969⁢x20⁢y80+132341572939212267399⁢x19⁢y81+30664510802988208299⁢x18⁢y82+6650134872937201799⁢x17⁢y83+1345860629046814649⁢x16⁢y84+253338471349988639⁢x15⁢y85+44186942677323599⁢x14⁢y86+7110542499799199⁢x13⁢y87+1050421051106699⁢x12⁢y88+141629804643599⁢x11⁢y89+17310309456439⁢x10⁢y90+1902231808399⁢x9⁢y91+186087894299⁢x8⁢y92+16007560799⁢x7⁢y93+1192052399⁢x6⁢y94+75287519⁢x5⁢y95+3921224⁢x4⁢y96+161699⁢x3⁢y97+4949⁢x2⁢y98+99⁢x⁢y99
d ≔ PowerSeriesn → x+ynn!,analytic = expx+y
Object⁡PowerSeriesObject,Array(0..0, {}),0,proc_gen,x,y,ancestors
e ≔ PowerSeriesn → ifelsen ∷ even, 0, −1n−12 xnn!, analytic=sinx
Object⁡PowerSeriesObject,Array(0..0, {}),0,proc_gen,x,ancestors
The package also has functionality for univariate polynomials over such power series, including Hensel factorization. Mathematically, these objects are just power series where one of the variables occurs only up to a given finite degree, but implementation-wise, they allow for more and more efficient functionality.
u ≔ UnivariatePolynomialOverPowerSeries4 d + e z − 3 a z2 + z3, z
Object⁡UnivariatePolynomialOverPowerSeriesObject,Array(0..3, {(1) = module PowerSeriesObject () local hpoly::Array, deg::nonnegint, gen::procedure, vars::(set(name)), ancestors::record, algexpr::algebraic, dstyle::(list(:-identical(:-maxterms, :-precision) = {:-nonnegint, :-identical(:-infinity)})); option object; end module, (2) = module PowerSeriesObject () local hpoly::Array, deg::nonnegint, gen::procedure, vars::(set(name)), ancestors::record, algexpr::algebraic, dstyle::(list(:-identical(:-maxterms, :-precision) = {:-nonnegint, :-identical(:-infinity)})); option object; end module, (3) = module PowerSeriesObject () local hpoly::Array, deg::nonnegint, gen::procedure, vars::(set(name)), ancestors::record, algexpr::algebraic, dstyle::(list(:-identical(:-maxterms, :-precision) = {:-nonnegint, :-identical(:-infinity)})); option object; end module})
factorization ≔ HenselFactorizeu;
moduleUnivariatePolynomialOverPowerSeriesObjectoptionobject;localupoly::Array,vname::name,dstyle::list⁡:-identical⁡:-maxdegree=:-nonnegint,:-identical⁡:-∞,:-identical⁡:-maxterms,:-precision=:-nonnegint,:-identical⁡:-∞;end module,moduleUnivariatePolynomialOverPowerSeriesObjectoptionobject;localupoly::Array,vname::name,dstyle::list⁡:-identical⁡:-maxdegree=:-nonnegint,:-identical⁡:-∞,:-identical⁡:-maxterms,:-precision=:-nonnegint,:-identical⁡:-∞;end module
u1, u2 ≔ opfactorization:
Let us examine the coefficients of the quadratic factor further.
UpdatePrecisionu2, 10:
Displayu2, maxterms=20
UnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: 4+4⁢x+32⁢y9+22⁢x29+388⁢x⁢y81+578⁢y2243+140⁢x381+3968⁢x2⁢y729+3974⁢x⁢y2729+11876⁢y36561+2291⁢x41458+41530⁢x3⁢y6561+62197⁢x2⁢y26561+124138⁢x⁢y319683+185939⁢y4118098+47494⁢x532805+424718⁢x4⁢y59049+2546836⁢x3⁢y2177147+7642522⁢x2⁢y3531441+22924393⁢x⁢y43188646+…+…+…
Before Maple 2021, the following calls to the simplify command returned their arguments unchanged, or with minor changes that left a call to LambertW in the answer.
simplifyW 5 24 ln44
5⁢ln⁡24
simplifyW2⋅6176733962839471415⋅1429⋅379115⋅ln1439265100944259205
2⁢ln⁡2135+2⁢ln⁡7135−2⁢ln⁡3135
simplifyW−1,−34 ln4343
4⁢ln⁡3−8⁢ln⁡2
simplifyW−1, −5104 ln135 1338 558
−13⁢ln⁡138+13⁢ln⁡58
simplifyW528309168976 ln94 2311010561 3745110561
39134⁢ln⁡310561−39134⁢ln⁡210561
You can now numerically solve differential equations that are collected together in vectors.
dEqs≔ⅆⅆtA__1⁡tⅆⅆtA__2⁡t=B__1⁡tB__2⁡t,ⅆⅆtB__1⁡tⅆⅆtB__2⁡t=1.2⁢A__1⁡t2.3⁢A__2