Version 12 Enhancements for the (Pre-)College Classroom

Itai Seggev, Wolfram Research

ABSTRACT

Version 12 includes a number of enhancements aimed at users in calculus courses and its prerequisites.  We will survey a number of these features, which include dedicated functions for equation manipulation; enhancement to core calculus functions such as D and Limit; usability improvements in the notebook interface; and greatly expanded documentation that keeps the needs of these students front and center.

Equation Manipulation

AddSides

SubtractSides

MultiplySides

DivideSides

ApplySides (structural)

Manipulating equations

Add a term to both sides:

AddSides[x==y,5]

Combine two equations:

SubtractSides[x==y,a==b]

Combine equations with more than sides:

MultiplySides[x==y==z,a==b==2w]

Mathematically aware (can’t divide by zero):

DivideSides[a==b]

Manipulation other relations

Support inequalities:

AddSides[x>y,5]

Can combine multiple types of relations:

AddSides[x==y,a≤b]

Multiplying inequalities by symbolic expressions produces multiple cases:

MultiplySides[a>c,b]

Applying arbitrary functions to relations

ApplySides allows applying arbitrary functions to relations:

ApplySides[Exp,Log[x]==2]

ApplySides[Sqrt,x^2+1> 4]

ACHTUNG! It is purely structural and does not check mathematical consistency:

ApplySides[Sin,x>c]

{x>c,Sin[x]>Sin[c]} /. {x->3Pi/2,c->Pi/2}

Limit

Direction improvements

Limit is now two-sided by default:

Limit[(1/x),x->0]

Other directions:

{(Underscript[\[Limit], x->(SuperMinus[0])])(1/x),(Underscript[\[Limit], x->(SuperPlus[0])])(1/x),(Underscript[\[Limit], x(Underscript[->, (Complexes)])0])(1/x)}

New, easy-to-remember values for Direction:

Limit[(1/x),x->0,Direction->"FromAbove"]

Can you guess it’s friend?

Limit[(1/x),x->0,Direction

Limits of Sequences and more

DiscreteLimit computes limits of sequences, which may be different from the corresponding function extended to the real domain:

{Limit[Sin[x Pi], x->∞],DiscreteLimit[Sin[n Pi], n->∞]}

{Limit[(((-1))^(2x)), x->∞],DiscreteLimit[(((-1))^(2n)), n->∞]}

At a more advanced level, have limits superior and inferior:

{DiscreteMaxLimit[(((-1))^n), n->∞],DiscreteMinLimit[(((-1))^n), n->∞]}

{MaxLimit[Sin[x Pi], x->∞],MinLimit[Sin[x Pi], x->∞]}

Multivariate limits

Define a multivariate functions:

ClearAll[f];
f[x_,y_]:=ArcTan[y^2/(x^2+x^3)]

The true two-dimensional limit of the function does not exist:

Limit[f[x,y],{x,y}->{0,0}]

Compare with nested/iterated limits or limits along rays:

Limit[f[x,y],{x->0,y->0}]

Limit[f[x,y],{y->0,x->0}]

Limit[f[x,x],x->0]

Plot3D[f[x,y],{x,-1,1},{y,-1,1},ViewPoint->{-1,-.5,1.5}]

Direction can limit multivariate limits to quadrants, halfplanes, etc.

Documentation

Documentation rewritten to match functionality

Details section has intuition-building illustrations

Notable examples:

(HyperlinkPaclet["Geometric limits", paclet:ref/DiscreteLimit#166454575])

(HyperlinkPaclet["Limits as zooming", paclet:ref/Limit#73658128])

(HyperlinkPaclet["Classifying discontinuities", paclet:ref/Limit#398095114])

Differentiation & Integration

Improved higher derivatives

Symbolic-order derivatives

D[x,{x,n}]

D[Sin[x],{x,n}]

Table[%, {n,0,4}]

Simpler results for important special functions

D[BesselJ[n,x],{x,3}]

Compare with old result

D[BesselJ[n,x],{x,3}]

Not simply applying symbolic-order result:

D[BesselJ[n,x],{x,n}]

Strengthened indefinite integration

Constants of integration

By popular demand:

Integrate[x^2,x,GeneratedParameters->C]

%//TraditionalForm

Sometimes integration constants aren’t so constant:

Integrate[x^2,x,y,GeneratedParameters->C]

D[(((x^3) y)/3)+(C[1])[y]+(C[2])[x],y,x]

Also in the discrete integral:

Sum[x^2,x,GeneratedParameters->C]

DifferenceDelta[%,x]

And product:

Product[x^2,x,GeneratedParameters->C]

DiscreteRatio[%,x]

Notice how additive constants flow right, multiplicative constants flow left

New integration rules

Most noticeable in integrals with parameters

Integrate already very strong in concrete inputs!

Can do essentially all integrals on the RUBI benchmark

∫((Sqrt[(x^3)])/(Sqrt[1+(x^5)]))\[DifferentialD]x

∫((((a+(b/x)))^m)/(((c+d x))^2))\[DifferentialD]x

Return simpler results for many indefinite integrals

∫((Tan[x])/(Sqrt[1+((Sec[x])^3)]))\[DifferentialD]x

Compare with:

∫((Tan[x])/(Sqrt[1+((Sec[x])^3)]))\[DifferentialD]x

Rewritten documentation

Many more examples

Application examples inspired by standard calculus texts

(HyperlinkPaclet["L'Hôpital's Rule", paclet:ref/D#699312398])

(HyperlinkPaclet["Regions of Revolution", paclet:ref/Integrate#1050006778])

(HyperlinkPaclet["Fundamental Theorem of Calculus", paclet:ref/Integrate#1195940086])

Better coverage of how to type in inputs

(HyperlinkPaclet["derivative oeprator", paclet:ref/D#684589688])

(HyperlinkPaclet["indefinite integral", paclet:ref/Integrate#1539575596])

(HyperlinkPaclet["region integral", paclet:ref/Integrate#2008699683])

User interface enhancements

Implicit multiplication indicator

Long have had implicit multiplication indicator for numbers

2 3

Now generalized to many more expressions

f[x]g[x]

Omitted between “math functions”

2Sin[x]Cos[x]

In V12.1, improved curation with FE access to the kernel’s list of mathematical functions

Improved input shortcut completions

Will complete not only special characters, but special input templates

For example,  Escint will show completions not just for the integral character, but also the indefinite integral template and the integer domain

The shortcuts  Escgrad, Escdel., Escdelx, and Escdel2 for Grad, Div, Curl, and Laplacian now complete

Syntax coloring improvements

D, Integrate, and Solve color the independent variables:

{D[f[x],x],Integrate[f[x],x],Solve[x^2==4,x]}

Reviewed to be consistently added to many related functions such as FindMaximum, integral transforms, and more

FindMaximum[x Cos[x],{x,2}]

Working on additional such hinting

Math Function Documentation

Reviewed 252 “math function” pages

Modern visualizations

Greatly expand Scope section

ensuring consistent presentation among function groups (e.g, trigonometric, Bessel, etc.)

100 number theory/discrete math functions also under review.

Miscellaneous

Number domain improvements

Now have signed number domains

{PositiveReals, NonNegativeIntegers}

Have formatting

Input short cuts

Formatting tweaks

ConditionalExpression now has a new, less-scary looking form

Integrate[Exp[-c (x^2)],{x,-∞,∞}]

If the conditional becomes large

Solve[Sin[x+y]==1/2&&E^x-y≤1,y,Reals]

Can tweak the auto-iconize limit by changing the value of BoxForm`$ConditionalExpressionIconizeThreshold

Root objects that have a concrete value now display it in a formatted way:

Solve[x^5-2x+1==0,x,Reals]

Improved appearance of constants:

DSolve[y''[x]+y[x]==0,y[x],x]

Compare with old typesetting:

DSolve[y''[x]+y[x]==0,y[x],x]

Euclidean Geometry

RandomInstance[GeometricScene[{a,b,c,o},{CircleThrough[{a,b,c},o],o==Midpoint[{a,c}],Triangle[{a,b,c}]}],4]//GraphicsRow[#,ImageSize->1000]&

Euclidean-style theorem-proving coming

See separate talk “Automated Planar Geometry”

Conclusion

Capability, usability, and documentation all enhanced for the college classroom

More to come

Get in touch:

itais@wolfram.com

Questions?