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

Let's begin with the construction of a polynomial ring in the indeterminate with coefficients from the ring of square matrices with entries that are polynomials where is the Galois field with 3 elements.

fricas
F := PrimeField 3
 (1)
Type: Type
fricas
P := UnivariatePolynomial(x, F)
 (2)
Type: Type
fricas
S := SquareMatrix(2, P)
 (3)
Type: Type
fricas
R := UnivariatePolynomial(z, S)
 (4)
Type: Type

OK, now we have the type . Let's construct an element. We start with constructing some coefficients first.

fricas
s1:S := matrix[[2*x +1 ,x^2-1],[0,x-1]]
 (5)
Type: SquareMatrix?(2,UnivariatePolynomial(x,PrimeField?(3)))
fricas
s2 := transpose s1
 (6)
Type: SquareMatrix?(2,UnivariatePolynomial(x,PrimeField?(3)))

And now we build the polynomial.

fricas
r: R := z^2 + s1*z + s2
 (7)
Type: UnivariatePolynomial(z,SquareMatrix?(2,UnivariatePolynomial(x,PrimeField?(3))))

Of course, since we work in characteristic 3, the following sum must be zero.

fricas
r+ 2*r
 (8)
Type: UnivariatePolynomial(z,SquareMatrix?(2,UnivariatePolynomial(x,PrimeField?(3))))

Note that this is not the integer 0, but it is still a polynomial of type .

Asking for the degree of is no problem, because is a univariate polynomial ring.

fricas
degree r
 (9)
Type: PositiveInteger?

Let us add 1 to .

fricas
r+1
 (10)
Type: UnivariatePolynomial(z,SquareMatrix?(2,UnivariatePolynomial(x,PrimeField?(3))))

Oh, interesting, FriCAS figured out that by 1 we actually meant the polynomial 1 in .

fricas
one: R := 1
 (11)
Type: UnivariatePolynomial(z,SquareMatrix?(2,UnivariatePolynomial(x,PrimeField?(3))))

No no, it is not the unit square matrix. It is the unit square matrix multiplied by . Look at the type.

So let's see what happens if we multiply by itself.

fricas
r2 := r*r
 (12)
Type: UnivariatePolynomial(z,SquareMatrix?(2,UnivariatePolynomial(x,PrimeField?(3))))

Well, of course there is a common factor of an . Can FriCAS find it?

fricas
gcd(r2, r)
There are 4 exposed and 3 unexposed library operations named gcd
having 2 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op gcd
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named gcd
with argument type(s)
UnivariatePolynomial(z,SquareMatrix(2,UnivariatePolynomial(x,PrimeField(3))))
UnivariatePolynomial(z,SquareMatrix(2,UnivariatePolynomial(x,PrimeField(3))))
Perhaps you should use "@" to indicate the required return type,
or "\$" to specify which version of the function you need.

Ooops. What does that say?:

  Cannot find a definition or applicable library operation named gcd.


Ah, of course, the coefficient ring of is the matrix ring and this is unfortunately not a field (not even an integral domain), so we cannot simply apply Euclid's algorithm. FriCAS simply stops by telling you that there is no applicable operation.

Of course, FriCAS can compute a gcd of univariate polynomials.

fricas
p1:=s1(1,1)
 (13)
Type: UnivariatePolynomial(x,PrimeField?(3))
fricas
p2:=s1(1,2)
 (14)
Type: UnivariatePolynomial(x,PrimeField?(3))
fricas
gcd(p1,p2)
 (15)
Type: UnivariatePolynomial(x,PrimeField?(3))

OK, let us do that again.

fricas
q1: UP(x, INT) := 2*x+1
 (16)
Type: UnivariatePolynomial(x,Integer)
fricas
q2: UP(x, INT) := x^2+2
 (17)
Type: UnivariatePolynomial(x,Integer)
fricas
gcd(q1,q2)
 (18)
Type: UnivariatePolynomial(x,Integer)

Nice! Depending on where I compute these polynomials either have a common factor or are coprime.

Well, all depends on the underlying ring, of course.

 Subject:   Be Bold !! ( 15 subscribers )