眠る開発屋blog ある開発屋の雑感。日々勉強。

2008/11/18 火曜日

スプライン補間法とか

Filed under: 技術メモ — タグ: , — dev0000 @ 16:42:20

自分用メモ。

ラグランジュの補間法だと、たまに極端な山とかができてしまうので、スプラインにしてみる。

参考にしたのはここ。
補間法(スプライン)

ソースはこんな感じ。今度は線の描画付き。
[php]= 1; $i–) {
$r[$i] = $u[$i] – $g[$i] * $r[$i+1];
}

for ($i=0;$i<$n;$i++) { $q[$i] = (double) ($yy[$i+1] – $yy[$i]) / $h[$i] – $h[$i] * ($r[$i+1] + 2.0 * $r[$i]) / 3.0; $s[$i] = (double) ($r[$i+1] – $r[$i]) / (3.0 * $h[$i]); } return; } function spline($x) { global $xx, $yy, $q, $r, $s; $n = count($xx) – 1; $m = -1; for ($i=1;$i<$n && $m < 0;$i++) { if ($x < $xx[$i]) { $m = $i – 1; } } if ($m < 0) { $m = $n – 1; } $x2 = $x – $xx[$m]; $res = $yy[$m] + $x2 * ($q[$m] + $x2 * ($r[$m] + $s[$m] * $x2)); return $res; }[/php]

Powered by WordPress