Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

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?

share|improve this question
add comment

2 Answers

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 *)
share|improve this answer
    
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
add comment

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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.