Whats New.mws

New Features and Benefits in Maple 8

Dr. Jason Schattman
Waterloo Maple
jschattman@maplesoft.com
July 4, 2002
http://www.mapleapps.com

Revolutionary

Maplets

The Traditional Way

>    with(Student:-Calculus1):

>    g := cos(x);

g := cos(x)

>    ApproximateInt( g, x=0..4, method=right, partition=200,
                output=plot, boxoptions=[color=blue] );

[Maple Plot]

>    ApproximateInt( g(x), x=0..4, method=right, partition=50,
                output=sum, boxoptions=[color=blue] );

2/25*Sum(cos(2/25*i)(2/25*i),i = 1 .. 50)

>   

The Maplets Way

>    with(Maplets): with(Elements);

[Action, AlertDialog, Argument, BoxCell, BoxColumn, BoxLayout, BoxRow, Button, ButtonGroup, CheckBox, CheckBoxMenuItem, CloseWindow, ColorDialog, ComboBox, ConfirmDialog, DropDownBox, Evaluate, FileDia...
[Action, AlertDialog, Argument, BoxCell, BoxColumn, BoxLayout, BoxRow, Button, ButtonGroup, CheckBox, CheckBoxMenuItem, CloseWindow, ColorDialog, ComboBox, ConfirmDialog, DropDownBox, Evaluate, FileDia...
[Action, AlertDialog, Argument, BoxCell, BoxColumn, BoxLayout, BoxRow, Button, ButtonGroup, CheckBox, CheckBoxMenuItem, CloseWindow, ColorDialog, ComboBox, ConfirmDialog, DropDownBox, Evaluate, FileDia...
[Action, AlertDialog, Argument, BoxCell, BoxColumn, BoxLayout, BoxRow, Button, ButtonGroup, CheckBox, CheckBoxMenuItem, CloseWindow, ColorDialog, ComboBox, ConfirmDialog, DropDownBox, Evaluate, FileDia...
[Action, AlertDialog, Argument, BoxCell, BoxColumn, BoxLayout, BoxRow, Button, ButtonGroup, CheckBox, CheckBoxMenuItem, CloseWindow, ColorDialog, ComboBox, ConfirmDialog, DropDownBox, Evaluate, FileDia...
[Action, AlertDialog, Argument, BoxCell, BoxColumn, BoxLayout, BoxRow, Button, ButtonGroup, CheckBox, CheckBoxMenuItem, CloseWindow, ColorDialog, ComboBox, ConfirmDialog, DropDownBox, Evaluate, FileDia...
[Action, AlertDialog, Argument, BoxCell, BoxColumn, BoxLayout, BoxRow, Button, ButtonGroup, CheckBox, CheckBoxMenuItem, CloseWindow, ColorDialog, ComboBox, ConfirmDialog, DropDownBox, Evaluate, FileDia...
[Action, AlertDialog, Argument, BoxCell, BoxColumn, BoxLayout, BoxRow, Button, ButtonGroup, CheckBox, CheckBoxMenuItem, CloseWindow, ColorDialog, ComboBox, ConfirmDialog, DropDownBox, Evaluate, FileDia...
[Action, AlertDialog, Argument, BoxCell, BoxColumn, BoxLayout, BoxRow, Button, ButtonGroup, CheckBox, CheckBoxMenuItem, CloseWindow, ColorDialog, ComboBox, ConfirmDialog, DropDownBox, Evaluate, FileDia...

>    RiemannSumMaplet :=
 Maplet(
  Window['W1'](
    [
     [ "Enter a function",
        TextBox['myF']( value = "cos(x)", width = 6),

       "a = ",
        TextBox['a']( value = "0", width = 3),

       "b = ",
        TextBox['b']( value = "4", width = 3)],

     [ "Number of partitions",
        Slider['S1']( 0..100, 20, 'majorticks'=20,
                     'minorticks'=5, 'snapticks'='false')],

     [ Plotter['P']( height = 400, width = 400)],

     [ MathMLViewer['Sum']( height = 75, width = 250 ),
       DropDownBox['C']([ blue, green, black,
                          brown, turquoise ])],

     [ Button['B1']( "Show Riemann Sum",
                      onclick = 'ShowTheSum')]
    ]
  ),

  Action['ShowTheSum'](
    Evaluate('Sum' = 'MathML:-Export(
              ApproximateInt( myF, x=a..b, method=left,
                              output=sum, partition=S1))'),
    Evaluate('P' =
       'ApproximateInt( myF, x=a..b, method=left,
                        output=plot, boxoptions=[color=C],
                        partition=S1, title="")')
  )
):

Display( RiemannSumMaplet );

Maplets as interfaces to packages

Interactive Plotting


You no longer have to remember plot commands and their long lists of options.

>    plot( sqrt(x)+1, x=0..10);

[Maple Plot]

>    plot( sqrt(x), x = 0 .. 10, labels = ["Km", "Euro"],
      thickness = 2, color = COLOR(RGB,4/5,2/5,1),
      axesfont = [COURIER, BOLD, 12],
      title = "Shipping Cost vs. Distance",
      titlefont = [TIMES, BOLDITALIC, 16],
      labeldirections = [HORIZONTAL, VERTICAL] );

[Maple Plot]

>    with(plots):

>    interactive( x^2+y^2+z^2=1 );

Interactive Curve Fitting

>    myData := [[1, 2.1], [2, 4.9], [3, 9.7], [4, 18]];

myData := [[1, 2.1], [2, 4.9], [3, 9.7], [4, 18]]

>    with( CurveFitting );

[BSpline, BSplineCurve, Interactive, LeastSquares, PolynomialInterpolation, RationalInterpolation, Spline, ThieleInterpolation]
[BSpline, BSplineCurve, Interactive, LeastSquares, PolynomialInterpolation, RationalInterpolation, Spline, ThieleInterpolation]

>    LeastSquares( myData, x, curve=a*x^2+c);

.7244186047+1.06007751937984484*x^2

>    PolynomialInterpolation( myData, x);

.2500000000*x^3-.5000000000*x^2-.200000000+2.550000000*x

>    Interactive( myData );

>   

>   

Calculus 1 Student Package

Step-by-step tutors for differentiation, integration and limit problems

>    with(Student:-Calculus1):

The traditional way

>    diff( x^2*cos(ln(x)), x );

2*x*cos(ln(x))-x*sin(ln(x))

The new way

>    Diff( x^2*cos(ln(x)), x );

Diff(x^2*cos(ln(x)),x)

>    Rule[ product ](%);

Diff(x^2*cos(ln(x)),x) = Diff(x^2,x)*cos(ln(x))+x^2*Diff(cos(ln(x)),x)

>    Rule[ power ](%);

Diff(x^2*cos(ln(x)),x) = 2*x*cos(ln(x))+x^2*Diff(cos(ln(x)),x)

>    Rule[ cos ](%);

Diff(x^2*cos(ln(x)),x) = 2*x*cos(ln(x))+x^2*Diff(cos(ln(x)),x)

Get a hint if you are stuck

>    Hint(%);

[chain]

>    Rule[ chain ](%%);

Diff(x^2*cos(ln(x)),x) = 2*x*cos(ln(x))+x^2*Eval(Diff(cos(_X),_X),_X = ln(x))*Diff(ln(x),x)

>    Rule[ ln ](%);

Diff(x^2*cos(ln(x)),x) = 2*x*cos(ln(x))+x*Eval(Diff(cos(_X),_X),_X = ln(x))

>    Rule[ cos ](%);

Diff(x^2*cos(ln(x)),x) = 2*x*cos(ln(x))-x*sin(ln(x))

>    ShowSteps();

Diff(x^2*cos(ln(x)),x) = Diff(x^2,x)*cos(ln(x))+x^2*Diff(cos(ln(x)),x)

`` = 2*x*cos(ln(x))+x^2*Diff(cos(ln(x)),x)

`` = 2*x*cos(ln(x))+x^2*Eval(Diff(cos(_X),_X),_X = ln(x))*Diff(ln(x),x)

`` = 2*x*cos(ln(x))+x*Eval(Diff(cos(_X),_X),_X = ln(x))

`` = 2*x*cos(ln(x))-x*sin(ln(x))

Can program this as a maplet

New visualization tools

The traditional way

>    with(plots):

>    shape_plot := proc(f1, a, b)

  local box, i, n, x1, x2, xmid, delta, y1, y2,
        A, B, slope, concav:
 
  n:= 100; delta := (b-a)/n; x2 := a;

  for i from 1 to n do
    x1 := evalf(x2);
    y1 := evalf( f(x1));
    x2 := evalf(a + i*delta);
    y2 := evalf( f(x2));
    xmid := x1 + delta/2;
    slope := evalf( subs( x = xmid, diff( f1, x )));
    concav := evalf( subs( x = xmid, diff( f1,x $ 2)));

    if( slope > 0 )
      then A[i]:=plot( f1, x = x1..x2,
                       color = blue, thickness = 4 );
      else A[i]:=plot( f1, x = x1..x2,
                       color = red, thickness = 2 );
    end if;
  
    if( concav > 0 )
      then B[i]:=polygonplot([[x1,0],[x1,y1],[x2,y2],[x2,0]],
                       color=sienna, style=patchnogrid);
      else B[i]:=polygonplot( [[x1,0],[x1,y1],[x2,y2],[x2,0]],
                            color=grey, style=patchnogrid);
    end if;
  end do;
 
display({ seq( A[i],i=1..n ),seq( B[i],i=1..n ) } );
end:

>    f := x-> sin(x);

f := sin

>    shape_plot( f(x), -Pi, 2*Pi);

[Maple Plot]

The new way

>    with( Student:-Calculus1 );

[AntiderivativePlot, ApproximateInt, ArcLength, Asymptotes, Clear, CriticalPoints, DerivativePlot, ExtremePoints, FunctionAverage, FunctionChart, GetMessage, GetNumProblems, GetProblem, Hint, Inflectio...
[AntiderivativePlot, ApproximateInt, ArcLength, Asymptotes, Clear, CriticalPoints, DerivativePlot, ExtremePoints, FunctionAverage, FunctionChart, GetMessage, GetNumProblems, GetProblem, Hint, Inflectio...
[AntiderivativePlot, ApproximateInt, ArcLength, Asymptotes, Clear, CriticalPoints, DerivativePlot, ExtremePoints, FunctionAverage, FunctionChart, GetMessage, GetNumProblems, GetProblem, Hint, Inflectio...
[AntiderivativePlot, ApproximateInt, ArcLength, Asymptotes, Clear, CriticalPoints, DerivativePlot, ExtremePoints, FunctionAverage, FunctionChart, GetMessage, GetNumProblems, GetProblem, Hint, Inflectio...
[AntiderivativePlot, ApproximateInt, ArcLength, Asymptotes, Clear, CriticalPoints, DerivativePlot, ExtremePoints, FunctionAverage, FunctionChart, GetMessage, GetNumProblems, GetProblem, Hint, Inflectio...
[AntiderivativePlot, ApproximateInt, ArcLength, Asymptotes, Clear, CriticalPoints, DerivativePlot, ExtremePoints, FunctionAverage, FunctionChart, GetMessage, GetNumProblems, GetProblem, Hint, Inflectio...
[AntiderivativePlot, ApproximateInt, ArcLength, Asymptotes, Clear, CriticalPoints, DerivativePlot, ExtremePoints, FunctionAverage, FunctionChart, GetMessage, GetNumProblems, GetProblem, Hint, Inflectio...

>    FunctionChart( sin(x)+x/2, x=-2*Pi..2*Pi );

[Maple Plot]

>    Tangent( 1/(x), x=2, output=plot );

[Maple Plot]

>    for i from 1 to 50 do
  p[i] := Tangent( sin(x), x = 1 + i/50, output=plot,
                   title="", view=[0..2,0..1.3] ):
end do:

display( seq( p[i], i=1..50 ), insequence=true );

[Maple Plot]

>    InversePlot( sin(x), x=0..4*Pi );

[Maple Plot]

>    SurfaceOfRevolution( sin(x), x=-Pi..Pi/2, output=plot );

[Maple Plot]

Evolutionary

Basic GUI Enhancements

Preferences Dialog Box

Spell Checker

Email a Worksheet from Maple 8

Enhanced Math Display

New Symbols for Set Operations

>    restart;

>    {3,4} union A union {3,7};

`union`(A,{3, 4, 7})

>    x in A;

`in`(x,A)

>    C intersect (A union B) ;

`intersect`(`union`(B,A),C)

>    expand( % );

`union`(`intersect`(C,B),`intersect`(C,A))

>   

Textbook Notation for Calculus and Vector Calculus

Derivatives

>    restart;

>    Diff( sin(x), x ) = diff(sin(x), x );

Diff(sin(x),x) = cos(x)

>   

Vectors and vector fields

Vector notation consistent with standard textbooks

>    with(VectorCalculus):

Warning, the assigned names <,> and <|> now have a global binding

Warning, these protected names have been redefined and unprotected: *, +, ., Vector, diff, int, limit, series

>    SetCoordinates( cartesian[x, y, z] ):

>    v := Vector( [a, b, c] );

v := Vector(%id = 19881176)

>    F := VectorField( < r^2, 1/theta >, polar[r, theta] );

F := Vector(%id = 31526388)

>   

Vector Calculus Package

>    restart;
with( plots ): with( plottools ):
with( VectorCalculus );

Warning, the name changecoords has been redefined

Warning, the name arrow has been redefined

Warning, the assigned names <,> and <|> now have a global binding

Warning, these protected names have been redefined and unprotected: *, +, ., Vector, diff, int, limit, series

[`&x`, `*`, `+`, `.`, `<,>`, `<|>`, AddCoordinates, ArcLength, BasisFormat, Binormal, CrossProduct, Curl, Curvature, Del, DirectionalDiff, Divergence, DotProduct, Flux, GetCoordinateParameters, GetCoor...
[`&x`, `*`, `+`, `.`, `<,>`, `<|>`, AddCoordinates, ArcLength, BasisFormat, Binormal, CrossProduct, Curl, Curvature, Del, DirectionalDiff, Divergence, DotProduct, Flux, GetCoordinateParameters, GetCoor...
[`&x`, `*`, `+`, `.`, `<,>`, `<|>`, AddCoordinates, ArcLength, BasisFormat, Binormal, CrossProduct, Curl, Curvature, Del, DirectionalDiff, Divergence, DotProduct, Flux, GetCoordinateParameters, GetCoor...
[`&x`, `*`, `+`, `.`, `<,>`, `<|>`, AddCoordinates, ArcLength, BasisFormat, Binormal, CrossProduct, Curl, Curvature, Del, DirectionalDiff, Divergence, DotProduct, Flux, GetCoordinateParameters, GetCoor...
[`&x`, `*`, `+`, `.`, `<,>`, `<|>`, AddCoordinates, ArcLength, BasisFormat, Binormal, CrossProduct, Curl, Curvature, Del, DirectionalDiff, Divergence, DotProduct, Flux, GetCoordinateParameters, GetCoor...
[`&x`, `*`, `+`, `.`, `<,>`, `<|>`, AddCoordinates, ArcLength, BasisFormat, Binormal, CrossProduct, Curl, Curvature, Del, DirectionalDiff, Divergence, DotProduct, Flux, GetCoordinateParameters, GetCoor...
[`&x`, `*`, `+`, `.`, `<,>`, `<|>`, AddCoordinates, ArcLength, BasisFormat, Binormal, CrossProduct, Curl, Curvature, Del, DirectionalDiff, Divergence, DotProduct, Flux, GetCoordinateParameters, GetCoor...

Textbook notation for vectors

>    u := <a, b, -6>;

u := Vector(%id = 19689604)

>    v := Vector([b, a, 0]);

v := Vector(%id = 19689804)

>    SetCoordinates( spherical[r, theta, phi] );

spherical[r,theta,phi]

>    v2 := Vector([r^2, theta+phi, 1]);

v2 := Vector(%id = 2957120)

Vector arithmetic

>    u + v;

Vector(%id = 20044092)

>    u . v;

2*a*b

>    u &x v;

Vector(%id = 2857460)

Calculus of multivariable functions

>    f := w^2 + x^2 + y^2 + z^2;

f := w^2+x^2+y^2+z^2

>    SetCoordinates( cartesian );

cartesian

>    Grad_f := Gradient( f, [w, x, y, z] );

Grad_f := Vector(%id = 20180332)

>    Hess_f := Hessian( f, [w, x, y, z] );

Hess_f := Matrix(%id = 20216172)

>    Lapl_f := Laplacian( T(r,theta), polar[r,theta] );

Lapl_f := 1/r*(diff(T(r,theta),r)+r*diff(T(r,theta),`$`(r,2))+1/r*diff(T(r,theta),`$`(theta,2)))

Integration over structured regions

>    int( 1, [x,y,z] = Sphere(<0,0,0>, r) );

4/3*Pi*r^3

>    p1 := plot3d( x^2+y^2, x=0..1, y=0..1, color=blue):
p2 := implicitplot3d( y=x^2, x=0..1, y=0..1, z=0..1, color=green):
p3 := implicitplot3d( y=x, x=0..1, y=0..1, z=0..1, color=red):
p4 := plot3d( 0, x=0..1, y=0..1, color=grey):
display(p1,p2,p3,p4, axes=boxed);

[Maple Plot]

>    int( x+y, [x,y,z] = Region( 0..1, x^2..x, x^2+y^2..1 ));

103/2520

Example Problem

Let F be the vector field `<,>`(-y^3,x^3, -z^3) .
(1) Compute the line integral
int(`<,>`(-y^3,x^3,-z^3),C)  where C  is the intersection of the plane
z = 1 - x - y
 and the unit cylinder.

(2) Repeat (2) using Stokes' theorem: int(F,C) = int(curl(F),S)

>    F := VectorField( <-y^3, x^3, -z^3>, cartesian[x,y,z] );

F := Vector(%id = 2994200)

>    fp := fieldplot3d( F, x=-1..1, y=-1..1, z=-1..2,
                   axes=boxed, color=blue ):
cyl := cylinder( [0,0,-1], 1,3.5, color=grey, capped=false):
plane := plot3d( 1-x-y, x=-1..1, y=-1..1,
                color=pink, style=patchnogrid):
display( cyl, plane, fp );

[Maple Plot]

(1) Directly

>    C := <cos(t), sin(t), 1-sin(t)-cos(t)>;

C := Vector(%id = 22358260)

>    LineInt( F, Path( C, t=0..2*Pi ) );

3/2*Pi

(2) Using Stokes' theorem

>    curl_F := Del &x F;

curl_F := Vector(%id = 21672956)

>    S := < r*cos(t), r*sin(t), 1-r*sin(t)-r*cos(t) >;

S := Vector(%id = 3020356)

>    Flux( curl_F, Surface( S, r = 0..1, t = 0..2*Pi ) );

3/2*Pi

>   

Numeric Solutions of PDE Boundary Value Problems

>    restart;
with(VectorCalculus):

Warning, the assigned names <,> and <|> now have a global binding

Warning, these protected names have been redefined and unprotected: *, +, ., Vector, diff, int, limit, series

Example: Vibration of a cord

diff(u(x,t),`$`(t,2)) = diff(u(x,t),`$`(x,2))/(c^2)

u(0,t) = 0 ,
u(1,t) = 0 ,

u(x,0) = g(x) , and

diff(u(x,0),t) = f(x)

Wave equation and boundary values

>    WaveEquation := { diff( u(x,t), t, t)
                  = Laplacian( u(x,t), cartesian[x])/10 };

WaveEquation := {diff(u(x,t),`$`(t,2)) = 1/10*diff(u(x,t),`$`(x,2))}

>    BoundaryValues := {u(0,t) = 0, u(1,t) = 0, D[2](u)(x,0)=0,
                   u(x,0)=piecewise( x >= 0 and x <= 1/2, x,
                                     x > 1/2 and x <= 1, 1-x)};

BoundaryValues := {u(x,0) = PIECEWISE([x, -x <= 0 and x-1/2 <= 0],[1-x, -x < -1/2 and x-1 <= 0]), u(0,t) = 0, u(1,t) = 0, D[2](u)(x,0) = 0}
BoundaryValues := {u(x,0) = PIECEWISE([x, -x <= 0 and x-1/2 <= 0],[1-x, -x < -1/2 and x-1 <= 0]), u(0,t) = 0, u(1,t) = 0, D[2](u)(x,0) = 0}

Solve it

>    sol := pdsolve( WaveEquation, BoundaryValues,
                numeric, spacestep=1/200, timestep=10 ):

sol:-animate( u(x,t) ,t=0..2*Pi, frames=30,
              labels=["x","u(x,t)"],
              labelfont=[TIMES,ROMAN,14], scaling=constrained );

[Maple Plot]

>    BoundaryValues := {u(0,t) = 0, u(1,t) = 0, D[2](u)(x,0)=0,
                   u(x,0)= sin(4*Pi*x)};

BoundaryValues := {u(x,0) = sin(4*Pi*x), u(0,t) = 0, u(1,t) = 0, D[2](u)(x,0) = 0}

Solve it

>    sol := pdsolve( WaveEquation, BoundaryValues, numeric,
                spacestep=1/200, timestep=1/100 ):

sol:-animate( u(x,t) ,t=0..2*Pi, frames=60,
              labels=["x","u(x,t)"],
              labelfont=[TIMES,ROMAN,14]);

[Maple Plot]

>   

Scientific Constants and the Periodic Table

>    restart;
with( ScientificConstants );

[AddConstant, AddElement, AddProperty, Constant, Element, GetConstant, GetConstants, GetElement, GetElements, GetError, GetIsotopes, GetProperties, GetProperty, GetUnit, GetValue, HasConstant, HasEleme...
[AddConstant, AddElement, AddProperty, Constant, Element, GetConstant, GetConstants, GetElement, GetElements, GetError, GetIsotopes, GetProperties, GetProperty, GetUnit, GetValue, HasConstant, HasEleme...
[AddConstant, AddElement, AddProperty, Constant, Element, GetConstant, GetConstants, GetElement, GetElements, GetError, GetIsotopes, GetProperties, GetProperty, GetUnit, GetValue, HasConstant, HasEleme...

Physical Constants

>    GetConstant( M[Sun] );
GetConstant( h );

mass_of_Sun, symbol = M[Sun], value = .199e31, uncertainty = .5e28, units = kg

Planck_constant, symbol = h, value = .662606876e-33, uncertainty = .52e-40, units = J*s
Planck_constant, symbol = h, value = .662606876e-33, uncertainty = .52e-40, units = J*s

Chemical Elements and Isotopes

>    GetElement( Au );

79, symbol = Au, name = gold, names = {gold}, boilingpoint = [value = 3129., uncertainty = undefined, units = K], atomicweight = [value = 196.96655, uncertainty = .2e-4, units = u], meltingpoint = [val...
79, symbol = Au, name = gold, names = {gold}, boilingpoint = [value = 3129., uncertainty = undefined, units = K], atomicweight = [value = 196.96655, uncertainty = .2e-4, units = u], meltingpoint = [val...
79, symbol = Au, name = gold, names = {gold}, boilingpoint = [value = 3129., uncertainty = undefined, units = K], atomicweight = [value = 196.96655, uncertainty = .2e-4, units = u], meltingpoint = [val...
79, symbol = Au, name = gold, names = {gold}, boilingpoint = [value = 3129., uncertainty = undefined, units = K], atomicweight = [value = 196.96655, uncertainty = .2e-4, units = u], meltingpoint = [val...
79, symbol = Au, name = gold, names = {gold}, boilingpoint = [value = 3129., uncertainty = undefined, units = K], atomicweight = [value = 196.96655, uncertainty = .2e-4, units = u], meltingpoint = [val...
79, symbol = Au, name = gold, names = {gold}, boilingpoint = [value = 3129., uncertainty = undefined, units = K], atomicweight = [value = 196.96655, uncertainty = .2e-4, units = u], meltingpoint = [val...
79, symbol = Au, name = gold, names = {gold}, boilingpoint = [value = 3129., uncertainty = undefined, units = K], atomicweight = [value = 196.96655, uncertainty = .2e-4, units = u], meltingpoint = [val...
79, symbol = Au, name = gold, names = {gold}, boilingpoint = [value = 3129., uncertainty = undefined, units = K], atomicweight = [value = 196.96655, uncertainty = .2e-4, units = u], meltingpoint = [val...

>    GetValue( Element( Au, meltingpoint ) );

1337.33

List the isotopes of an element

>    GetIsotopes( element=Cf );

Cf[237], Cf[238], Cf[239], Cf[240], Cf[241], Cf[242], Cf[243], Cf[244], Cf[245], Cf[246], Cf[247], Cf[248], Cf[249], Cf[250], Cf[251], Cf[252], Cf[253], Cf[254], Cf[255], Cf[256]
Cf[237], Cf[238], Cf[239], Cf[240], Cf[241], Cf[242], Cf[243], Cf[244], Cf[245], Cf[246], Cf[247], Cf[248], Cf[249], Cf[250], Cf[251], Cf[252], Cf[253], Cf[254], Cf[255], Cf[256]

Adding Your Own Constants

>    AddConstant( hydrogen_mass, symbol=m[H], value=1.67353404*10^(-27), units=kg );

>    GetConstant( m[H] );

hydrogen_mass, symbol = m[H], value = .1673534040e-26, uncertainty = undefined, units = kg
hydrogen_mass, symbol = m[H], value = .1673534040e-26, uncertainty = undefined, units = kg

Maplet Interface to the Periodic Table

>   

Java Interactivity

>    restart;
with( CodeGeneration );

[C, Fortran, Java]

>    ExampleProc := proc( x, y, z )
  local h;

  h := cosh(x^2+y^2+z^2);

  if abs(x) > abs(y) then h;
  else -h;
  end if;

end proc:

>    Java( ExampleProc );

import java.lang.Math;

class CodeGenerationClass {

  public static double ExampleProc (double x, double y, double z)

  {

    double h;

    double cgret;

    h = (Math.exp(x * x + y * y + z * z) + Math.exp(-1.0 * (x * x + y * y + z * z)))/2.0;

    if (Math.abs(y) < Math.abs(x))

      cgret = h;

    else

      cgret = -h;

    return(cgret);

  }

}

>   

Packages for Advanced Mathematics Research

Calculus of Variations

>    with( VariationalCalculus );

[ConjugateEquation, Convex, EulerLagrange, Jacobi, Weierstrass]

Symbolic-Numeric Algorithms for Polynomials

>    with( SNAP );

[AreCoprime, DistanceToCommonDivisors, DistanceToSingularPolynomials, EpsilonGCD, EuclideanReduction, IsSingular, QuasiGCD, Quotient, Remainder]
[AreCoprime, DistanceToCommonDivisors, DistanceToSingularPolynomials, EpsilonGCD, EuclideanReduction, IsSingular, QuasiGCD, Quotient, Remainder]

Matrix Polynomial Algebra

>    with( MatrixPolynomialAlgebra );

[Coeff, ColumnReducedForm, Degree, HermiteForm, Lcoeff, Ldegree, LeftDivision, MahlerSystem, MatrixGCLD, MatrixGCRD, MatrixLCLM, MatrixLCRM, MinimalBasis, PopovForm, RightDivision, RowReducedForm, Smit...
[Coeff, ColumnReducedForm, Degree, HermiteForm, Lcoeff, Ldegree, LeftDivision, MahlerSystem, MatrixGCLD, MatrixGCRD, MatrixLCLM, MatrixLCRM, MinimalBasis, PopovForm, RightDivision, RowReducedForm, Smit...
[Coeff, ColumnReducedForm, Degree, HermiteForm, Lcoeff, Ldegree, LeftDivision, MahlerSystem, MatrixGCLD, MatrixGCRD, MatrixLCLM, MatrixLCRM, MinimalBasis, PopovForm, RightDivision, RowReducedForm, Smit...

Modular Linear Algebra

>    with( LinearAlgebra:-Modular );

[AddMultiple, Adjoint, BackwardSubstitute, Basis, ChineseRemainder, Copy, Create, Determinant, Fill, ForwardSubstitute, Identity, Inverse, LUApply, LUDecomposition, LinIntSolve, MatBasis, MatGcd, Mod, ...
[AddMultiple, Adjoint, BackwardSubstitute, Basis, ChineseRemainder, Copy, Create, Determinant, Fill, ForwardSubstitute, Identity, Inverse, LUApply, LUDecomposition, LinIntSolve, MatBasis, MatGcd, Mod, ...
[AddMultiple, Adjoint, BackwardSubstitute, Basis, ChineseRemainder, Copy, Create, Determinant, Fill, ForwardSubstitute, Identity, Inverse, LUApply, LUDecomposition, LinIntSolve, MatBasis, MatGcd, Mod, ...
[AddMultiple, Adjoint, BackwardSubstitute, Basis, ChineseRemainder, Copy, Create, Determinant, Fill, ForwardSubstitute, Identity, Inverse, LUApply, LUDecomposition, LinIntSolve, MatBasis, MatGcd, Mod, ...

>