[Date Index]
[Thread Index]
[Author Index]
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**
| |