Re: How to navigate the documentation?
- To: mathgroup at smc.vnet.net
- Subject: [mg110151] Re: How to navigate the documentation?
- From: Murray Eisenberg <murray at math.umass.edu>
- Date: Fri, 4 Jun 2010 08:02:28 -0400 (EDT)
Let me try the second "challenge" -- which is not too challenging after
all! (Of course it depends on your prior experience with Mathematica.
One should hardly attempt to accomplish such a task upon the first or
second moment's engagement with the system.)
The challenge begins, "In Mathematica, how do I convert the string...."
So in the Documentation Center I searched for:
convert string
At the bottom of the first page of results, I saw the entry:
Converting between Expressions & Stings
Now I know, as should any user, that in Mathematica, "everything is an
expression". So I selected that entry.
The second function cited on the target page,
guide/ConvertingBetweenExpressionsAndStrings, is ToExpression. I
selected that. And the documentation suggests that it's what to use. So
I was going to try:
ToExpression["1.23E-4"]
But everybody knows that won't work, since E in Mathematica is the base
of natural logarithms, so that the value is going to be that of
1.23*Exp[1] - 4; and indeed you get:
-0.656513
Now we have to deal with this unusual number format 1.23E-4. If you have
some prior knowledge (and why else would you have numbers in this format
at all?), then you know that it's Fortran notation. The simplist thing
is to look up what numerical formats Mathematica does understand
But here's another path. You know the notation means that you need to
multiply the mantissa 1.23 by 10^(-4), and that's usually called
scientific form. So look up "scientific form". You'll get the page
ref/ScientificForm. OK, I see that's a format Mathematica understands.
But how to enter it? Well, obviously you use the usual (1-dimensional)
input format 10^-4 instead of the 2-dimensional form.
So this now reduces the whole enterprise to the question of how to
replace E-4 in the string to 10^-4. So look up "replace string" and in
a couple of steps you'll get, for example, to ref/StringReplace. So use
that:
StringReplace["1.23E-4","E"->" 10^"]
1.23 10^-4
OK. [Notice the necessary inserted space. Of course you could instead
use the rule "E"->"*10^" .] So finally:
ToExpression[StringReplace["1.23E-4", "E" -> " 10^"]]
0.000123
Now if you're going to do this a lot, evidently you want a function to
apply to such strings:
toNumber[s_String] := ToExpression@StringReplace[s, "E" -> " 10^"]
Actually, if you know about, or look up and learn about, a shorthand
notation for exponential form in Mathematica, then you could convert the
string "1.23E-4" instead to "1.23*^-4", with no explicit base 10
indicated. So now our function becomes:
toNumber[s_String] := ToExpression@StringReplace[s, "E" -> "*^"]
(Saving two letters in the string replacement.)
Does the solution above to solving your documentation challenge satisfy
you? Or were you expecting to be able to pose such a question and
immediately get an answer in one shot?
Perhaps there is such a one-shot way, but I didn't see it. So what?
On 6/3/2010 5:39 AM, kj wrote:
> This question is about the Mathematica documentation, but it would
> more helpful to pose it in terms of an example question:
>
> "I have a file containing newline-separated records. The fields
> in each record are separated by tabs. The number of fields varies
> from one record to the next, but it always has the form 2*(n+1),
> where n>= 3. The first two fields are always alphabetic strings;
> the remaining 2*n fields are real numbers (expressed using the "E"
> notation: e.g. 1.23E-4 == 0.000123), and they represent n points
> in R^2. In summary records have the following form:
>
> <string> <TAB> <string> <TAB> <real> <TAB> ...<TAB> <real> <NL>
>
> I want to read this file into a Mathematica structure having the form
>
> {String, String, {{Real, Real}, {Real, Real}, {Real, Real}, ...}}
> "
>
>
> OK, now: The *challenge* is to find the answer to the question
> above in the Mathematica documentation.
>
>
> I'm sorry to say that, after *hours* of effort, I failed completely.
>
>
> OK, here's a much simpler question:
>
> "In Mathematica, how do I convert the string "1.23E-4" the real
> number 0.000123?"
>
> The *challenge* now is like before: find the answer to this (much
> simpler) question in the Mathematica documentation.
>
> Again, after much effort, I was not able to answer even this simple
> question using the Mathematica documentation. Can it be done at
> all???
>
>
> Someone please show me how to navigate the Mathematica documentation
> to answer basic questions like these.
>
> TIA!
>
> ~K
>
--
Murray Eisenberg murrayeisenberg at gmail.com
80 Fearing Street phone 413 549-1020 (H)
Amherst, MA 01002-1912