login  home  contents  what's new  discussion  bug reports     help  links  subscribe  changes  refresh  edit

A short demonstration of Axiom

An important thing: all objects in Axiom have a type. This enables us to give a simple demonstration of the Cayley-Hamilton theorem.

Let n equal 4. The semicolon at the end of the input tells Axiom not to display the result. Thus, only its type is shown:

axiom
n := 4;
Type: PositiveInteger

We define an abbreviation: let SM be the ring of quadratic n\times n matrices with rational functions as entries:

axiom
SM ==> SquareMatrix(n, FRAC POLY INT)
Type: Void

Let M be a generic 4 \times 4 matrix:

axiom
M: SM := matrix [[a[i,j] for j in 1..n] for i in 1..n]

\label{eq1}\left[ 
\begin{array}{cccc}
{a_{1, \: 1}}&{a_{1, \: 2}}&{a_{1, \: 3}}&{a_{1, \: 4}}
\
{a_{2, \: 1}}&{a_{2, \: 2}}&{a_{2, \: 3}}&{a_{2, \: 4}}
\
{a_{3, \: 1}}&{a_{3, \: 2}}&{a_{3, \: 3}}&{a_{3, \: 4}}
\
{a_{4, \: 1}}&{a_{4, \: 2}}&{a_{4, \: 3}}&{a_{4, \: 4}}
(1)
Type: SquareMatrix(4,Fraction(Polynomial(Integer)))

Compute the characteristis polynomial of 'M':

axiom
P := determinant (M - x * 1);
Type: Fraction(Polynomial(Integer))

We now interpret P as univariate polynomial in x, coefficients being from the 4 \times 4 matrices. The double colon performs this coercion:

axiom
Q := P::UP(x, SM);
Type: UnivariatePolynomial(x,SquareMatrix(4,Fraction(Polynomial(Integer))))

Finally we evaluate this polynomial with the original matrix as argument. In Axiom you do not need to use parenthesis if the function takes only one argument:

axiom
Q M

\label{eq2}\left[ 
\begin{array}{cccc}
0 & 0 & 0 & 0 
\
0 & 0 & 0 & 0 
\
0 & 0 & 0 & 0 
\
0 & 0 & 0 & 0 
(2)
Type: SquareMatrix(4,Fraction(Polynomial(Integer)))

Some matrix computations under TeXmacs.

Notice the hierarchical editing capabilities of TeXmacs.

Some more complicated computations:

axiom
)cl all
All user variables and function definitions have been cleared. Word := OrderedFreeMonoid(Symbol)

\label{eq3}\hbox{\axiomType{OrderedFreeMonoid}\ } (\hbox{\axiomType{Symbol}\ })(3)
Type: Domain
axiom
poly:= XPR(Integer,Word)

\label{eq4}\hbox{\axiomType{XPolynomialRing}\ } (\hbox{\axiomType{Integer}\ } , \hbox{\axiomType{OrderedFreeMonoid}\ } (\hbox{\axiomType{Symbol}\ }))(4)
Type: Domain
axiom
p:poly := 2 * x - 3 * y + 1

\label{eq5}1 +{2 \  x}-{3 \  y}(5)
Type: XPolynomialRing(Integer,OrderedFreeMonoid(Symbol))
axiom
1 + 2x - 3y
Cannot find a definition or applicable library operation named 2 with argument type(s) Variable(x)
Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need. q:poly := 2 * x + 1

\label{eq6}1 +{2 \  x}(6)
Type: XPolynomialRing(Integer,OrderedFreeMonoid(Symbol))
axiom
p + q

\label{eq7}2 +{4 \  x}-{3 \  y}(7)
Type: XPolynomialRing(Integer,OrderedFreeMonoid(Symbol))
axiom
p * q

\label{eq8}1 +{4 \  x}-{3 \  y}+{4 \ {x^2}}-{6 \  y \  x}(8)
Type: XPolynomialRing(Integer,OrderedFreeMonoid(Symbol))
axiom
(p +q)^2 -p^2 -q^2 - 2*p*q

\label{eq9}-{6 \  x \  y}+{6 \  y \  x}(9)
Type: XPolynomialRing(Integer,OrderedFreeMonoid(Symbol))
axiom
M := SquareMatrix(2,Fraction Integer)

\label{eq10}\hbox{\axiomType{SquareMatrix}\ } (2, \hbox{\axiomType{Fraction}\ } (\hbox{\axiomType{Integer}\ }))(10)
Type: Domain
axiom
poly1:= XPR(M,Word)

\label{eq11}\hbox{\axiomType{XPolynomialRing}\ } (\hbox{\axiomType{SquareMatrix}\ } (2, \hbox{\axiomType{Fraction}\ } (\hbox{\axiomType{Integer}\ })) , \hbox{\axiomType{OrderedFreeMonoid}\ } (\hbox{\axiomType{Symbol}\ }))(11)
Type: Domain
axiom
m1:M := matrix [[i*j**2 for i in 1..2] for j in 1..2]

\label{eq12}\left[ 
\begin{array}{cc}
1 & 2 
\
4 & 8 
(12)
Type: SquareMatrix(2,Fraction(Integer))
axiom
m2:M := m1 - 5/4

\label{eq13}\left[ 
\begin{array}{cc}
-{1 \over 4}& 2 
\
4 &{{27}\over 4}
(13)
Type: SquareMatrix(2,Fraction(Integer))
axiom
m3: M := m2**2

\label{eq14}\left[ 
\begin{array}{cc}
{{129}\over{16}}&{13}
\
{26}&{{857}\over{16}}
(14)
Type: SquareMatrix(2,Fraction(Integer))
axiom
pm:poly1   := m1*x + m2*y + m3*z - 2/3

\label{eq15}\begin{array}{@{}l}
\displaystyle
{\left[ 
\begin{array}{cc}
-{2 \over 3}& 0 
\
0 & -{2 \over 3}
(15)
Type: XPolynomialRing(SquareMatrix(2,Fraction(Integer)),OrderedFreeMonoid(Symbol))
axiom
qm:poly1 := pm - m1*x

\label{eq16}\begin{array}{@{}l}
\displaystyle
{\left[ 
\begin{array}{cc}
-{2 \over 3}& 0 
\
0 & -{2 \over 3}
(16)
Type: XPolynomialRing(SquareMatrix(2,Fraction(Integer)),OrderedFreeMonoid(Symbol))
axiom
qm**3

\label{eq17}\begin{array}{@{}l}
\displaystyle
{\left[ 
\begin{array}{cc}
-{8 \over{27}}& 0 
\
0 & -{8 \over{27}}
(17)
Type: XPolynomialRing(SquareMatrix(2,Fraction(Integer)),OrderedFreeMonoid(Symbol))




  Subject:   Be Bold !!
  ( 7 subscribers )  
Please rate this page: