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?
1 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.
-
$\begingroup$ Nice. But it seems that the option
Modulus
is not capable to use withSimplify
orFullSimplify
. I don't want to solve the equations, but just want to simplify the relations of equations. Any idea? $\endgroup$ Commented Jun 20, 2012 at 4:29 -
$\begingroup$ @OsirisXu You can use
Simplify
first and then useMod
. If your expression is quite simple asx^3==0
you needn't to use any simplifications e.g.Mod[x^3, 9] /. x -> 6
yields0
or directly evaluate(Mod[x^3, 9] /. x -> 6) == 0
. Otherwise you should specify what you need giving an example. $\endgroup$– ArtesCommented Jun 20, 2012 at 9:30 -
$\begingroup$ Cool. Is there any way to work over Ring of rational numbers QQ? Thanks. $\endgroup$ Commented Jun 20, 2012 at 18:08
-
$\begingroup$ @OsirisXu If I understand what you mean, factorization is by default over
Rationals
, see more details mathematica.stackexchange.com/questions/4362/…. You can solve equations overRationals
, e.g. trySolve[-(6/7) - 2 x + (3 x^2)/7 + x^3 == 0, x, Rationals]
and thenSolve[-(6/7) - 2 x + (3 x^2)/7 + x^3 == 0, x]
. $\endgroup$– ArtesCommented Jun 20, 2012 at 19:34 -
$\begingroup$ @OsirisXu I edited the answer to include more details which you'll find interesting. You could edit your question as well to make it more precise since e.g. "Is there any way to work over Ring of rational numbers ?" is slightly too general and there are many aspects which can be still unclear. $\endgroup$– ArtesCommented Jun 21, 2012 at 22:25