Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

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?

share|improve this question
add comment

1 Answer

up vote 7 down vote accepted

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]]

enter image description here

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]]

enter image description here

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} ]

enter image description here

You could factorize completely this polynomial with Extension :

Factor[ w[x]]
Factor[ w[x], Extension -> {Sqrt[2], Sqrt[3], I}]

enter image description here

There is also a package AbstractAlgebra to work with adequate algebraic concepts and a related book Exploring Abstract Algebra with Mathematica.

share|improve this answer
    
Nice. But it seems that the option Modulus is not capable to use with Simplify or FullSimplify. I don't want to solve the equations, but just want to simplify the relations of equations. Any idea? –  Osiris Xu Jun 20 '12 at 4:29
    
@OsirisXu You can use Simplify first and then use Mod. If your expression is quite simple as x^3==0you needn't to use any simplifications e.g. Mod[x^3, 9] /. x -> 6 yields 0 or directly evaluate (Mod[x^3, 9] /. x -> 6) == 0. Otherwise you should specify what you need giving an example. –  Artes Jun 20 '12 at 9:30
    
Cool. Is there any way to work over Ring of rational numbers QQ? Thanks. –  Osiris Xu Jun 20 '12 at 18:08
    
@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 over Rationals, e.g. try Solve[-(6/7) - 2 x + (3 x^2)/7 + x^3 == 0, x, Rationals] and then Solve[-(6/7) - 2 x + (3 x^2)/7 + x^3 == 0, x]. –  Artes Jun 20 '12 at 19:34
    
@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. –  Artes Jun 21 '12 at 22:25
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.