科学と家事とプログラミング (python を中心に)

python 温度計測 湿度計測 DS18B20 USB9097

高級な補間公式が、万能とは限らないのです。

補間公式には、ラグランジュ、エルミート、スプライン...と、各種ありますが、 私がよく使うのは、線形補間(直線補間)とAkima-Spline の 2 種類くらいです(JPL の惑星歴のチェビシェフは除く)。 線形補間(直線補間)とは、随分と原始的なものを使うのですね...と思う人がいるかもしれませんが、 高級な補間公式で安全性を保障するのは、結構むずかしかったりします。

高級な補間公式の弱点

高級な補間公式は、(使い方を間違わなければ) 少ないサンプル点で高い精度を実現できますが、 それらは以下のような欠点ももっています。

  • 単調性が保証されない
  • 高階差分を適用するとき桁落ちが発生しやすい

これらの欠点について注意が払われることは、少ないように思います。 数値計算の教科書も、精度の観点から議論が多くを占めて、 単調性が保証されない点に関しては、たとえ記述されていたとしても さらりと一言述べられるだけの事が多いようです。 記述量が少ないため、読み飛ばされることもしばしば。 実運用や解析ツールの設計においては、とても大切な特性ですが、 痛い目に会わないと、なかなか身に付かない知見の一つかと思い、 ここに紹介します。

単調性の保証が大事な時

例えば、軌道情報が時系列データ(点列)として与えられたときに、 距離 R がある閾値を下回るタイミングを求めたいとする。 このとき、単調性が保証されない補間公式を使うと、 偽のイベントがジッターのように出現する可能性がある。 次の図では、本当のタイミングは time が 1.1 を超えあたりにありそうだけど、 高次の補間を使って求めようとしたために 0.9 ~ 1.0 の間に偽の事象が出現しています。

f:id:sken20k:20180417185817j:plain

補間の時に最後の Time = 1.2 の点を使わないのが原因ではないか? と思う人がいるかもしれませんが、Time = 1.0 までの点が揃ったところで、 直近のN 点から事象を判定する場面は、そう無理な仮定ではなかろうと思います。 高次の補間公式で単調性を保証するのは、いろいろとむずかしいので、 とにかく安全を保証したい場面でであれば、単調性が保証できる線形補間を使うことを お勧めする次第です。

上の図は、単調性が保たれない箇所を拡大しています。元のスケールで補間の様子全体を 表示すると以下のようになります(6点を使ったラグランジュ補間)。 f:id:sken20k:20180420183939j:plain

高階差分の桁落ち

高次の補間は、単調性の話以外にも精度の面で問題が生じる場合があります。 具体的には、補間公式には高階の差分演算が現れるため、似たような数値の減算の繰り返し が多くなり、次数が高くなるほど、つまり階数が深くなるほど、桁落ちが生じやすくなるからです。 これに対抗するには、最初のデータの有効桁を増やすしかありません。 時刻を例にとれば、準ユリウス日ユリウス日を時刻に使っていたりすると、 高階差分のために思わぬ誤差が生じることがあるので注意が必要です。 最近では、2000年からの時刻が使われたりすることもありますが、高い精 度が求められる場合には、解析期間の開始時刻を時刻原点に採用するのが無難です。 普段、あまり次数の高い補間公式を使わないようにしていても、DOP853 という 高精度の数値積分のルーチンに組み込まれた densout (稠密出力)などを利用する 場面で、あまり意識することなく、高階の差分を使ってしまうこともあります。

落穂ひろい

高次の補間公式が振動する話は有名ですが、単調性に焦点を当てた議論というのは 少ないように思います。教科書を書いている数値計算の専門家にとっては あたりまえのことであるので、ページ数が限られている教科書においては、 話が精度に偏ってしまうのも仕方ないことかもしれません。あるいは、 数値計算の専門家(研究者)には、実運用のシステムを設計/運用する経験はほとんどないと 思われるので、適用場面で重用になる特性に興味が薄いことも一因かと疑ったりしています。 というわけで、たとえあたりまえの話であっても、ある程度のボリュームを割いて、議論する意味 というのはあるのかなと思う次第です。もちろん、知識の効率的な吸収という観点とは相反するわけだけれども、 ある種の無駄は必要だろうという立場をとります。

少し一般的な話をすると、およそ公式や手法には、それぞれ利点だけでなく欠点もあるものです。 使える場面や条件を明晰に意識できるかどうかが、応用が利くかどうかの分かれ目ですね。 利点だけでなく欠点や制約を2つ3つ列挙できるかどうかが、その手法の理解度を測るバロメータ だと言う人もいます。

Akima Spline については、別記事にて...