For example, when we work over a ring, the equation x^3=0
does not imply x^2=0
or x=0
, but the vice versa is true. Can we use Mathematica to Simplify equations over a ring?
Answer
If you want to solve an equation over integer rings $\mathbb{Z}_n$ you should specify them with Modulus
e.g.
Column[Solve[x^3 == 0, x, Modulus -> #] & /@ Range[2, 9]]
Edit
Since there was no further example of any expression to simplify over a finite ring let's define e.g. a polynomial which cannot be factorized over rationals (as Mathematica
does by default)
p[x_] := x^5 + 3 x^4 + 6 x^3 - 2 x^2 + 1
Factor[p[x]]
p /@ Range[5]
1 - 2 x^2 + 6 x^3 + 3 x^4 + x^5
{9, 121, 631, 2145, 5701}
however over rings $\mathbb{Z}_n$ it is evaluated automatically with Mod[ p[x], n]
, (it has the Listable
attribute), thus
Column[ Mod[p /@ Range[2, 10], #] & /@ Range[2, 10]]
{{{1, 1, 1, 1, 1, 1, 1, 1, 1}},
{{1, 1, 0, 1, 1, 0, 1, 1, 0}},
{{1, 3, 1, 1, 1, 3, 1, 1, 1}},
{{1, 1, 0, 1, 4, 1, 1, 0, 1}},
{{1, 1, 3, 1, 1, 3, 1, 1, 3}},
{{2, 1, 3, 3, 2, 1, 2, 2, 1}},
{{1, 7, 1, 5, 1, 3, 1, 1, 1}},
{{4, 1, 3, 4, 1, 6, 4, 1, 0}},
{{1, 1, 5, 1, 9, 1, 1, 5, 1}} }
On the other hand you can use PolynomialMod
to "simplify" a polynomial over a ring $\mathbb{Z}_n$, e.g.
Column[ PolynomialMod[ p[x], #] & /@ Range[2, 6] ]
1 + x^4 + x^5
1 + x^2 + x^5
1 + 2 x^2 + 2 x^3 + 3 x^4 + x^5
1 + 3 x^2 + x^3 + 3 x^4 + x^5
1 + 4 x^2 + 3 x^4 + x^5
So to get the table Column[ Mod[p /@ Range[2, 10], #] & /@ Range[2, 10]]
as above, you can Apply
as well PolynomialMod
on a specific level of an adequate Table
, e.g.
Column[ Apply[ PolynomialMod[ p[#2], #1] &, Table[{i, j}, {i, 2, 10}, {j, 2, 10}], {2}] ] ===
Column[ Mod[ p /@ Range[2, 10], #] & /@ Range[2, 10]]
True
In case you'd like to factorize p[x]
over a finite field (for n prime $\mathbb{Z}_n$ is a field) it can be done with Modulus
as well, e.g.
Column[ Factor[ p[x], Modulus -> #] & /@ Prime @ Range[4]]
Some related details (e.g. Extension
to work with polynomials and algebraic functions over rings of Rationals
extended by selected algebraic numbers) you could find here.
Consider another polynomial
w[x_] := 6 - 12 x + x^2 - 2 x^3 - x^4 + 2 x^5
you can solve the equation w[x] == 0
over the field of Rationals
as well (by default Mathematica
solves over Complexes
, and then you needn't specify the domain), e.g.
Column[ Solve[w[x] == 0, x, #] & /@ {Integers, Rationals, Reals, Complexes} ]
You could factorize completely this polynomial with Extension
:
Factor[ w[x]]
Factor[ w[x], Extension -> {Sqrt[2], Sqrt[3], I}]
There is also a package AbstractAlgebra to work with adequate algebraic concepts and a related book Exploring Abstract Algebra with Mathematica.
Comments
Post a Comment