MathGroup Archive 2006

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

Search the Archive

Re: Re: Re: simplify a trig expression

  • To: mathgroup at smc.vnet.net
  • Subject: [mg65465] Re: [mg65449] Re: [mg65436] Re: [mg65415] simplify a trig expression
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Mon, 3 Apr 2006 06:59:30 -0400 (EDT)
  • References: <200603311109.GAA15029@smc.vnet.net> <200604011038.FAA07301@smc.vnet.net> <200604020900.FAA01612@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

First, let me state a fundamental objection to the whole enterprise.  
I am of the opinion that there is on the whole very little point in  
putting a lot of effort into forcing computer algebra programs return  
the answers you already know to be correct. The purpose of such  
programs is to simplify expressions that are too complicated too  
analyse by hand so as to make them simple enough to handle by hand.  
The "handling by hand" part is precisely what computer programs are  
not very good at and usually it takes longer to make them do so then  
just typing in the answer. Of course once you already know the answer  
it is usually very easy to verify that it equal the one given by  
Mathematica. For example, in your situation the best approach, in my  
opinion would be simply this:


FullSimplify[D[Integrate[Sin[x]/(1 - Cos[x]), x] -
     Log[1 - Cos[x]], x]]


0

As far as I can see this is all you would even need to do in  
practice. The rest is just playing with CAS. But if you like playing  
then by using FullSimplify with suitable TransformationFunctions and  
ComplexityFunction you can usually transform anything into anything  
else. So in this case you can do, for example,


f[(n_)*Log[a_]] := Log[a^n];
f[Cos[x_]^2] :=  (1/2)*(Cos[2*x] + 1);
f[Sin[2*(x_)]^2] := (1/2)*(1 - Cos[x]);



FullSimplify[Integrate[Sin[x]/(1 - Cos[x]), x],
   TransformationFunctions -> {Automatic, f},
   ComplexityFunction ->
    (LeafCount[#1] + 50*Count[#1, x/2, {0, Infinity}] +
      Count[#1, _Power, {0, Infinity}, Heads -> True] & )]


Log[(1/2)*(1 - Cos[x])]

It is slightly amusing to analyse exactly why this works, but I  
amusement is about all of value I can see in this aproach.

Andrzej Kozlowski

On 2 Apr 2006, at 11:00, Murray Eisenberg wrote:

> OK, now how about the following--another case where Mathematica  
> gives a
> more complicated looking answer than the typical paper-and-pencil  
> direct
> substitution would provide?
>
> Mathematica gives:
>
>    Integrate[Sin[x]/(1 - Cos[x]), x]
> 2*Log[Sin[x/2]]
>
> I'd like an answer in the form of Log[1-Cos[x]]  (plus a constant, to
> actually equal the above).  The best I've been able to do so far is:
>
>    (Integrate[Sin[x]/(1 - Cos[x]), x]
>       // Simplify[# /. a_*Log[b_]:>Log[b^a]] &
>       //MapAt[TrigReduce, #, 1]&) /. (Log[c_ b_]->Log[b]+Log[c])
> -Log[2] + Log[1 - Cos[x]]
>
> Is there some easier way?
>
> Andrzej Kozlowski wrote:
>> This is one of those cases where FullSimplify will not work because
>> it lacks a suitable transformation function. In this particular case
>> the transformation function is of the form:
>>
>> f[n_*Log[a_]] := Log[a^n]
>>
>> Of course this is only valid with various assumptions on n and a, but
>> I won't bother with this here. Anyway, observe that:
>>
>>
>> FullSimplify[Integrate[Cos[x]/(Sin[x] + 1), x],
>>    TransformationFunctions -> {Automatic, f}]
>>
>>
>> Log[Sin[x] + 1]
>>
>> Note also that Simplify will not work even when you add f.
>>
>> I am not sure if there are good reasons for adding a version of f
>> (taking account of suitable assumptions) to the default
>> transformation functions of FullSimplify. It may however be a good
>> idea to have another possible value for the option
>> TransformationFunctions besides only Automatic and user defined ones.
>> In fact I have suggested in the past one or two other useful
>> TransformationFunctions; perhaps it might be a good idea to define
>> more and  collect them into a single option value or maybe several.
>>
>> Andrzej Kozlowski
>>
>>
>>
>>
>>
>>
>> On 31 Mar 2006, at 13:09, Murray Eisenberg wrote:
>>
>>> A direct substitution (with paper and pencil) gives that the
>>> integral of
>>>   Cos[x]/(Sin[x] + 1) is Log[Sin[x] + 1].  This is valid provided
>>> Sin[x]
>>> is not -1.
>>>
>>> Mathematica gives:
>>>
>>>    Integrate[Cos[x]/(Sin[x] + 1), x]
>>> 2 Log[Cos[x/2] + Sin[x/2]]
>>>
>>> Is there some simple way to coerce the latter Mathematica-supplied
>>> result into the paper-and-pencil answer?
>>>
>>> The closest I could get is:
>>>
>>>    Log[TrigExpand[Expand[(Cos[x/2] + Sin[x/2])^2]]] /.
>>>    {Sin[x/2] -> Sqrt[(1 - Cos[x])/2],
>>>     Cos[x/2] -> Sqrt[(1 + Cos[x])/2]}
>>> Log[1 + Sqrt[1 - Cos[x]]*Sqrt[1 + Cos[x]]]
>>>
>>> Am I not seeing some easier TrigExpand or TrigReduce method?
>>>
>>> -- 
>>> Murray Eisenberg                     murray at math.umass.edu
>>> Mathematics & Statistics Dept.
>>> Lederle Graduate Research Tower      phone 413 549-1020 (H)
>>> University of Massachusetts                413 545-2859 (W)
>>> 710 North Pleasant Street            fax   413 545-1801
>>> Amherst, MA 01003-9305
>>>
>>
>>
>
> -- 
> Murray Eisenberg                     murray at math.umass.edu
> Mathematics & Statistics Dept.
> Lederle Graduate Research Tower      phone 413 549-1020 (H)
> University of Massachusetts                413 545-2859 (W)
> 710 North Pleasant Street            fax   413 545-1801
> Amherst, MA 01003-9305
>


  • Prev by Date: Re: simplify a trig expression
  • Next by Date: Re: Re: Re: simplify a trig expression
  • Previous by thread: Re: Re: Re: simplify a trig expression
  • Next by thread: Re: Re: Re: simplify a trig expression