# Reduce on equations involving integrals

Here's part of problem from a college physics text:

A time-dependent force F = (8.00 i - 4.00 t j) N (where t is in seconds) is applied to a 2.00-kg object initially at rest. (a) At what time will the object be moving with a speed of 15.0 m/s?

Here's one way to solve the problem using Reduce:

{
vx == Integrate[Fx/m, {t, 0, t}],
vy == Integrate[c*t/m, {t, 0, t}],
speed^2 == vx^2 + vy^2,
c != 0, speed != 0, Fx != 0
};
Reduce[%, {t, vx, vy}];
% /. {speed -> 15, Fx -> 8, c -> -4, m -> 2}


The output is:

(t == -5 I || t == 5 I || t == -3 || t == 3) && vx == 4 t &&
vy == -((t vx)/4)


The answer given in the book is t = 3.

In the set of equations passed to Reduce, the Fx/m comes from Fx = m * ax and c*t/m comes from c*t = m * ay. Instead of doing that manual substitution, I'd like to pass those equations to Reduce and have it do the right thing. I.e. something like:

{
Fx == m * ax,
c*t == m * ay,
vx == Integrate[ax, {t, 0, t}],
vy == Integrate[ay, {t, 0, t}],
speed^2 == vx^2 + vy^2,
c != 0, speed != 0, Fx != 0
};
Reduce[%, {t, vx, vy}];
% /. {speed -> 15, Fx -> 8, c -> -4, m -> 2}


Of course, that doesn't work because Integrate doesn't know that ax and ay are in terms of t.

Any suggestions on how to make something like this work?

I don't follow you, but the problem is simple (and better solve it by hand first to get a grip on the physics!)

Find the velocity functions:

sol = DSolve[{vx'[t] == 8/2, vy'[t] == 4 t/2, vx == 0, vy == 0}, {vx, vy}, t]


Solve for the Norm[] of the velocity:

Solve[Norm[{vx[t], vy[t]}] == 15 /. sol, t]
(*
{{t -> -3.}, {t -> 3.}}
*)


Edit

Here you have it solved by using something similar to what you tried, although I don't like it at all.

r = Reduce[
vx == Integrate[Fx/m, {t, 0, tf}] &&
vy == Integrate[c t/m, {t, 0, tf}] &&
vx^2 + vy^2 == sp^2, {tf, vx, vy}, Reals];

r /. {c -> 4, m -> 2, Fx -> 8, sp -> 15}

(* (tf == -3 || tf == 3) && vx == 4 tf && vy == tf^2 *)

• Thanks belisarius. My questions is more to do with using Reduce on the expressions involving integrals however, not so much solving the problem. (I do like your solution though). – dharmatech Apr 7 '13 at 22:27

This:

 F[t_] := {f01 + g1*t, f02 + g2*t};
v[t_] := 1/m*Integrate[F[t], t]
vm = Sqrt[v[t].v[t] // Expand // Simplify];


defines equations in the vector form. This:

Select[Solve[(vm /. {f01 -> 8, g1 -> 0, f02 -> 0, g2 -> 4, m -> 2}) ==
15, t] /. {a_ -> b_} -> b, # >= 0 &]


substitutes the values of the force components and the mass, solves it and selects out of all solutions the non-negative one. It returns 3 as expected. It seems that Solve in this context is a bit more easy to use then Reduce.