       Re: Integral question

• To: mathgroup at smc.vnet.net
• Subject: [mg73712] Re: Integral question
• From: "dimitris" <dimmechan at yahoo.com>
• Date: Sun, 25 Feb 2007 04:37:59 -0500 (EST)
• References: <eropmh\$9cb\$1@smc.vnet.net>

```>=2E..which not only does not look like what I have found by hand...

Mathematica and CAS in general do not follow the way that a human
would evaluate an integral (*).
For example here Mathematica uses (I believe) the Extended Risch
Algorithm for Indefinite Integration.
Moreover it does not mean that the obtained result from you and the
result returned by Mathematica must
agree.
Remember that a function has an infinite number of antiderivatives
which differ in an arbitrary constant known as the constant of
integration (or in general in function whose derivative is equal to
zero).

Let now

In:=
expr = 1/Sqrt[v^2 - c*s^2]
math52 = Integrate[1/Sqrt[v^2 - c*s^2], s]
hand = ArcSin[(Sqrt[c]*s)/v]/Sqrt[c]

Out=
1/Sqrt[(-c)*s^2 + v^2]
Out=
(I*Log[-2*I*Sqrt[c]*s + 2*Sqrt[(-c)*s^2 + v^2]])/Sqrt[c]
Out=
ArcSin[(Sqrt[c]*s)/v]/Sqrt[c]

Then

In:=
D[math52, s]
Simplify[%]

Out=
(I*(-2*I*Sqrt[c] - (2*c*s)/Sqrt[(-c)*s^2 + v^2]))/
(Sqrt[c]*(-2*I*Sqrt[c]*s + 2*Sqrt[(-c)*s^2 + v^2]))
Out=
1/Sqrt[(-c)*s^2 + v^2]

So Mathematica's result is correct!

In:=
D[hand, s]
Simplify[%]

Out=
1/(Sqrt[1 - (c*s^2)/v^2]*v)
Out=
1/(Sqrt[1 - (c*s^2)/v^2]*v)

As you see differentation of hand didn't give expr!
Only for v>=0 last expression reduces to expr.

In:=
(FullSimplify[%, #1[v, 0]] & ) /@ {GreaterEqual, Less}

Out=
{1/Sqrt[(-c)*s^2 + v^2], -(1/Sqrt[(-c)*s^2 + v^2])}

Note also

In:=
(D[#1, s] & )[hand - math52]
(FullSimplify[%, #1[v, 0]] & ) /@ {GreaterEqual, Less}

Out=
1/(Sqrt[1 - (c*s^2)/v^2]*v) - (I*(-2*I*Sqrt[c] - (2*c*s)/Sqrt[(-c)*s^2
+ v^2]))/
(Sqrt[c]*(-2*I*Sqrt[c]*s + 2*Sqrt[(-c)*s^2 + v^2]))
Out=
{0, -(2/Sqrt[(-c)*s^2 + v^2])}

> My question is: How can I get what I found by hand using Mathematica

You can work as follows:

In:=
integrand = (Simplify[#1, v >= 0] & )[expr*ds /. s -> (v/Sqrt[c])*t /.
ds -> D[(v/Sqrt[c])*t, t]]
Integrate[integrand, t]
% /. t -> (Sqrt[c]/v)*s

Out=
1/(Sqrt[c]*Sqrt[1 - t^2])
Out=
ArcSin[t]/Sqrt[c]
Out=
ArcSin[(Sqrt[c]*s)/v]/Sqrt[c]

(*)

Copy/Paste the following in a notebook and execute the codel; be ready
to be imressed (the code is adopted by Trott's Guidebook for
Programming).

In:=
(* keep where messages are sent to *)
old\$Messages = \$Messages;
(* a bag for collecting the steps *)
bag = {};
(* as a side effect, collect all steps *)
\$MessagePrePrint = AppendTo[bag, #]&;
(* redirect messages *)
\$Messages = nowhere;
On[];
(* do the integration *)
Integrate[1/Sqrt[v^2 - c*s^2], s];
Off[];
(* restore where messages are sent to *)
\$Messages = old\$Messages;
\$MessagePrePrint = Short;

In:=
{Depth[bag], Length[bag], ByteCount[bag], LeafCount[bag],
StringLength[ToString[FullForm[bag]]]}

Out=
{19, 5522, 1403096, 62702, 474122}

In:=
Short[bag,100]

Best Regards
Dimitris

P=2ES. In another CAS (due to the policy of this forum I can't mention
its name) I took

int(1/sqrt(v^2-c*s^2),s);
1/2
c    s
arctan(--------------)
2      2 1/2
(v  - c s )
----------------------
1/2
c

in agreement with the result you obtained by hand.
But I still regard as more correct Mathematica's result!

=CF/=C7 Tulga Ersal =DD=E3=F1=E1=F8=E5:
> Dear Mathematica users,
>
> Let's consider the integral
>
> Integrate[1/Sqrt[v^2 - c*s^2], s]
>
> where v and c are positive reals. When I calculate the integral by hand, =
I get
>
> ArcSin[(Sqrt[c]*s)/v]/Sqrt[c]
>
> However, if I evaluate the integral in Mathematica, I get
>
> (I*Log[(-2*I)*Sqrt[c]*s + 2*Sqrt[-(c*s^2) + v^2]])/Sqrt[c]
>
> which not only does not look like what I have found by hand, but
> also, for v=4, c=2, s=1, for example, gives
>
> 0.255525 + 1.47039 i
>
> as opposed to just 0.255525.
>
> If you evaluate the integral in Mathematica with the said values (v=4, =
c=2)
>
> Integrate[1/Sqrt[4^2 - 2*s^2], s]
>
>
> ArcSin[s/(2*Sqrt)]/Sqrt
>
> which agrees with what I have found by hand.
>
> My question is: How can I get what I found by hand using Mathematica
> without having to assign values to v and c before evaluating the
> integral? I tried adding the assumptions v>0, c>0, but it didn't help.
>