~~NOTOC~~ ====== Computer Algebra Systems (CAS) ====== Computer algebra systems, such as Mathematica, Maple, SageMath, Matlab's Symbolic Math Toolbox, etc. are very useful for the following tasks (ranked in importance): * 1 = Deriving and manipulating exact closed-form quantities or special functions, including pattern recognition * 2 = Numerical scratchpad for exploration * 2 = High precision computations and variable precision arithmetic * 3 = (Floating-point) Numerical analysis and numerical solutions In terms of alternatives to the above tasks, there is no real alternative to item 1 in terms of conventional software you will use. Items ranked 2-3 all have alternatives, e.g. Python, Matlab, C++, etc. ===== Choosing a software ===== * Unfortunately, as far as I'm aware, there is no good competitor to Mathematica (education license \$1k; student license \$70/year). Maple is probably the closest, but it was previously unsatisfactory for my needs. * There is no good open source alternative...as far as I know. Perhaps we should do a benchmark test? ===== Example 1: using Mathematica as a scratchpad ===== * Simple 2D, 3D, and contour plotting. * Use of special functions * Obtaining precision * FullSimplify and identities * DSolve, NDSolve, and RSolve ===== Example 2: quadrature ===== I will do an example showing quadrature using Mathematica. This will look at the [[https://en.wikipedia.org/wiki/Hundred-dollar,_Hundred-digit_Challenge_problems|SIAM 100-digit challenge]] problem 1. ===== Example 3: series expansions ===== I will do a basic asymptotic expansion example to show the series functionality ===== Example 4: contour plotting ===== A script from before showing contour plotting ===== The philosophy of CAS vs floating point coding =====