Re: Question: how to get Sin[n*Pi]=0 (n integer)
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg1975] Re: Question: how to get Sin[n*Pi]=0 (n integer)
- From: econrad at math.ohio-state.edu (Eric Conrad)
- Date: Mon, 4 Sep 1995 22:20:55 -0400
- Organization: Department of Mathematics, The Ohio State University
In article <DE3sCL.Gr9 at wri.com>, Rex Dieter <rdieter at mathlab41.unl.edu> wrote:
>In article <DDuM67.IuF at wri.com> izovko at dominis.phy.hr (Ilija I Zovko) writes:
>
>> How can one tell Mathematica to simplify Sin[n Pi]=0 or
>> Cos[n Pi]=(-1)^n and similar kind of stuff.
>
>That's a good question. Mathematica normally can't make assumptions like "n
>is an integer)", and I'm not sure how to do this easily. Perhaps try the
>following... say you want to simplify an expression "expr" that contains the
>constructs you describe above. To get the simplifications you desire, simply
>execute: ...
One can easily extend the rules in Mathematica. For example, if 'n' is
a free variable you want Mathematica to treat as an integer, you can
try:
(1) Unprotect[IntegerQ];
(2) IntegerQ[n] := True
(3) Protect[IntegerQ];
Notice that there is no underscore after the n in line (2). Unfortunately
this won't get Sin to evaluate Sin[n Pi]. You can work around that
problem as follows:
(4) Unprotect[Sin, Cos];
(5) Sin[x_ Pi] /; IntegerQ[x] := 0
(6) Cos[x_ Pi] /; IntegerQ[x] := (-1)^x
(7) Protect[Sin, Cos];
This will give you the result you need for Sin[n Pi] and Cos[n Pi]
but you'll be disappointed by Sin[2 n Pi] and Cos[2 n Pi]. But you
can work around this by defining integers to be closed under addition and
multiplication and additive inverses:
(8) Unprotect[IntegerQ];
(9) IntegerQ[-x_] := IntegerQ[x]
(10) IntegerQ[x_+y_] /; IntegerQ[x] && IntegerQ[y] := True
(11) IntegerQ[x_ y_] /; IntegerQ[x] && IntegerQ[y] := True
(12) Protect[IntegerQ];
(Note) The following would be INCORRECT:
(10') IntegerQ[x_+y_] := IntegerQ[x] && IntegerQ[y]
as can be seen from the example IntegerQ[1/2 + 1/2]
If you lose track of rule changes, say for IntegerQ, type
(13) ?? IntegerQ
In addition to displaying the usage information for IntegerQ, any
user-defined rules are displayed.
Eric