Как извлечь все данные из InterpolatingFunction для создания идентичных?

В комментариях к моему предыдущему вопросу было предложено извлечь все данные из InterpolatingFunction , сгенерированные Mathematica 5.2, а затем создать еще один в Mathematica 8.Предлагаемый подход заключается в использовании функций, определенных в пакете DifferentialEquations`InterpolatingFunctionAnatomy` , для извлечения данных из InterpolatingFunction . Попробовав наивно,

Needs["DifferentialEquations`InterpolatingFunctionAnatomy`"]
ifun = First[
   x /. NDSolve[{x'[t] == Exp[x[t]] - x[t], x[0] == 1}, 
     x, {t, 0, 10}]];
data = Transpose@{InterpolatingFunctionGrid[ifun], 
    InterpolatingFunctionValuesOnGrid[ifun]};
interpolationOrder = 
  Developer`FromPackedArray@
   InterpolatingFunctionInterpolationOrder[ifun];
ifun2 = Interpolation[data, InterpolationOrder -> interpolationOrder];
Table[ifun[x] - ifun2[x], {x, 0, 0.5160191740198963`, .1}]

я получаю существенную разницу между исходной функцией и восстановленной:

{0., 2.13061*10^-7, 2.05087*10^-7, 2.46198*10^-7, 6.68937*10^-7, 
 1.5624*10^-7}

Глядя на InputForm этих функций, видно, что они не идентичны. Можно ли восстановить InterpolatingFunction путем извлечения из нее всех данных и вызова Interpolation для извлеченных данных?

6
задан Community 23 May 2017 в 10:34
поделиться