[Date Index]
[Thread Index]
[Author Index]
Re: Pattern matching "on the fly"
*To*: mathgroup at smc.vnet.net
*Subject*: [mg30111] Re: [mg30100] Pattern matching "on the fly"
*From*: Andrzej Kozlowski <andrzej at bekkoame.ne.jp>
*Date*: Sat, 28 Jul 2001 22:08:49 -0400 (EDT)
*Sender*: owner-wri-mathgroup at wolfram.com
I think you are correct and Mathematica has no built in way to
accomplish this but it is pretty easy to write your own program which
will do just this.
In[1]:=
myexpand[f_,n_]:=
Fold[Expand[#1^2*If[#2==1,f,1]]&,f,Rest[IntegerDigits[n,2]]]
In[2]:=
x^n_ ^:=0 /; n> 2;
In[3]:=
myexpand[(1+x),1000000]//Timing
Out[3]=
2
{0.03 Second, 1 + 1000000 x + 499999500000 x }
I doubt that Reduce can do this faster.
Andrzej Kozlowski
Toyama International University
JAPAN
http://platon.c.u-tokyo.ac.jp/andrzej/
On Saturday, July 28, 2001, at 02:51 PM, Tony MacKenzie wrote:
> Hello from down under,
>
> I am trying to use Mathematica's pattern matching abilities to achieve
> something I can do using the computer algebra software REDUCE. I want
> to do
> this because I need to take advantage of the powerful numerical
> algorithms
> of Mathematica.
>
> I want to set all powers of some variable greater than a certain value
> to
> zero, but I want mathematica to apply this pattern matching "on the fly"
> (while an expression is being evaluated, not after the expression has
> been
> evaluated).
>
> I'll give a quick example. I want to set all powers of x greater than 2
> to
> zero i.e. x^3=>0, x^4=>0 and so on. In REDUCE I can use the following
> statement
>
> let x^3=>0; (* This replaces x^3 with 0, x^4 with 0 and so on*)
> Then if I evaluate (1+x)^1000000, I quickly (a few seconds) find this
> expression gives 499999500000*x^2 + 1000000*x + 1. The pattern
> matching is
> done as the expression is being expanded.
>
> Now in Mathematica I have tried x^n_ ^:=0 /; n> 2; This works, but it
> only
> appears to be applied after an expression has been expanded. For
> example if
> I try
>
> x^n_ ^:=0 /; n> 2;
> Expand[(1+x)^1000000];
>
> in Mathematica, the evaluation is very slow (which I think is because
> the
> pattern matching is applied after the expansion and not on the fly).
>
> Any help would be greatly appreciated as I am very new to Mathematica.
>
> Tony MacKenzie
> University of Southern Queensland, Australia
>
>
>
>
>
>
Prev by Date:
**Re: Transferring graphics from Mathematica to MS Word**
Next by Date:
**Re: subscripted variables in Modules**
Previous by thread:
**Pattern matching "on the fly"**
Next by thread:
**Re: Pattern matching "on the fly"**
| |