MathGroup Archive 2007

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

Search the Archive

Re: record intermediate steps

  • To: mathgroup at smc.vnet.net
  • Subject: [mg73126] Re: [mg73095] record intermediate steps
  • From: "Chris Chiasson" <chris at chiasson.name>
  • Date: Sun, 4 Feb 2007 06:49:13 -0500 (EST)
  • References: <200702030847.DAA02930@smc.vnet.net>

Dimitris,
I tried using Robby Villegas' trap method in an automated fashion on
most of the functions in the System` context to see if I could figure
out what is being called. Unfortunately, it breaks FullSimplify and
doesn't reveal what functions were called. However, I am not yet ready
to give up on this method.

Also, it is possible to get 1/8 by using
RootReduce@TrigFactor@tr

Anyway, here is the automated trapping code:
In[1]:=
nameTrapBin={};
In[2]:=
nameTrap[symb_Symbol]/;FreeQ[Attributes@symb,Locked]:=
  Module[{trap=True},Unprotect@Unevaluated@symb;
    g_symb/;trap:=
      Block[{trap=False},
        If[nameTrapCount>0,nameTrapCount--;
          nameTrapBin={nameTrapBin,HoldForm@g}];g]]
In[3]:=
nameTrap[str_String]:=ToExpression[str,InputForm,nameTrap]
In[4]:=
nameSet=DeleteCases[Names["System`*"],
      Alternatives@@
        Union[Join[
            ToString/@
              Cases[DownValues@nameTrap,_Symbol,{0,Infinity},
                Heads\[Rule]True],Names["System`*Packet*"],
            Names["System`*Box*"],Names["System`*Abort*"],
            Names["System`*Trace*"],Names["System`*Dialog*"],
            Names["System`*Message*"],Names["System`*$*"],
            Names["System`*Link*"],Names["System`*Set*"],
            Names["System`*Message*"],{"Apply"}]]];
In[5]:=
((*Print@#;*)nameTrap@#)&/@nameSet;
In[6]:=
Block[{nameTrapCount=10},tr=Cos[2*Pi/7]*Cos[4*Pi/7]*Cos[8*Pi/7]]
In[7]:=
FullSimplify@tr
In[8]:=
Block[{nameTrapCount=10},BetaRegularized[1,2,3]]
In[9]:=
Flatten@nameTrapBin

On 2/3/07, dimitris <dimmechan at yahoo.com> wrote:
> I know that Mathematica's implementated algorithms in most cases (for
> e.g. indefinite integration) do not follow the "human way" (e.g.
> integration by parts, substitution etc).
>
> But sometimes it is quite interesting to "record on the side" the
> intermediate tranformations
> rules followed in the course of arriving in the result.
>
> So, consider the following expression:
>
> In[6]:=
> tr = Cos[2*Pi/7]*Cos[4*Pi/7]*Cos[8*Pi/7]
>
> Out[6]=
> Cos[(2*Pi)/7]*Cos[(4*Pi)/7]*Cos[(8*Pi)/7]
>
> It is very easy to show that tr is actually equal to 1/8.
>
> In Mathematica you can demonstrate this with the command
>
> In[7]:=
> FullSimplify[tr]
>
> Out[7]=
> 1/8
>
> I believe (but I am not sure!) that Mathematica more or less in this
> example follow the "human way" of applying the transformation rules.
>
> So, I would like to see/know them (i.e. the transformation rules)
> applied by mathematica to reach this result and further record on the
> side (regardless if they actually have any resemblence with the way a
> human will work in this example!).
>
> I personally tried
>
> In[8]:=
> Trace[FullSimplify[tr], TraceInternal -> True]
>
> but this is not the case here!
>
> Thanks in advance for any kind of response.
>
> Dimitris
>
>


-- 
http://chris.chiasson.name/


  • Prev by Date: Re: Text Function with Graphic
  • Next by Date: Re: Conversion back to excel date format
  • Previous by thread: record intermediate steps
  • Next by thread: Re: Re: record intermediate steps