Mathematica How to get data points from plot?

  • Thread starter Thread starter member 428835
  • Start date Start date
  • Tags Tags
    Data Plot Points
AI Thread Summary
The discussion centers on extracting data points from a plot generated by NDSolve in Mathematica for use in LaTeX with TikZ. Users suggest that the output of NDSolve is an InterpolatingFunction object, which can be accessed to obtain interpolation points using specific commands. One participant shares code to evaluate the function at desired points, while another expresses difficulty with error messages. There is a consensus that while embedding plots directly in LaTeX is challenging, using Mathematica's output can simplify the process. Overall, the thread provides practical solutions for integrating Mathematica plots into LaTeX documents.
member 428835
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!
 
Physics news on Phys.org
It is usually better to get a screen grab of your plot then embed in your LaTeX document as a graphic.
 
joshmccraney said:
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!
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.
 
Dale said:
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.
Hi Dale!

I have the following code
Code:
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!
 
You could simply evaluate the interpolated function at the desired points:

Code:
Table[{x, Evaluate[y[x] /. s][[1]]}, {x, 0, 3/2, stepsize}]
or
Code:
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.
 
  • Like
Likes Dale and member 428835
Very nice Fightfish! Inputting these into latex will be the worst, but this is a good way to get it done! Thanks!
 
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!
 
joshmccraney said:
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!
I like Fightfish's approach better. It turns out that my approach is not as simple as I has remembered.
 
Back
Top