[Date Index]
[Thread Index]
[Author Index]
Re: Re: Re: simplify a trig expression
*To*: mathgroup at smc.vnet.net
*Subject*: [mg65468] 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:34 -0400 (EDT)
*References*: <200603311109.GAA15029@smc.vnet.net> <200604011038.FAA07301@smc.vnet.net> <200604020900.FAA01612@smc.vnet.net> <11D40ADD-9EC9-4DCE-B685-1CA00605B9B2@mimuw.edu.pl>
*Sender*: owner-wri-mathgroup at wolfram.com
On 2 Apr 2006, at 20:27, Andrzej Kozlowski wrote:
> 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]);
>
>
Although this makes no difference to the actual problem, there is an
obvious bug in the last line. It ought to be of course
f[Sin[x_]^2] := (1/2)*(1 - Cos[x])
I included this only for the sake of completeness and somehow a
factor of 2 managed to sneak in.
>
> 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.
I might add here that he interesting thing about the above Complexity
function is the number 50. More precisely, the code will return the
same answer with 50 replaced by any number greater than 20 but not
for 20 or numbers less than 20.
Andrzej Kozlowski
>
> 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: Re: 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**
| |