参考: Interface(インターフェース) 2017年 09 月号, pp.109-111
函数 f(x) とその近似式 g(x) との差を ε(x) とする。
f(x) = sin(pi * x / 2)
g(x) = 0.07293465 * x^5 - 0.64345777 * x^3 + 1.570657356 * x^1
ε(x) = f(x) - g(x)
f[x_] = Sin[Pi x / 2]; g[x_] = 0.07293465 x^5 - 0.64345777 x^3 + 1.570657356 x^1 ; \[CurlyEpsilon][x_] = f[x] - g[x]; xList = Range[-1, 1, 1/2^8]; (* x 軸を細かく分けて、*) \[CurlyEpsilon]List = \[CurlyEpsilon][xList]; (* それぞれの x のときの \[CurlyEpsilon] の値を求めて、*) peaks = FindPeaks[Abs[\[CurlyEpsilon]List]]; (* \[CurlyEpsilon] の峰、谷のところの x のインデックス (区間の両端も含まれる) と値とを見つけて、*) x0List = xList[[peaks[[;; , 1]]]] (* x のインデックスから x の値を見つける。*) \[CurlyEpsilon]0List = \[CurlyEpsilon][x0List] (* \[CurlyEpsilon] の峰、谷の値を求める。*)
{-1,-(7/8),-(137/256),-(9/64),9/64,137/256,7/8,1} {0.000134236,-0.000117696,0.0000714067,-0.0000129394,0.0000129394,-0.0000714067,0.000117696,-0.000134236}
リストのインデックスを指定するときのダブルブラケットは Esc[[Esc、Esc]]Esc で入力できる。[[、]] のままでもよい。
FindValleys 函数はどうやらなさそうなので谷を見つけたいときは FindPeaks 函数の引数の正負を逆にする。