Wolfram mathematica 提高Mathematica函数插值精度/域

Wolfram mathematica 提高Mathematica函数插值精度/域,wolfram-mathematica,Wolfram Mathematica,我当前的问题是试图在复杂函数上使用FunctionInterpolation[],最容易看到的可能是在比较以下两者之间的差异时: FunctionInterpolation[Sin[t], {t, 0, 30}] Plot[%[t], {t, 0, 30}] 及 通过增加函数的域,插值变得非常不准确,我正在寻找一种方法来创建一个函数插值[],对于任意长的域具有任意高的精度。这似乎是可能的短域,但我一直无法找到一个解决方案,为这两个 如果这是不可能的,为什么不呢?插值函数的形式有什么我不知道的特

我当前的问题是试图在复杂函数上使用FunctionInterpolation[],最容易看到的可能是在比较以下两者之间的差异时:

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

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


如果这是不可能的,为什么不呢?插值函数的形式有什么我不知道的特殊之处吗?

你也可以尝试包含导数:

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

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

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

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

尝试未记录选项
InterpolationOrder->n
,使用一个大的
n
例如
50

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

您也可以尝试未记录的
插值点

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

你知道你的函数是周期性的吗?啊,谢谢你,这非常有用。。。在试图找到您所展示的语法信息(FunctionIntorporation文档中没有)时,我发现了一个可能等效的方法,它似乎允许任意精度:FunctionInterpolation[{Sin[t]},{t,0,1000},InterpolationOrder->30]@user1694253是的,请看作用域部分下的示例。为便于将来参考,本文档似乎对FunctioniTerPlate也基本有效。啊,是的,你是对的。现在我觉得有点傻/瞎。再次感谢。@user1694253嘿,没问题,我一直都会遇到这种情况。有趣的是,即使在Mathematica 10.3.0.0的当前版本中,语法高亮显示此“红色”表示错误,即使它有效。@JessRiedel值得向他们发送有关此问题的建议/报告:报告越多,更高的可能性将在下一版本中修复。进一步阅读未记录的
函数插值
选项:谢谢,注意
插值点
显然与
绘图
绘图点
选项相同,根据需要生成更多点。我要提醒大家的是,如果函数不是那么平滑的话,
InterpolationOrder
方法可能无法很好地工作。
InterpolationOrder
的大值只是扩展的泰勒级数,所以它们可能只对解析函数(或接近解析函数)有意义。
With[{func = FunctionInterpolation[Sin[t], {t, 0, 1000}, InterpolationOrder -> 50]}, 
  Plot[func[x], {x, 150, 160}]
]
With[{func = FunctionInterpolation[Sin[t], {t, 0, 1000}, InterpolationPoints -> 50]}, 
  Plot[func[x], {x, 150, 160}]
]