What’s New in Calculus and Algebra

Devendra Kapadia, Wolfram Research, Inc.

(RowDefault[, (Spacer1), , (Spacer1), ])  #WolframTechConf

Plan for the Talk

I will discuss new features related to the following areas:

Calculus

Algebra

Special Functions

Documentation

Benchmarking

Online Courses

Algebraic Integrals

Version 13.0 includes powerful heuristic methods for algebraic integrals.

This integral returned a large number of elliptic integrals in earlier releases:

∫(((Sqrt[(x^3)-1]) ((x^3)+2))/((x^2) (2 (x^3)-4 (x^2)-2)))\[DifferentialD]x//TraditionalForm

The following integral evaluates for the first time, in Version 13.0:

∫(((((x^2)+1))^2)/((1-(x^2)) ((((x^4)-6 (x^2)+1))^(3/4))))\[DifferentialD]x//TraditionalForm

The new techniques will significantly improve the quality and scope of Integrate in this area.

Contour Integrals

Many parametric integrals are now evaluated using complex contour integration.

Here is an example of a trig-exponential integral which now uses this method:

Integrate[((E^(-I θ))/(1+a cos(θ))),{θ,0,2 π},Assumptions->-1<a<1]

Verify the result using NIntegrate:

{%/. a->0.45,Chop[NIntegrate[(1/((E^(I θ)) (0.45 cos(θ)+1))),{θ,0,2 π}]]}

Contour integration gives better results for several integrals sent by users.

Function Poles

FunctionPoles can be used to compute the poles of meromorphic functions.

For example, consider the function (Gamma[(z^3)-z/3]):

f=(Gamma[(z^3)-(z/3)]);

ComplexPlot3D[ConditionalExpression[f,(Abs[z])<1],{z,-1-I,1+I},]

Compute the poles of f in the unit disk:

pp=FunctionPoles[{f,(Abs[z])≤1},z]

Compute the integral using the residue theorem:

RootReduce[2 π I Total[(res(f,{z,#1[[1]]})&)/@pp]]

N[%]

Compare with the result from NIntegrate:

Chop[NIntegrate[(∂/(∂t))exp(I t) (f/. z->exp(I t)),{t,0,2 π}]]

DSolve - Vector Variables

Version 13.0 adds support for using vector functions in DSolve.

For example, consider the following system of type x'(t)==A.x(t):

A=(({{0, 1}, {-1, 0}}));

init={3,-5};

DSolveValue[{x'(t)==A.x(t),x(0)==init},x(t)∈Vectors[2],t]

Here is a plot of the solution:

Plot[Evaluate[%],{t,-3 π,3 π},PlotLegends->"Expressions"]

DSolve - Graph Reduction

DSolve uses graph reduction to solve coupled systems of ODEs in Version 13.0.

The following example illustrates the new functionality:

A=(({{cos(t), 0, 0, 0}, {(E^(-sin(t))), 0, 0, 0}, {0, 0, 0, (1/t)}, {0, 1, (1/t), 0}}));

DSolveValue[x'(t)==A.x(t),x(t)∈Vectors[4],t]//TraditionalForm

Similar improvements have been made for RSolve in Version 13.0.

Complete Integrals

CompleteIntegral gives a solution with arbitrary constants for a first-order PDE.

The solution depends on n arbitrary constants for a PDE in n variables.

For example, find a complete integral of a Clairaut equation:

ClairautEquation=u(x,y)==x ((∂u(x,y))/(∂x))+y ((∂u(x,y))/(∂y))+(1/2) ((((((∂u(x,y))/(∂x))))^2)+(((((∂u(x,y))/(∂y))))^2));

The complete integral is given by a 2-parameter family of planes:

csol=u(x,y)/. CompleteIntegral[ClairautEquation,u,{x,y}][[1]]

Select a one-parameter family of these planes:

psol=csol/. {(CTraditional[2])->-1}

Find the envelope of this one-parameter family of planes:

Solve[((∂psol)/(∂(CTraditional[1])))==0,(CTraditional[1])]

envelope=Together[psol/. %[[1]]]

Verify that the envelope is also a solution:

Simplify[ClairautEquation/. {u->({x,y}|->Evaluate[envelope])}]

Visualize the complete integral and the envelope solution:

Plot3D[{psol/. {(CTraditional[1])->2},envelope},{x,-20,20},{y,-20,20},]

Bilateral Z Transforms

The bilateral Z transform for a discrete function f(n) is given by (∑_(n=-∞)^∞)f(n)(z^(-n)).

The inverse transform of  F(z) is given by a contour integral (1/(2πi))(Subscript[∮ , C])F(z)(z^(n-1))dz.

BilateralZTransform and InverseBilateralZTransform provide this functionality in Version 13.0.

As an example, define an exponentially decaying sequence:

x(n_):=(2^(-(Abs[n])))

DiscretePlot[x(n),{n,-15,15},]

Compute its bilateral Z transform:

bzt=BilateralZTransform[x(n),n,z]

Complex plot of the bilateral Z transform:

ComplexPlot[%,{z,-3-2 I,3+2 I},ImageSize->Small]

Compute the inverse transform:

InverseBilateralZTransform[bzt,z,n]

This feature implements a user suggestion that was sent to us many years ago!

Polynomial Sum of Squares

PolynomialSumOfSquaresList finds a sum of squares representation for a polynomial.

For example:

PolynomialSumOfSquaresList[(x^4)+x y+(y^2)+(1/60),{x,y}]

Expand[(x^4)+x y+(y^2)+(1/60)-%.%]

Verify that the polynomial is non-negative:

Plot3D[{(x^4)+x y+(y^2)+(1/60),0},]

Linear Algebra

Three new Linear Algebra functions are available in Version 13.0.

They are - Adjugate, CoreNilpotentDecomposition and DrazinInverse.

For example, solve a singular system A.y'(t)+B.y(t)=0 using DrazinInverse:

A=(({{1, 0, -2}, {-1, 0, 2}, {2, 3, 2}}));B=(({{0, 1, 2}, {-27, -22, -17}, {18, 14, 10}}));v={-1,-8,13};

{(Det[A]),(Det[A+B])}

Simplify[MatrixExp[t (-DrazinInverse[LinearSolve[A+B,A]].LinearSolve[A+B,B])].v]

Compare with the result given by DSolveValue:

DSolveValue[{A.y'(t)+B.y(t)==0,y(0)==v},y(t)∈Vectors[3],t]

FoxHReduce

FoxHReduce is the analog of MeijerGReduce for the FoxH function.

The following example illustrates the use of FoxHReduce:

FoxHReduce[sin(a x),x]

Activate[%]

Create a gallery of FoxH representations for various elementary and special functions:

funclist={};

Grid[]//TraditionalForm

Coulomb Functions

Version 13.0 includes the four Coulomb wave functions  from quantum mechanics.

They are named as CoulombF, CoulombG, CoulombH1 and CoulombH2.

These functions are solutions of the ODE (r^2) y''+((r^2)-2 η r-l(l+1))y=0.

Here is a plot showing the first three Coulomb functions:

With[{ℓ=0,η=(Sqrt[(15/2)])},Plot[{CoulombF[ℓ,η,r],CoulombG[ℓ,η,r],Abs[CoulombH1[ℓ,η,r]]},{r,0,30},]]

These functions complete our coverage of the classic handbook by Abramowitz and Stegun!

Centered Intervals

The Interval function (Version 3) provides arithmetic for real intervals.

CenteredInterval provides the arithmetic for real/complex intervals in Version 13.0.

For example:

a = CenteredInterval[2, 1/100]

b = CenteredInterval[3 + I/4, (1 + I)/20]

a + b

The returned interval contains all values of the function in the input interval:

Log[#]Sin[#]&[CenteredInterval[20,10]]

Plot[log(x) sin(x),{x,10,30},]

CenteredInterval works for 103 elementary and special mathematical functions.

Documentation

Version 13.0 includes new examples for Function Properties and Linear Algebra.

We plan to improve the pages for Integral Transforms in the near future.

Benchmarking

Version 13.0 marks the completion of a major benchmarking project for Calculus.

The benchmark collection includes 18,387,711 problems for 46 functions.

There are separate reports for each benchmark in the collection with timings, etc.

Courses

The Wolfram U course on Differential Equations will be available soon.

The course consists of lessons, problem sessions, exercises, quizzes, and a final.

Courses on Elementary Algebra and Multivariable Calculus are planned for 2022.

Thank you!