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?

=================

=================

2 Answers

2

=================

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] == 0, vy[0] == 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.