# Speeding up Integrate and the numerical solution

I want to compute the drag of a plate Below is the code I am using to integrate the function

velcenter = {dotx, doty, 0};
r = {Cos[θ[t]], Sin[θ[t]], 0};
veltanA = {-Sin[θ[t]], Cos[θ[t]], 0};
velxpoint = Part[Cross[velcenter, r], 3];
dragD = 1/2*ρ*cofD*h*Integrate[(Abs[velxpoint - s*dotθ])*(velcenter +
s*dotθ*veltanA), {s, a - l, a}];


The integration is so slow and I want to speed it up. Any suggestions are welcome !

• conbine the Abs functon and the integrate function .the runing time is unbelievable
– Ann
Feb 26, 2014 at 8:41
• Is your integrand intended to be a scalar or a vector ? Feb 26, 2014 at 8:49
• integrand is a vector,3-D
– Ann
Feb 26, 2014 at 13:29
• The difficulty lies in the integral variable in Norm function,it makes the running time longer
– Ann
Feb 28, 2014 at 1:06

Integrate seems to prefer Sqrt[x^2] instead of Abs[x]. It also is wise to suppress Sin and Cos temporarily. I would assume you do know for which parameters your integrand is
valid, thus you can use GenerateConditions -> False. Then:

velcenter = {dotx, doty, 0};
r = {Cos[θ[t]], Sin[θ[t]], 0};
veltanA = {-Sin[θ[t]], Cos[θ[t]], 0};
velxpoint = Part[Cross[velcenter, r], 3];
SetOptions[Integrate, GenerateConditions -> False];
dragD = 1/2*ρ*cofD*h*
Inactive[Integrate][(Abs[velxpoint - s*dotθ])*(velcenter + s*dotθ*veltanA),
{s, a - l, a}] /.Cos -> Inactive[Cos] /. Sin -> Inactive[Sin]

AbsoluteTiming[
res = Activate[Activate[dragD /. Abs :> (Sqrt[#^2] &), Integrate]] /.
Sqrt[zz_^2] :> Abs[zz]]


gives, after about half a minute (on my 2011 laptop) with Mathematica 10.3 You can check a specific point, e.g.:

Activate[
(dragD==res) /. {dotx -> .2, doty -> .3, θ[t]-> 2., ρ->.2,
a-> 2.4,h-> 3.,l-> .9, dotθ-> .6,cofD -> .6}
]