Re: Idiomatic use of Reduce in a physics problem
- To: mathgroup at smc.vnet.net
- Subject: [mg114755] Re: Idiomatic use of Reduce in a physics problem
- From: Eduardo Cavazos <wayo.cavazos at gmail.com>
- Date: Wed, 15 Dec 2010 07:53:35 -0500 (EST)
- References: <1292134503.1714.109.camel@dharmatech-ThinkPad-T61>
Daniel Lichtblau suggested:
> (1) You can use Reduce[...,Backsubstitution -> True] to get all
> variables in terms of numeric values.
This worked great. Thanks Daniel!
Ed
On Sun, 2010-12-12 at 00:15 -0600, Eduardo Cavazos wrote:
> Hello,
>
> Let's use Mathematica to solve a basic projectile motion problem. Yes,
> Mathematica is basically overkill for such a problem, but it does
> illustrate some Mathematica techniques.
>
> A home run is hit in such a way that the baseball just
> clears a wall 21.0 m high, located 130 m from home
> plate. The ball is hit at an angle of 35.0° to the horizon-
> tal, and air resistance is negligible. Find (a) the initial
> speed of the ball, (b) the time it takes the ball to reach
> the wall, and (c) the velocity components and the speed
> of the ball when it reaches the wall. (Assume the ball is
> hit at a height of 1.00 m above the ground.)
>
> This is problem 4.49 from Physics for Scientists and Engineers by Serway
> and Jewett.
>
> As usual, there are a bunch of ways to go about expressing the solution
> in Mathematica. Below is one way using Reduce and Notation (to provide
> something similar to traditional vector notation).
>
> My question is, is this idiomatic use of Mathematica? I'm a Mathematica
> beginner and I'm venturing into somewhat more esotetic features like
> Notation. My approach in the solution is to provide one big expression
> to Reduce such that all the answers "pop out" in one step. Why the
> Reduce chain at the end? Sometimes when using Reduce, I have to go
> through a trial and error discovery of which vars will yield a result
> such that the answers are not in terms of other variables. Chaining
> Reduce seems to be easier. If this is a bad idea, let me know. (Yeah, it
> looks a little sloppy, but it's so convenient. :-)
>
> Finally, I apologize for including the output in the complex looking
> Cell Expression format; plain old Copy/Paste didn't seem to work in this
> example. If you paste the expression below into Mathematica, it should
> look better.
>
> Thanks for any suggestions.
>
> Ed
>
> {
> Cell[BoxData[{
> RowBox[{"<<", "Notation`"}], "\[IndentingNewLine]",
> RowBox[{"Notation", "[",
> RowBox[{
> TemplateBox[{OverscriptBox["v_", "\[RightVector]"]},
> "NotationTemplateTag"], " ", "\[DoubleLongLeftRightArrow]", " ",
> TemplateBox[{RowBox[{"{",
> RowBox[{
> SubscriptBox["v_", "x"], ",",
> SubscriptBox["v_", "y"]}], "}"}]},
> "NotationTemplateTag"]}], "]"}]}], "Input"],
>
> Cell[BoxData[{
> RowBox[{
> RowBox[{"{", "\[IndentingNewLine]",
> RowBox[{
> RowBox[{
> OverscriptBox[
> SubscriptBox["v", "f"], "\[RightVector]"], "\[Equal]",
> RowBox[{
> OverscriptBox[
> SubscriptBox["v", "i"], "\[RightVector]"], "+",
> RowBox[{
> OverscriptBox["a", "\[RightVector]"], "*", "t"}]}]}], ",",
> "\[IndentingNewLine]",
> RowBox[{
> OverscriptBox[
> SubscriptBox["r", "f"], "\[RightVector]"], "\[Equal]",
> RowBox[{
> OverscriptBox[
> SubscriptBox["r", "i"], "\[RightVector]"], "+",
> RowBox[{
> OverscriptBox[
> SubscriptBox["v", "i"], "\[RightVector]"], "*", "t"}], "+",
> RowBox[{
> RowBox[{"1", "/", "2"}], "*",
> OverscriptBox["a", "\[RightVector]"], "*",
> SuperscriptBox["t", "2"]}]}]}], ",", "\[IndentingNewLine]",
> "\[IndentingNewLine]",
> RowBox[{
> OverscriptBox[
> SubscriptBox["r", "i"], "\[RightVector]"], "\[Equal]",
> RowBox[{"{",
> RowBox[{"0", ",", "1"}], "}"}]}], ",", "\[IndentingNewLine]",
> "\[IndentingNewLine]",
> RowBox[{
> SubscriptBox[
> SubscriptBox["v", "i"], "x"], ">", "0"}], ",",
> RowBox[{
> SubscriptBox[
> SubscriptBox["v", "i"], "y"], ">", "0"}], ",",
> "\[IndentingNewLine]", "\[IndentingNewLine]",
> RowBox[{
> RowBox[{"Tan", "[",
> RowBox[{"\[Theta]", " ", "Degree"}], "]"}], "\[Equal]",
> RowBox[{
> SubscriptBox[
> SubscriptBox["v", "i"], "y"], "/",
> SubscriptBox[
> SubscriptBox["v", "i"], "x"]}]}], ",", "\[IndentingNewLine]",
> "\[IndentingNewLine]",
> RowBox[{"\[Theta]", "\[Equal]", "35"}], ",",
> "\[IndentingNewLine]", "\[IndentingNewLine]",
> RowBox[{"t", ">", "0"}], ",", " ",
> RowBox[{
> OverscriptBox["a", "\[RightVector]"], "\[Equal]",
> RowBox[{"{",
> RowBox[{"0", ",",
> RowBox[{"-", "9.8"}]}], "}"}]}], ",", "\[IndentingNewLine]",
> "\[IndentingNewLine]",
> RowBox[{
> OverscriptBox[
> SubscriptBox["r", "f"], "\[RightVector]"], "\[Equal]",
> RowBox[{"{",
> RowBox[{"130", ",", "21"}], "}"}]}], ",", "\[IndentingNewLine]",
> "\[IndentingNewLine]",
> RowBox[{
> SubscriptBox[
> SubscriptBox["v", "f"], "x"], "\[Equal]",
> SubscriptBox[
> SubscriptBox["v", "i"], "x"]}], ",", "\[IndentingNewLine]",
> "\[IndentingNewLine]",
> RowBox[{"initialSpeed", "\[Equal]",
> RowBox[{"Norm", "[",
> OverscriptBox[
> SubscriptBox["v", "i"], "\[RightVector]"], "]"}]}], ",",
> "\[IndentingNewLine]",
> RowBox[{"finalSpeed", "\[Equal]",
> RowBox[{"Norm", "[",
> OverscriptBox[
> SubscriptBox["v", "f"], "\[RightVector]"], "]"}]}]}],
> "\[IndentingNewLine]", "}"}], ";"}], "\[IndentingNewLine]",
> RowBox[{
> RowBox[{"Reduce", "[", "%", "]"}], ";"}], "\[IndentingNewLine]",
> RowBox[{
> RowBox[{"Reduce", "[", "%", "]"}], ";"}], "\[IndentingNewLine]",
> RowBox[{"Reduce", "[", "%", "]"}]}], "Input",
> CellChangeTimes->{{3.5011213954975023`*^9, 3.501121396167547*^9}, {
> 3.501121440011367*^9, 3.5011216827801943`*^9}, {
> 3.501121724501215*^9, 3.501121727215644*^9}, {3.501121802386731*^9,
> 3.5011219002852173`*^9}, {3.501121959426733*^9,
> 3.5011219697977962`*^9}, {3.501122004292712*^9,
> 3.501122017755189*^9}}]
> }