Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Mathematica How to get data points from plot?

  1. May 12, 2016 #1

    joshmccraney

    User Avatar
    Gold Member

    Hi PF!

    I used NDSolve to find the solution to a differential equation. I then plotted the solution in mathematica. However, I would like to be able to plot this in LaTex, specifically in TikZ. Can anyone help me here?

    Thanks so much!
     
  2. jcsd
  3. May 12, 2016 #2

    Simon Bridge

    User Avatar
    Science Advisor
    Homework Helper
    Gold Member
    2016 Award

    It is usually better to get a screen grab of your plot then embed in your LaTeX document as a graphic.
     
  4. May 12, 2016 #3

    Dale

    Staff: Mentor

    The output of NDSolve is an InterpolatingFunction object. If the InterpolatingFunction object is named "f" then "f[[2]]" will produce a table containing the interpolation points.
     
  5. May 12, 2016 #4

    joshmccraney

    User Avatar
    Gold Member

    Hi Dale!

    I have the following code
    Code (Text):

    a=0;
    s = NDSolve[{y[x] y''[x] + 2 (y'[x])^2 + x y'[x] - 2 a/(1 + a) y[x] ==
          0, y[1] == .0000000000001, y'[1] == -1/2}, y, {x, 0, 3/2}];
    s[[2]]
     
    but then I receive the response "Part 2 of..." followed by a long error message. Am I doing something wrong?

    Thanks so much for your help!
     
  6. May 12, 2016 #5
    You could simply evaluate the interpolated function at the desired points:

    Code (Text):
    Table[{x, Evaluate[y[x] /. s][[1]]}, {x, 0, 3/2, stepsize}]
    or
    Code (Text):
    Table[{x, s[[1, 1, 2]][x]}, {x, 0, 3/2, stepsize}]
    The interpolating function itself is nested within [[1,1,2]] of the NDSolve output.
     
  7. May 12, 2016 #6

    joshmccraney

    User Avatar
    Gold Member

    Very nice Fightfish! Inputting these into latex will be the worst, but this is a good way to get it done! Thanks!
     
  8. May 12, 2016 #7

    joshmccraney

    User Avatar
    Gold Member

    Actually, it took no time at all! Once copy-pasting mathematica's output, I used the "replace and find" search key and replaced "}" with ")" and the commas after the parenthesis with "to" etc. Thanks a ton!
     
  9. May 12, 2016 #8

    Dale

    Staff: Mentor

    I like Fightfish's approach better. It turns out that my approach is not as simple as I has remembered.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted