Interpolation in Mathematics

Please consider the following distribution:

rs={{400, 0.00929}, {410, 0.0348}, {420, 0.0966}, {430, 0.2}, {440, 0.328}, {450, 0.455}, {460, 0.567}, {470, 0.676}, {480, 0.793}, {490, 0.904}, {500, 0.982}, {510, 0.997}, {520,0.935}, {530, 0.811}, {540, 0.65}, {550, 0.481}, {560, 0.329}, {570,0.208}, {580, 0.121}, {590, 0.0655}, {600, 0.0332}, {610, 0.0159}, {620, 0.00737}, {630, 0.00334}, {640, 0.0015}, {650,0.000677}, {660, 0.000313}, {670, 0.000148}, {680, 0.0000715}, {690,0.0000353}, {700, 0.0000178}} 

enter image description here

How could I interpolate this distribution to get values ​​for points anywhere on the X-axis?

+4
source share
3 answers

Just use the standard Interpolation function:

 rsInterpolation = Interpolation@rs ; Plot[ rsInterpolation@x , {x, 400, 700}] 

Result

If you want to set up a specific class of functions (e.g. normal distribution), use FindFit .

+6
source

If you need good derivatives, you can do something like:

 interp = Interpolation[rs, InterpolationOrder -> 3, Method -> "Spline"] Show[Plot[{interp[x], 10 interp'[x]}, {x, Min[First /@ rs], Max[First /@ rs]}, PlotRange -> Full], ListPlot@rs ] 

enter image description here

Look at the difference in the behavior of derivatives when using the Spline method:

 interp = Interpolation[rs, InterpolationOrder -> 3, Method -> "Spline"] interp1 = Interpolation[rs, InterpolationOrder -> 3] Show[Plot[{interp1'[x], interp'[x] - .005}, {x, Min[First /@ rs], Max[First /@ rs]}, PlotRange -> Full]] 

enter image description here

+5
source

If this is a distribution, I think you should use SmoothKernelDistribution .

0
source

All Articles