I have several functions that cannot be integrated analytically but are to be used (repeatedly!) in further integrations. I have created a table of values of these integrals for a mesh of parameter values. If I then use the ArrayInterpolation function to compute just one value at one point - it's very inefficient - takes lot's of time...
What is the optimal way of defining "InterpolatingFunction" (in the language of Mathematica)? Are there any fast functions that create an interpolating function with 2 or more arguments?
I really do not understand WHY is ArrayInterpolation so SLOW!!!!!!!!!!????
I have [20,20,200] data (3D array) - not so big table
using ArrayInterpolation(chiTableX, chiTable, Array([[.1, .1, .1]]), method = nearest)
takes 1 second!!!! I used the most efficient (recommended) data formats.
It's a computation in one line to extract one value out of 6 neighbors! Why it takes a second on my fast machine???
Shall I write a code for arrayinterpolation myself?
I added options degree=1, uniform=true, verify=false,
but still the performance has not improved! So, the problem is in something else, probably, in argument passing. What is the optimal form of the data to pass: Array, list ? Or what? I did it with Array, now try list
With list argument passing the performance has improved a bit, but is still poor! with 10 x 20 x 100 data and linear interpolation it was 0.016 seconds for one point!!! Very bad!