This is the front page of the SandBox. You can try anything you like
here but keep in mind that other people are also using these pages to
learn and experiment with FriCAS and Reduce. Please be courteous to
others if you correct mistakes and try to explain what you are doing.
No Email Notices
Normally, if you edit
any page on MathAction and click
Save
or if you add a comment to a page, a notice of the
change is sent out to all subscribers on the axiom-developer
email list, see the [Axiom Community]?. Separate notices are
also sent to those users who subscribe
directly to
MathAction.
Use Preview
If you click Preview
instead of Save
, you will get a chance
to see the result of your calculations and LaTeX commands but
no email notice is sent out and the result is not saved until
you decide to click Save
or not.
Use the SandBox
On this page or on any other page with a name beginning with
SandBox such as SandBoxJohn2, SandBoxSimple, SandBoxEtc, clicking
Save
only sends email notices to users who subscribe
directly to that specific SandBox page. Saving and adding
comments does not create an email to the email list. You
can safely use these pages for testing without disturbing
anyone who might not care to know about your experiments.
SandBox Pages
You can also create new SandBox pages as needed just by
editing this page and adding a link to the list of new page
below. The link must include at least two uppercase letters
and no spaces or alternatively it can be any phrase written
inside [ ] brackets as long as it begins with SandBox. When
you Save this page, the link to the new page will appear with
a blue question mark ? beside it.
Clicking on the blue question mark ?
will ask you if you wish to create a new page.
- SandBox Aldor Category Theory
- based on
"Prospects for Category Theory in Aldor" by Saul Youssef, 2004
http://atlas.bu.edu/~youssef/papers/math/aldor/aldor.pdf
- SandBox Aldor Foreign
- Using Aldor to call external C routines
- SandBox Aldor Generator
- Aldor defines a
generator
for type Vector
- SandBox Aldor Join and Meet
- Aldor has category constructor named
Meet which appears to be analogous to (but opposite of) Join.
- SandBox Aldor Semantics
- exports and constants
- SandBox Aldor Sieve
- A prime number sieve in Aldor to count primes <= n.
- SandBox Aldor Testing
- Using Aldor to write Axiom library routines
- SandBox Arrays
- How fast is array access in FriCAS?
- SandBox Boolean
- evaluating Boolean expressions and conditions
- SandBox Cast
- Meaning and use of
pretend
vs. strong typing
- SandBox Categorical Relativity
- Special relativity without the Lorentz group
- SandBox Category of Graphs
- Graph theory in FriCAS
- SandBoxCL-WEB
- Tangle operation for literate programming implemented in Common Lisp
- SandBox Combinat
- A{ld,xi}o{r,m}Combinat
SandBoxCS224
- SandBox Direct Product
- A x B
- SandboxTypeDefinitions
- What does the type means for you?
- FriCASEmacsMode
- Beginnings of an Emacs mode for FriCAS based off of Jay's work and others
- SandBox Embeded PDF
- pdf format documents can be displayed inline
- SandBox EndPaper
- Algebra and Data Structure Hierarchy (lattice) diagrams
- SandBox Folding
- experiments with DHTML, javascript, etc.
- SandBox Functional Addition
- "adding" two functions
- SandBox Functions
- How do they work?
- SandBox Gamma
- Numerical evaluation of the incomplete Gamma function
- SandBox GuessingSequence
- Guessing integer sequences
- SandBox Integration
- Examples of integration in FriCAS and Reduce
- SandBox Kernel
- What is a "kernel"?
SandBox kaveh
- SandBox LaTeX
- LaTeX commands allowed in MathAction
- SandBox Lisp
- Using Lisp in FriCAS
- SandBox Manip
- expression manipulations
- SandBox Manipulating Domains
- testing the domain of an expression
- SandBox Mapping
- A->B is a type in FriCAS
MathMLFormat
- SandBox Matrix
- Examples of working with matrices in FriCAS
- SandBox Maxima
- Testing the Maxima interface
- SandBox Monoid
- Rings and things
- SandBox Monoid Extend
- Martin Rubey's beautiful idea about using
extend
to add a category to a previously defined domain.
- SandBox Numerical Integration
- Simpson method
- SandBox NNI
- NonNegative? Integer without using SubDomain
- SandBox Pamphlet
- Literate Programming support on MathAction
- SandBoxPartialFraction
- Trigonometric expansion example
- SandBoxPfaffian
- Computing the Pfaffian of a square matrix
- SandBox Polymake
- an interface between FriCAS and PolyMake
- SandBox Polynomials
- FriCAS polynomial domains are certainly
rich and complex!
- SandBox ProblemSolving
- Test page for educational purposes
- SandBox Qubic
- Solving cubic polynomials
- SandBox Reflection in Aldor
- a reflection framework
- SandBoxRelativeVelocity
- Slides for IARD 2006: Addition of
Relative Velocites is Associative
- SandBox Risch
- Find primitive of univariate functions
- SandBox Sage
- This is a test of Sage in MathAction
- SandBox Shortcoming
- Implementation of solve
- SandBox Solve
- Solving equations
- SandBox SPAD dependent types
- SPAD: parameter-dependent types in function definitions
- SandBox Statistics
- calculating statistics in FriCAS
- SandBox SubDomain
- What is a SubDomain?
- SandBox Tail Recursion
- When does FriCAS replace recursion with iteration?
- SandBox Text Files
- How to access text files in FriCAS
- SandBox Trace Analysed
- Tracing can affect output of
1::EXPR INT
or 1::FRAC INT
- SandBox Units and Dimensions
- Scientific units and dimensions
- SandBox Spad
- Domain construction
- SandBox Speed
- Compilation speed
Sandbox Variables Evaluation
SandBox Zero
- SandBoxJohn2
- Experiments with matrices and various other stuff
- SandBox2
- Experiments
- SandBox3
- Experiments
- SandBoxSymbolicInverseTrig
- Experiments
- SandBoxGraphviz
- Experiments with GraphViz and StructuredTables
- SandBoxDifferentialEquations
- Differential Equations etc.
- SandBoxMatrixExample
- SandBoxRotationMatrix
- Here you can create your own SandBox.
- SandBox9
- Experiments with JET Bundles
- SandBoxGnuDraw
- Miscellaneous
- SandBox11
- Miscellaneous
SandBox12TestIndetAndComplex
- SolvingDifferentialEquations
- Solving some nonlinear differential equations
- SandBox42
- Miscellaneous
- SandBox DoOps
- used to run FriCAS without actually have to have it installed!
SandBoxKMG
SandBoxDGE
- SandBoxMLE
- Maximum likelihood estimation (statistics)
- SandBoxFisher
- Fisher's exact test for 2x2 tables (statistics)
- SandBoxNewtonsMethod
- Newton's method for numerically solving f(x)=0
(with examples of calling FriCAS expressions and Spad functions from Lisp).
- SandBoxVeryLongLaTeX
- Test long lines
- SandBox Complementsdalgebrelineaire
- Francois Maltey
- SandBoxFriCAS
- page for testing FriCAS
- SandBoxEcfact
- Aldor compiler problem?
- SandBoxMyReduce
- calling reduce with empty list
- SandBoxCategoryTerms
- Category theory terminology used in SPAD
- SandBoxRealSpace
- Some tests to mimic R^n
- SandBoxProp
- First order language over comparable types (tests for qel)
- SandBoxGeom1
- Cells and k-surfaces (preps for manifold<-charts)
- SandBoxPQTY
- Some tests for pqty buckingham pi (physical quantities)
- SandBoxTensorProduct3
- Tensor product of three different spaces: U#V#W
- SandBoxSurfaceComplex
- Some tests for k-cells and k-surfaces (Rudin/PMMA)
- SandBoxUnify
- Some unification tests
- SandBoxJacobiDiagFloat
- Jacobi diagonalization algorithm
- SandBoxJacobiDiagIntervalFloat
- Jacobi diagonalization algorithm (Interval Float)
- SandBoxPhysicalUnitSystem
- Physical unit systems (FreeAbelianGroup? replaced)
- SandBoxHyperGeometric
- Book A=B
- SandBoxLinearProgramming
- Revised simplex method
- SandBoxDOPT
- Discrete optimal transport
- SandBoxJacobiDiag
- Jacobi diagonalisation
- SandBoxRootOfUnity
- Roots of unity, https://en.wikipedia.org/wiki/Root_of_unity
- SandBoxDFT
- Discrete Fourier Transform
- SandBoxSEXPM
- SExpression? pattern matching (unifier)
- SandBoxSSPM
- SuperSimplePatternMatcher? (http://www.cs.northwestern.edu/academics/courses/325/readings/pat-match.php)
- SandBoxFORMAN
- Interactive Computer Manipulation of Formal Sums (http://www.csd.uwo.ca/~watt/home/students/theses/NPatil2010-msc.pdf)
- SandBoxDFORM
- Differential forms (graded)
- SandBoxINFSUM
- Test SBCL 1.1 (table matching/lookup using unification)
- SandBoxTensorPower
- Demo Issues (n:PI ???)
- SandBoxTensorAlgebra
- Idea: use GradedAlgebra? and TensorPower? without n.
- SandBoxDemoFreeMonoid/-Module
- Combine monoid/module for algebra like impls.
- SandBoxDemoXFreeAlgebra
- Demo XDistributedPolynomial(B,R) (see above)
- SandBoxTensorAlgebra2
- Least effort solution using XFreeAlgebra?
- SandBoxTensorAlgebra3
- Simplified; -GradedAlgebra?; +Ring (any)
- DependentTypeTest1
- Cat A, Doms B,C,D.
- SymbolInteger
- Package to convert symbols _123 to integers 123 and vv.
- DependentTypeTest2
- CoChainCat?, ZeroChainCat?
- HyperG
- Some tests for ident hyperg funcs (Ref: A=B, Wilf & Co,)
new
SandBox
Click on the ? to create a new page.
You should also edit this page to include a description and a new empty
link for the next person.
Examples
Here is a simple FriCAS command:
\begin{axiom}
integrate(1/(a+z^3), z=0..1,"noPole")
\end{axiom}
fricas
(1) -> integrate(1/(a+z^3), z=0..1,"noPole")
Type: Union(f1: OrderedCompletion
?(Expression(Integer)),
...)
And here is a REDUCE command:
\begin{reduce}
load_package sfgamma;
load_package defint;
int(1/(a+z^3), z,0,1);
\end{reduce}
load_package sfgamma;
load_package defint;
int(1/(a+z^3), z,0,1); | reduce |
Common Mistakes
Please review the list of Common Mistakes and the list
of MathAction Problems if you are have never used
MathAction before. If you are learning to use FriCAS and think
that someone must have solved some particular problem before
you, check this list of Common FriCAS Problems.
fricas
solve(a*x+b,x)
Type: List(Equation(Fraction(Polynomial(Integer))))
SandBoxNonAssociativeAlgebra
Testing lexical scoping rules in
SandBoxLexicalScope.
SandBoxOverloading
SandBoxSum (like Product)
SandBoxSymbolic
For example:
SandBoxLeftFreeModule
This is a test of the
Preview
and
Cancel
buttons:
fricas
integrate(sin x, x)
Type: Union(Expression(Integer),...)
SandBoxCombinat
SandBoxEquation
? SandBoxInequation SandBoxInequality
?
SandBoxAdjacencyMatrix
SandBoxGnuPlotTex
SandBoxDefineInteger
SandBoxCommutativeCategory
SandBoxLiteral
SandBoxPartiallyOrderedSet
in response to an exchange of emails with Gabriel Dos Reis
concerning the validity of automatic translations of x >= y
into not x < y, etc.
SandBox/interp/i-funsel.boot
SandBoxTensorProductPolynomial
spad
)abbrev package REFL Reflect
Reflect(T:Type): with
constructor? : Symbol -> Boolean
== add
constructor?(p:Symbol):Boolean == car(devaluate(T)$Lisp)$SExpression = convert(p)$SExpression
spad
Compiling FriCAS source code from file
/var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/2684009892188271010-25px004.spad
using old system compiler.
REFL abbreviates package Reflect
------------------------------------------------------------------------
initializing NRLIB REFL for Reflect
compiling into NRLIB REFL
compiling exported constructor? : Symbol -> Boolean
Time: 0 SEC.
(time taken in buildFunctor: 0)
;;; *** |Reflect| REDEFINED
;;; *** |Reflect| REDEFINED
Time: 0 SEC.
Cumulative Statistics for Constructor Reflect
Time: 0 seconds
finalizing NRLIB REFL
Processing Reflect for Browser database:
--->-->Reflect(constructor): Not documented!!!!
--->-->Reflect((constructor? ((Boolean) (Symbol)))): Not documented!!!!
--->-->Reflect(): Missing Description
; compiling file "/var/aw/var/LatexWiki/REFL.NRLIB/REFL.lsp" (written 07 DEC 2024 04:18:13 AM):
; wrote /var/aw/var/LatexWiki/REFL.NRLIB/REFL.fasl
; compilation finished in 0:00:00.004
------------------------------------------------------------------------
Reflect is now explicitly exposed in frame initial
Reflect will be automatically loaded when needed from
/var/aw/var/LatexWiki/REFL.NRLIB/REFL
fricas
T1:=Integer
Type: Type
fricas
T2:=Polynomial Fraction T1
Type: Type
fricas
T3:=Complex T2
Type: Type
fricas
constructor?('Polynomial)$Reflect(T1)
Type: Boolean
fricas
constructor?('Polynomial)$Reflect(T2)
Type: Boolean
fricas
constructor?('Polynomial)$Reflect(T3)
Type: Boolean
fricas
constructor?('Complex)$Reflect(T3)
Type: Boolean
SandBoxConditionalFunctions
SandBoxNonZeroInteger is an attempt to define the domain of Integers without 0.
SandboxDelay
SandBoxHiddenOverloading
SandBoxTensorProduct by Franz Lehner
SandBoxComplexManifold
SandBoxDifferentialPolynomial
SandBoxGrassmannIsometry - All mappings that preserve a given metric are given in terms of the decomposition of a general multivector.
SandBoxFreeProduct
This domain implements the free product of monoids (or groups)
It is the coproduct in the category of monoids (groups).
FreeProduct(A,B)
is the monoid (group) whose elements are
the reduced words in A and B, under the operation of concatenation
followed by reduction:
- Remove identity elements (of either A or B)
- Replace a1a2 by its product in A and b1b2 by its product in B
Ref: http://en.wikipedia.org/wiki/Free_product
Franz Lehner provided the following example of caching the output of a function:
SandBoxRemember
MortonCode (also called z-order) is a method of combining multidimensional "coordinates" into a one-dimensional coordinate or "code" that attempts to preserve locality, i.e. minimize the average Euclidean distance between coordinate locations associated with adjacent codes. Morton codes are computationally less expensive to convert to and from coordinate values than Hilbert codes.
ExampleGroebnerBasis2 examples from
Ideals, Varieties, and Algorithms Third Edition, 2007
FrobeniusAlgebraVectorSpacesAndPolynomialIdeals Classifying low dimensional Frobenius algebras
SandBoxSTRING2SPAD demonstrates how to call the [SPAD]
? compiler from the interpreter.
SandBoxObserverAsIdempotent
FriCAS
fricas
g:=1/(x*(1-a*(1-x)))
Type: Fraction(Polynomial(Integer))
fricas
integrate(g,x)
Type: Union(Expression(Integer),...)
Sympy
Mathematica
fricas
)set output algebra on
fricas
)set output tex off
r1:=(16*x^14-125*x^10+150*x^6+375*x^2)/(256*x^16+480*x^12+1025*x^8+750*x^4 +625)
14 10 6 2
16 x - 125 x + 150 x + 375 x
(13) ------------------------------------------
16 12 8 4
256 x + 480 x + 1025 x + 750 x + 625
Type: Fraction(Polynomial(Integer))
fricas
r2:=integrate(r1,x=0..1);
Type: Union(f1: OrderedCompletion
?(Expression(Integer)),
...)
fricas
numeric r2
(15) 0.1239829519_8500641246
Type: Float
fricas
unparse(simplify(r2)::InputForm)
(16)
"((-77)*((53*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)*log(((400*5^(1/2)+5000)*((5
3*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)+(20*5^(1/2)+200))/(5^(1/2)))+(77*(((-5
3)*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)*log(((16400*5^(1/2)+37000)*(((-53)*5^
(1/2)+124)/(106480*5^(1/2)))^(1/2)+(70*5^(1/2)+200))/(5^(1/2)))+((-77)*(((-53
)*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)*log((((-16400)*5^(1/2)+(-37000))*(((-5
3)*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)+(70*5^(1/2)+200))/(5^(1/2)))+(77*((53
*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)*log((((-400)*5^(1/2)+(-5000))*((53*5^(1
/2)+124)/(106480*5^(1/2)))^(1/2)+(20*5^(1/2)+200))/(5^(1/2)))+((-308)*(((-53)
*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)*atan(((105*5^(1/2)+(-200))*((53*5^(1/2)
+124)/(106480*5^(1/2)))^(1/2)+5^(1/2))/((105*5^(1/2)+200)*(((-53)*5^(1/2)+124
)/(106480*5^(1/2)))^(1/2)))+(308*(((-53)*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)
*atan(((105*5^(1/2)+(-200))*((53*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)+(-1)*5^
(1/2))/((105*5^(1/2)+200)*(((-53)*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)))+(308
*((53*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)*atan(((105*5^(1/2)+200)*(((-53)*5^
(1/2)+124)/(106480*5^(1/2)))^(1/2)+5^(1/2))/((105*5^(1/2)+(-200))*((53*5^(1/2
)+124)/(106480*5^(1/2)))^(1/2)))+((-308)*((53*5^(1/2)+124)/(106480*5^(1/2)))^
(1/2)*atan(((105*5^(1/2)+200)*(((-53)*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)+(-
1)*5^(1/2))/((105*5^(1/2)+(-200))*((53*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)))
+10))))))))/154"
Type: String
fricas
r3:=integrate(r1,x);
Type: Union(Expression(Integer),...)
fricas
unparse(simplify(r3)::InputForm)
(18)
"(((-176)*x^8+(-165)*x^4+(-275))*((53*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)*lo
g((420*x*5^(1/2)+(-800)*x)*((53*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)+(2*x^2*5
^(1/2)+5))+((176*x^8+165*x^4+275)*(((-53)*5^(1/2)+124)/(106480*5^(1/2)))^(1/2
)*log((420*x*5^(1/2)+800*x)*(((-53)*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)+(2*x
^2*5^(1/2)+5))+(((-176)*x^8+(-165)*x^4+(-275))*(((-53)*5^(1/2)+124)/(106480*5
^(1/2)))^(1/2)*log(((-420)*x*5^(1/2)+(-800)*x)*(((-53)*5^(1/2)+124)/(106480*5
^(1/2)))^(1/2)+(2*x^2*5^(1/2)+5))+((176*x^8+165*x^4+275)*((53*5^(1/2)+124)/(1
06480*5^(1/2)))^(1/2)*log(((-420)*x*5^(1/2)+800*x)*((53*5^(1/2)+124)/(106480*
5^(1/2)))^(1/2)+(2*x^2*5^(1/2)+5))+(((-352)*x^8+(-330)*x^4+(-550))*(((-53)*5^
(1/2)+124)/(106480*5^(1/2)))^(1/2)*atan(((105*5^(1/2)+(-200))*((53*5^(1/2)+12
4)/(106480*5^(1/2)))^(1/2)+x*5^(1/2))/((105*5^(1/2)+200)*(((-53)*5^(1/2)+124)
/(106480*5^(1/2)))^(1/2)))+((352*x^8+330*x^4+550)*(((-53)*5^(1/2)+124)/(10648
0*5^(1/2)))^(1/2)*atan(((105*5^(1/2)+(-200))*((53*5^(1/2)+124)/(106480*5^(1/2
)))^(1/2)+(-1)*x*5^(1/2))/((105*5^(1/2)+200)*(((-53)*5^(1/2)+124)/(106480*5^(
1/2)))^(1/2)))+((352*x^8+330*x^4+550)*((53*5^(1/2)+124)/(106480*5^(1/2)))^(1/
2)*atan(((105*5^(1/2)+200)*(((-53)*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)+x*5^(
1/2))/((105*5^(1/2)+(-200))*((53*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)))+(((-3
52)*x^8+(-330)*x^4+(-550))*((53*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)*atan(((1
05*5^(1/2)+200)*(((-53)*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)+(-1)*x*5^(1/2))/
((105*5^(1/2)+(-200))*((53*5^(1/2)+124)/(106480*5^(1/2)))^(1/2)))+(5*x^7+35*x
^3)))))))))/(176*x^8+165*x^4+275)"
Type: String
fricas
r4:=D(r3,x);
Type: Expression(Integer)
fricas
--simplify(r1-r4)
--normalize(r1-r4)
r5:=eval(r1-r4,x=10);
Type: Expression(Integer)
fricas
numeric r5
(21) 0.0
Type: Float
fricas
)set output algebra on
sin(x^b)
b
(22) sin(x )
Type: Expression(Integer)
fricas
D(%,x)
b - 1 b
(23) b x cos(x )
Type: Expression(Integer)
fricas
D(%,x)
2 b - 1 2 b 2 b - 2 b
(24) - b (x ) sin(x ) + (b - b)x cos(x )
Type: Expression(Integer)
fricas
)set output algebra off
fricas
)set output tex on
fricas
guessRec([1,1,0,1,- 1,2,- 1,5,- 4,29,- 13,854,- 685])
Type: List(Expression(Integer))
fricas
integral(x^2, x)
Type: Expression(Integer)
fricas
integrate(x^2, x)
Type: Polynomial(Fraction(Integer))
fricas
integrate(log(m*x+b),x)
Type: Union(Expression(Integer),...)
fricas
integrate(log(m*x+b) * exp(-(log(x) - mu)^2 / (2*sigma^2)) / (X*sigma*sqrt(2*pi)), x)
Type: Union(Expression(Integer),...)
fricas
integrate(log(b) * exp(-(log(x) - mu)^2 / (2*sigma^2)) / (X*sigma*sqrt(2*pi)), x)
Type: Union(Expression(Integer),...)