# Multidimensional Interpolation with 3 independent Variables with modfied data set [duplicate]

I have four column data with first 3 column denoting x,y,z and fourth column energy. x variable is actually angle. Now I want to interpolate over all three indepdent variable (x,y.z) with corresponding energy value. I have done Mathematica script which i attach below

f1 = Interpolation[d1]


This gives an error :

Interpolation::indim: The coordinates do not lie on a structured tensor product grid. >>

What could be the correct way of interpolation over 3 variables?

I have modified the data as you said. Modified reduced data set (total 155 points) also gave me the above mentioned error message. If you look at the data carefully, for 0deg second column data range from 4:5.5(0.25) and this is not so for other angles. If I delete data corresponding to 5.25 then above code works. fine. If I keep the data corresponding to 5.25 then code fails. Is there any way to force Mathematica interpolate keeping 5.25 data.

Here I provide the data as taken from Mathematica

Here is my data:

d1 = {{{0., 4., 1.3}, -103.005}, {{0., 4., 1.32}, -103.002},
{{0., 4., 1.34}, -102.999}, {{0., 4., 1.35}, -102.997},
{{0., 4., 1.36}, -102.995}, {{0., 4.25, 1.3}, -103.005},
{{0., 4.25, 1.32}, -103.002}, {{0., 4.25, 1.34}, -102.999},
{{0., 4.25, 1.35}, -102.997}, {{0., 4.25, 1.36}, -102.996},
{{0., 4.5, 1.3}, -103.004}, {{0., 4.5, 1.32}, -103.001},
{{0., 4.5, 1.34}, -102.998}, {{0., 4.5, 1.35}, -102.997},
{{0., 4.5, 1.36}, -102.995}, {{0., 4.75, 1.3}, -103.003},
{{0., 4.75, 1.32}, -103.}, {{0., 4.75, 1.34}, -102.997},
{{0., 4.75, 1.35}, -102.996}, {{0., 4.75, 1.36}, -102.994},
{{0., 5., 1.3}, -103.003}, {{0., 5., 1.32}, -102.999}, {{0., 5., 1.34}, -102.996},
{{0., 5., 1.35}, -102.995}, {{0., 5., 1.36}, -102.993},
{{0., 5.25, 1.3}, -103.002}, {{0., 5.25, 1.32}, -102.999},
{{0., 5.25, 1.34}, -102.995}, {{0., 5.25, 1.35}, -102.994},
{{0., 5.25, 1.36}, -102.992}, {{0., 5.5, 1.3}, -103.001},
{{0., 5.5, 1.32}, -102.998}, {{0., 5.5, 1.34}, -102.995},
{{0., 5.5, 1.35}, -102.993}, {{0., 5.5, 1.36}, -102.992},
{{15., 4., 1.3}, -103.003}, {{15., 4., 1.32}, -103.}, {{15., 4., 1.34}, -102.997},
{{15., 4., 1.35}, -102.995}, {{15., 4., 1.36}, -102.993},
{{15., 4.25, 1.3}, -103.004}, {{15., 4.25, 1.32}, -103.001},
{{15., 4.25, 1.34}, -102.997}, {{15., 4.25, 1.35}, -102.996},
{{15., 4.25, 1.36}, -102.994}, {{15., 4.5, 1.3}, -103.003},
{{15., 4.5, 1.32}, -103.}, {{15., 4.5, 1.34}, -102.997},
{{15., 4.5, 1.35}, -102.995}, {{15., 4.5, 1.36}, -102.994},
{{15., 4.75, 1.3}, -103.003}, {{15., 4.75, 1.32}, -103.},
{{15., 4.75, 1.34}, -102.996}, {{15., 4.75, 1.35}, -102.995},
{{15., 4.75, 1.36}, -102.993}, {{15., 5., 1.3}, -103.002},
{{15., 5., 1.32}, -102.999}, {{15., 5., 1.34}, -102.996},
{{15., 5., 1.35}, -102.994}, {{15., 5., 1.36}, -102.992},
{{15., 5.5, 1.3}, -103.001}, {{15., 5.5, 1.32}, -102.998},
{{15., 5.5, 1.34}, -102.995}, {{15., 5.5, 1.35}, -102.993},
{{15., 5.5, 1.36}, -102.991}, {{30., 4., 1.3}, -103.},
{{30., 4., 1.32}, -102.997}, {{30., 4., 1.34}, -102.993},
{{30., 4., 1.35}, -102.992}, {{30., 4., 1.36}, -102.99},
{{30., 4.25, 1.3}, -103.001}, {{30., 4.25, 1.32}, -102.998},
{{30., 4.25, 1.34}, -102.995}, {{30., 4.25, 1.35}, -102.993},
{{30., 4.25, 1.36}, -102.992}, {{30., 4.5, 1.3}, -103.001},
{{30., 4.5, 1.32}, -102.998}, {{30., 4.5, 1.34}, -102.995},
{{30., 4.5, 1.35}, -102.993}, {{30., 4.5, 1.36}, -102.992},
{{30., 4.75, 1.3}, -103.001}, {{30., 4.75, 1.32}, -102.998},
{{30., 4.75, 1.34}, -102.995}, {{30., 4.75, 1.35}, -102.993},
{{30., 4.75, 1.36}, -102.992}, {{30., 5., 1.3}, -103.001},
{{30., 5., 1.32}, -102.998}, {{30., 5., 1.34}, -102.994},
{{30., 5., 1.35}, -102.993}, {{30., 5., 1.36}, -102.991},
{{30., 5.5, 1.3}, -103.}, {{30., 5.5, 1.32}, -102.997},
{{30., 5.5, 1.34}, -102.994}, {{30., 5.5, 1.35}, -102.992},
{{30., 5.5, 1.36}, -102.991}, {{45., 4., 1.3}, -102.999},
{{45., 4., 1.32}, -102.996}, {{45., 4., 1.34}, -102.993},
{{45., 4., 1.35}, -102.991}, {{45., 4., 1.36}, -102.989},
{{45., 4.25, 1.3}, -103.}, {{45., 4.25, 1.32}, -102.997},
{{45., 4.25, 1.34}, -102.993}, {{45., 4.25, 1.35}, -102.992},
{{45., 4.25, 1.36}, -102.99}, {{45., 4.5, 1.3}, -103.},
{{45., 4.5, 1.32}, -102.997}, {{45., 4.5, 1.34}, -102.994},
{{45., 4.5, 1.35}, -102.992}, {{45., 4.5, 1.36}, -102.99},
{{45., 4.75, 1.3}, -103.}, {{45., 4.75, 1.32}, -102.997},
{{45., 4.75, 1.34}, -102.994}, {{45., 4.75, 1.35}, -102.992},
{{45., 4.75, 1.36}, -102.99}, {{45., 5., 1.3}, -103.},
{{45., 5., 1.32}, -102.997}, {{45., 5., 1.34}, -102.994},
{{45., 5., 1.35}, -102.992}, {{45., 5., 1.36}, -102.99}, {{45., 5.5, 1.3}, -103.},
{{45., 5.5, 1.32}, -102.997}, {{45., 5.5, 1.34}, -102.993},
{{45., 5.5, 1.35}, -102.992}, {{45., 5.5, 1.36}, -102.99},
{{60., 4., 1.3}, -102.999}, {{60., 4., 1.32}, -102.996},
{{60., 4., 1.34}, -102.993}, {{60., 4., 1.35}, -102.991},
{{60., 4., 1.36}, -102.99}, {{60., 4.25, 1.3}, -103.},
{{60., 4.25, 1.32}, -102.996}, {{60., 4.25, 1.34}, -102.993},
{{60., 4.25, 1.35}, -102.991}, {{60., 4.25, 1.36}, -102.99},
{{60., 4.5, 1.3}, -103.}, {{60., 4.5, 1.32}, -102.996},
{{60., 4.5, 1.34}, -102.993}, {{60., 4.5, 1.35}, -102.992},
{{60., 4.5, 1.36}, -102.99}, {{60., 4.75, 1.3}, -103.},
{{60., 4.75, 1.32}, -102.996}, {{60., 4.75, 1.34}, -102.993},
{{60., 4.75, 1.35}, -102.991}, {{60., 4.75, 1.36}, -102.99},
{{60., 5., 1.3}, -102.999}, {{60., 5., 1.32}, -102.996},
{{60., 5., 1.34}, -102.993}, {{60., 5., 1.35}, -102.991},
{{60., 5., 1.36}, -102.99}, {{60., 5.5, 1.3}, -102.999},
{{60., 5.5, 1.32}, -102.996}, {{60., 5.5, 1.34}, -102.993},
{{60., 5.5, 1.35}, -102.991}, {{60., 5.5, 1.36}, -102.99}};

• Please format your data so that we can actually evaluate your code. You could also reduce the amount of data, which might even help to reduce the problem. Without working code helping will be difficult and the question may be closed due to that. Jul 3, 2015 at 17:04
• I Formated the data and explained in more detail and kindly please have a look at it Jul 4, 2015 at 21:26
• Please provide the data as a comma-separated list / matrix. Essentially jusy copy & paste from Mathematica. See e.g. mathematica.stackexchange.com/q/77838/131. Jul 5, 2015 at 7:42
• Interpolation[d1, InterpolationOrder -> 1] seems to work without any problem. Jul 7, 2015 at 13:54
• This post explains how to copy code. Jul 7, 2015 at 13:58

I am using Mathematica 10.1 on Win7-64 bit. Using Interpolation and the data you posted, the following seems to work fine on my system:

interpfun = Interpolation[data, InterpolationOrder -> All]


You can then use the interpfun object we obtained to calculate interpolated values:

interpfun[15, 4.3, 1.32]
(* Out: -102.963 *)

• I use mathematica 7 and using it, I checked your command given above and it did not work and instead gave me error message given below Interpolation::inord: Value of option InterpolationOrder -> All should be a non-negative machine-sized integer or a list of integers with length equal to the number of dimensions, Jul 7, 2015 at 17:04
• @george that option may not be applicable to MMA v.7. What happens if you remove it altogether? Alternatively, what if you specify an explicit order of interpolation (e.g. InterpolationOrder -> 1)? Jul 7, 2015 at 17:20
• In both cases too(removing and specifying an order), it does not work in MMA v.7. Jul 7, 2015 at 17:38
• @george Could you be more specific? What error message do you get in those cases? Jul 7, 2015 at 18:04
• The same error message as before. Interpolation::indim: The coordinates do not lie on a structured tensor product grid. >> Jul 7, 2015 at 20:38