What’s New in Calculus and Algebra?

Devendra Kapadia, Wolfram Research, Inc.

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

Plan for the Talk

I will discuss new developments related to the following areas:

Calculus

Equation Solving

Finite Fields

Linear Algebra

Special Functions

Documentation

Online Courses

Control Systems

Control systems are all around us and we use them daily.

At the simplest level, such a system can be represented as follows:

In Version 14, such a system can be studied using DSolveValue:

DSolveValue[ u(t)->sys,resp,t]

Here u(t) is the time-dependent input to the system.

The system sys can be a StateSpaceModel or a TransferFunctionModel.

Finally,  resp can be “ImpulseResponse”, “OutputResponse”, etc.

Control Systems in DSolveValue

Define a system using a transfer-function model:

tfm=(TransferFunctionModelFull[(1/((s^2)+s+5)), , , ]);

Visualize the poles of the transfer function:

ComplexPlot[(1/((s^2)+s+5)),{s,-5-5 I,5+5 I}]

Roots[(s^2)+s+5==0,s]

Find  the impulse  response:

ir[t_]=DSolveValue[tfm,"ImpulseResponse",t]

Find  the output  response for a sinusoidal input:

or[t_]=FullSimplify[DSolveValue[Sin[t]->tfm,"OutputResponse",t]]

Obtain the same result using UnilateralConvolve in Version 14:

FullSimplify[UnilateralConvolve[Sin[u],ir[u],u,t]]

Plot the results:

Plot[{ir[t],or[t]},{t,0,10},]

Discrete systems can be studied using RSolveValue and RecurrenceTable.

Vector and Contour Integrals

14.0 includes functions for numerical vector and contour integration:

NLineIntegrate, NSurfaceIntegrate and NContourIntegrate.

For example, define a Dupin cyclide:

reg=ParametricRegion[{((Cos[u] (75-32 Cos[v])+8)/(48-12 Cos[u] Cos[v])),((5 Sin[u] (2 Cos[v]-3))/(3 (Cos[u] Cos[v]-4))),-((5 (3 Cos[u]-8) Sin[v])/(12 (Cos[u] Cos[v]-4)))},{{u,0,2 π},{v,0,2 π}}];

ParametricPlot3D[reg[[1,1]],{u,0,2 π},]

Choose a vector field whose divergence is 1:

vec={(x/3),(y/3),(z/3)};

(Div[vec, {x,y,z}])

Compute the volume of the cyclide as a surface integral:

NSurfaceIntegrate[vec,{x,y,z}∈reg]

NSurfaceIntegrate[vec,{x,y,z}∈reg,WorkingPrecision->20]

These functions will provide useful alternatives to symbolic computation.

TruncateSum

DSolve, Asymptotic, etc. can return Inactive or unevaluated Sums.

TruncateSum makes it easy to work with such results in Version 14.

For example, truncate an infinite sum to five terms:

TruncateSum[(∑_(i=1)^∞)f[i],5]

Truncate a power series returned by Asymptotic:

asymp=Asymptotic[Sin[x],{x,0,∞}]

TruncateSum[%,8]

Plot several truncations along with the original function:

Plot[Evaluate[{Table[TruncateSum[asymp,i],{i,{5,9,13,17}}],Sin[x]}],]

NSolve By Monodromy

NSolve uses a new approach based on monodromy in Version 14.

The following illustrates the idea for the cube roots of unity:

(z^3)=p;  p= (e^(2π i t)), t ∈ [0,1]

The new method can be used to solve systems with “many” roots.

The MaxRoots option can be used to specify the number of desired roots.

For example, find five out of a trillion roots of a polynomial system:

NSolve[(x^10000)==(y^2)+2 y+1&&(y^10000)==(z^2)+2 z+1&&(z^10000)==(x^2)+2 x+1,{x,y,z},MaxRoots->5]//Timing

This work was motivated by applications to engineering.

Finite Fields

Version 14 includes several new features for finite fields.

Thus, such a field can now be specified directly using a prime power:

ℱ=FiniteField[(17^3)]

Convert an integer to an element of the prime subfield of  ℱ:

ToFiniteField[21,ℱ]

Find a point on a Fermat curve over  ℱ:

FindInstance[(x^50)+(y^50)==(z^50),{x,y,z},ℱ]

The 14.0 documentation includes several applications of finite fields.

Structured Matrices

Four new structured matrices have been added in Version 14:

SymmetricMatrix, HermitianMatrix,  OrthogonalMatrix, UnitaryMatrix.

TargetStructure can be used to return them from other matrices.

For example, construct a symmetric matrix:

TableForm[lsym={{7},{8,11}}]

sym=SymmetricMatrix[lsym]

Examine the matrix:

MatrixForm[Normal[sym]]

Query the matrix:

sym["StructuredAlgorithms"]

Compute the pseudoinverse of a large symmetric matrix:

sym=SymmetricMatrix[Table[RandomReal[{-1,1},k],{k,300}]]

PseudoInverse[sym]//AbsoluteTiming

Represent a rotation matrix as an OrthogonalMatrix:

RotationMatrix[θ,{0,0,1},TargetStructure->"Orthogonal"]

MatrixForm[%]

Several matrix decompositions also have the above option in 14.0.

Interval Matrices

Twelve basic matrix functions support interval computation in 14.0.

They include Inverse, LinearSolve, Det, and Eigensystem.

For example, define a CenteredInterval matrix:

mat=-RandomComplex[1+I,{3,3}];

MatrixForm[m=Map[CenteredInterval,mat,{2}]]

Compute  its  eigenvalues:

Eigenvalues[m]

Normal[%]

We plan to add support for interval computation in other areas.

Bilateral Hypergeometric Function

The bilateral hypergeometric series is defined by:

(∑_(k=-∞)^∞)(((Pochhammer[(Subscript[a, 1]), k])…(Pochhammer[(Subscript[a, p]), k]))/((Pochhammer[(Subscript[b, 1]), k])…(Pochhammer[(Subscript[b, q]), k])))(z^k)

where (Pochhammer[a, k]) is the Pochhammer symbol.

BilateralHypergeometricPFQ implements this series in Version 14.

The new function is used to evaluate doubly infinite sums such as:

(∑_(n=-∞)^∞)((Pochhammer[(1/2),n] (z^n))/(Pochhammer[1,n]))//AbsoluteTiming

(∑_(n=-∞)^∞)((Pochhammer[(1/2),n] (z^n))/(Pochhammer[(13/4),n]))//AbsoluteTiming

(∑_(n=-∞)^∞)(((Pochhammer[a1,n] Pochhammer[a2,n] Pochhammer[a3,n]) (z^n))/(Pochhammer[b1,n] Pochhammer[b2,n] Pochhammer[b3,n]))//TraditionalForm//AbsoluteTiming

Documentation

We recently surveyed the coverage of WL math functions on MathWorld.

Around 150 new links have been added to reference pages for 14.0.

Further improvements are planned in the near future.

Online Courses

Five interactive Mathematics courses have been completed in 2023!

A Study Group for the Finite Mathematics course will begin soon.

A course on Electric Circuits is scheduled for Spring 2024.

Thank you!