Re: Sundry Questions
- To: mathgroup at smc.vnet.net
- Subject: [mg61152] Re: Sundry Questions
- From: "Matt" <anonmous69 at netscape.net>
- Date: Tue, 11 Oct 2005 03:22:24 -0400 (EDT)
- References: <diabu7$ikb$1@smc.vnet.net><did2le$qco$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi Jens, Thanks for your response. I have a couple of follow up questions for you if you please (the other answers were crystal clear): Your response (a): I was amazed at first that this worked, but after looking into 'HoldAll' and 'Evaluate', it began to dawn on me what was going on. I just want to make sure that I understand it. Because ParametricPlot has the 'HoldAll' attribute, the list of rules is not 'recognized' as a list of rules and consequently, when the algorithm for ParametricPlot evaluates the list with explicit values of 't', what it gets back from evaluating the list of rules is gibberish, whereas if Evaluate is used first, the algorithm for ParametricPlot 'recognizes' that there is a list and 'threads' over the various rules for each explicit value of 't'. At first I thought Evaluate changes the expression somehow, but executing this: Cell[BoxData[{ RowBox[{ StyleBox[ RowBox[{ RowBox[{"severalSols", " ", "=", " ", RowBox[{"Table", "[", RowBox[{ RowBox[{"DSolve", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ RowBox[{"x", "'"}], "[", "t", "]"}], "==", RowBox[{"2", " ", RowBox[{"y", "[", "t", "]"}]}]}], ",", RowBox[{ RowBox[{ RowBox[{"y", "'"}], "[", "t", "]"}], "==", RowBox[{ RowBox[{ RowBox[{"-", "1"}], "/", "4"}], " ", RowBox[{"x", "[", "t", "]"}]}]}], ",", RowBox[{ RowBox[{"x", "[", "0", "]"}], "==", "2"}], ",", RowBox[{ RowBox[{"y", "[", "0", "]"}], "==", "a"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"x", "[", "t", "]"}], ",", RowBox[{"y", "[", "t", "]"}]}], "}"}], ",", "t"}], "]"}], ",", " ", RowBox[{"{", RowBox[{ "a", ",", " ", "0.5", ",", " ", "2.5", ",", "0.5"}], "}"}]}], "]"}]}], ";"}], FormatType->StandardForm], StyleBox[" ", FormatType->StandardForm]}], "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"x", "[", "t", "]"}], ",", " ", RowBox[{"y", "[", "t", "]"}]}], "}"}], " ", "/.", " ", "severalSols"}], "\[IndentingNewLine]", RowBox[{"Evaluate", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"x", "[", "t", "]"}], ",", " ", RowBox[{"y", "[", "t", "]"}]}], "}"}], " ", "/.", " ", "severalSols"}], "]"}]}], "Input"] told me that to the naked eye, nothing changes. I assume that if ParametricPlot had the 'HoldFirst' attribute, then I would have used the Evaluate method as well, and in fact, any function that has the 'HoldAll' or 'HoldFirst' attribute set, I should use Evaluate if I am passing in something created by Table or Map? As regards your response (b), I guess I wasn't clear. I know that I can set attributes for a pure function when I use the Function[] syntax explicitly, but what if I wanted to set attributes for a pure function such as #^2 & ? For (f), I apologize for the lack of clarity. Hopefully, a real example of what I am attempting will help: Cell[BoxData[{ RowBox[{ RowBox[{"eqnsToSolve", " ", "=", " ", RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ RowBox[{ SubscriptBox["x", "1"], "'"}], "[", "t", "]"}], "\[Equal]", RowBox[{ SubscriptBox["\[Lambda]", "1"], " ", RowBox[{ SubscriptBox["x", "1"], "[", "t", "]"}]}]}], ",", RowBox[{ RowBox[{ RowBox[{ SubscriptBox["x", "2"], "'"}], "[", "t", "]"}], "\[Equal]", RowBox[{ SubscriptBox["\[Lambda]", "2"], " ", RowBox[{ SubscriptBox["x", "2"], "[", "t", "]"}]}]}]}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"severalSols", " ", "=", " ", RowBox[{"DSolve", "[", RowBox[{"eqnsToSolve", ",", RowBox[{"{", RowBox[{ RowBox[{ SubscriptBox["x", "1"], "[", "t", "]"}], ",", RowBox[{ SubscriptBox["x", "2"], "[", "t", "]"}]}], "}"}], ",", "t", ",", " ", RowBox[{"GeneratedParameters", "\[Rule]", RowBox[{"(", RowBox[{ SubscriptBox["x", "0"], " ", "&"}], ")"}]}]}], "]"}]}], "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{ RowBox[{ "this", " ", "is", " ", "what", " ", "I", " ", "poorly", " ", "explained", " ", RowBox[{"before", ".", " ", "I"}], " ", "want", " ", "to", " ", "try", " ", "to", " ", "match", " ", SubscriptBox["x", "j"], " ", "for", " ", "any", " ", "j", " ", "in", " ", RowBox[{ RowBox[{"severalSols", "[", RowBox[{"[", "1", "]"}], "]"}], ".", " ", "However"}]}], ",", " ", RowBox[{"it", " ", RowBox[{"didn", "'"}], "t", " ", "work"}], ",", " ", RowBox[{ "and", " ", "I", " ", "resorted", " ", "to", " ", "what", " ", "is", " ", "in", " ", "the", " ", "line", " ", "after", " ", "this", " ", "attempt"}]}], " ", "*)"}]}], "\[IndentingNewLine]", RowBox[{ SubscriptBox["x", "_"], " ", "/.", RowBox[{"severalSols", "[", RowBox[{"[", "1", "]"}], "]"}]}], "\[IndentingNewLine]", RowBox[{ RowBox[{"completeSols", " ", "=", " ", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ SubscriptBox["x", "j"], "[", "t", "]"}], "/.", RowBox[{"j", "\[Rule]", "1"}]}], ",", RowBox[{ RowBox[{ SubscriptBox["x", "j"], "[", "t", "]"}], "/.", RowBox[{"j", "\[Rule]", "2"}]}]}], "}"}], "/.", RowBox[{"severalSols", "[", RowBox[{"[", "1", "]"}], "]"}]}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"\[Phi]", "[", RowBox[{"j_Integer", ",", RowBox[{"tt_Integer", "|", "tt_Real"}], ",", " ", "x0_"}], "]"}], " ", ":=", " ", RowBox[{ RowBox[{"completeSols", "[", RowBox[{"[", "j", "]"}], "]"}], " ", "/.", " ", RowBox[{"{", RowBox[{ RowBox[{"t", "\[Rule]", "tt"}], ",", RowBox[{ SubscriptBox["x", "0"], "\[Rule]", "x0"}]}], " ", "}"}]}]}], "\[IndentingNewLine]", RowBox[{ RowBox[{"h", "[", RowBox[{"x_Integer", "|", "x_Real"}], "]"}], " ", ":=", " ", RowBox[{"\[Piecewise]", GridBox[{ { SuperscriptBox["x", FractionBox[ SubscriptBox["\[Lambda]", "2"], SubscriptBox["\[Lambda]", "1"]]], RowBox[{"x", "\[GreaterEqual]", "0"}]}, { RowBox[{"-", SuperscriptBox[ RowBox[{"Abs", "[", "x", "]"}], FractionBox[ SubscriptBox["\[Lambda]", "2"], SubscriptBox["\[Lambda]", "1"]]]}], RowBox[{"x", "<", "0"}]} }]}]}]}], "Input"] Finally, as regards your answer (g)-2, if Print returns 'Null', and I successfully evaluated the same code without the 'False' at the end of the sample, I still don't understand what use the 'False' at the end is? Thanks again, Matt