MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Simplifying Problems

  • To: mathgroup at smc.vnet.net
  • Subject: [mg22409] Re: Simplifying Problems
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Wed, 1 Mar 2000 00:39:58 -0500 (EST)
  • Organization: Universitaet Leipzig
  • References: <89ce39$brr@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Hi,

> ------------------------
> First question:
> ------------------------
> I have an expression which has a sum of a number of sinc-like terms.  For
> example,
> 
>    f[k] = Sin[k Pi] / k
> 
> If I try using simplify with the assumption that k is an integer I get
> 
>    In[2]:=
>    Simplify[f[k], k \[Element] Integers]
> 
>    Out[2]=
>    0
> 
> Although this is true for most integers, it is incorrect for the integer
> k==0 since f[0] = Pi.  So why is this happening?  I would have expected it
> to either leave the expression untouched or to give me an If expression.
> 
> What I would like is to be able to convert the expression to
> 
>   If[ k==0, Pi, 0]
> 
> What is the best way to do this?  I can setup a rule like:
> 
>    f[k] /. Sin[k_*Pi]/k_ -> If[k == 0, Pi, 0]

f[k] /. Sin[k_*Pi]/k_ /; IntegerQ[k] :> If[k == 0, Pi, 0]

> 
> but my problem is that this does not account for the fact that the pattern
> k_ must be an integer.  How do I include that information?  (See my second
> question for why I can't just use k_?IntegerQ).
> 
> ------------------------
> Second question:
> ------------------------
> Let's say I declare a variable to be an Integer with
> 
>    j \[Element] Integers

This "declare" nothing. It is usesless like "declare" 2+2
Look at this session

In[]:= j \[Element] Integers;
In[]:= Simplify[Sin[j \[Pi]]]
Out[]=Sin[j \[Pi]]

you see nothing is declared. You should make a global list
of types like

$domains={Element[{i,j,k},Integers], Element[z,Complexes]}

ans use 

Simplify[somthing, $domains]

The domain definition via Element[] is not connected a symbol.
Only inside Simplify[], FullSimplify[] and FunctionExpand[]
the domain definitions are used.
> 
> Now I set up a function which should only work on integers
> 
>    f[x_?IntegerQ] = x+2
> 
> This, however, does not recognize that the variable j has been declared an
> integer:
> 
>    In[3]:=
>       f[2]
> 
>    Out[3]=
>       4
> 
>    In[4]:=
>       f[j]
> 
>    Out[4]=
>       f[j]
> 
> Is there a way I can get the function to work for variables declared as
> integers with the Element function?

The good old way:

x /: IntegerQ[x] := True

f[x_?IntegerQ] := x + 2

will work.

Hope that helps
  Jens


  • Prev by Date: Re: Creation of file.m
  • Next by Date: Re: Simplifying Problems
  • Previous by thread: Re: Simplifying Problems
  • Next by thread: Re: Simplifying Problems