3

我当前的问题是尝试在复杂函数上使用 FunctionInterpolation[] ,最容易看到这可能是当您比较以下之间的区别时:

FunctionInterpolation[Sin[t], {t, 0, 30}]
Plot[%[t], {t, 0, 30}]

FunctionInterpolation[Sin[t], {t, 0, 1000}]
Plot[%[t], {t, 0, 30}]

通过增加函数的域,插值变得非常不准确,我正在寻找一种方法来创建一个 FunctionInterpolation[] ,它对于任意长的域具有任意高的精度。短域似乎是可能的,但到目前为止我一直无法找到两者的解决方案。

如果这是不可能的,为什么不呢?我不知道 InterpolationFunction 的形式有什么特别之处吗?

4

3 回答 3

3

您也可以尝试包括衍生品:

FunctionInterpolation[{Sin[t], Cos[t], -Sin[t], -Cos[t]}, {t, 0, 1000}]
Plot[%[t], {t, 0, 100}]

阴谋

于 2012-09-24T12:14:08.303 回答
2

您显然可以通过对函数范围使用未记录的语法来增加基础采样频率:

FunctionInterpolation[Sin[t], {t, 0, 1000, 20}]

Plot[%[t], {t, 0, 30}]

数学图形

于 2012-09-24T21:30:33.293 回答
2

尝试使用大赞的未记录选项InterpolationOrder->nn例如50

With[{func = FunctionInterpolation[Sin[t], {t, 0, 1000}]}, 
  Plot[func[x], {x, 150, 160}]
]

在此处输入图像描述

With[{func = FunctionInterpolation[Sin[t], {t, 0, 1000}, InterpolationOrder -> 50]}, 
  Plot[func[x], {x, 150, 160}]
]

在此处输入图像描述

您也可以尝试未记录的InterpolationPoints

With[{func = FunctionInterpolation[Sin[t], {t, 0, 1000}, InterpolationPoints -> 50]}, 
  Plot[func[x], {x, 150, 160}]
]

在此处输入图像描述

于 2016-05-16T21:48:26.127 回答