ガイガーのHP

この前のHPがBANされたので、新しいの作った。

そして、近似曲線を書いてみた。

PHP慣れてないから、構文でエラーになることが多くて苦労する。

[php]
function getPolyfit($data, $N, $M)
{

$polyfitdata=array();

$i = 0;
$j = 0;
$k = 0;
$x = array();
$y = array();
$s = array();
$a = array();
$t = array();
$d = 0;
$px = 0;

// データの取得
for ($i = 0; $i < $N; $i++)
{
$x[] = $i;
$y[] = $data[$i];
}

for ($i = 0; $i < $N; $i++)
{
for ($j = 0; $j <= 2 * $M; $j++) // s0からs2mの計算
$s[$j] = $s[$j] + pow($x[$i], $j);

for ($j = 0; $j <= $M; $j++) // t0からtmの計算
$t[$j] = $t[$j] + pow($x[$i], $j) * $y[$i];
}

// $a[][]に$s[],$t[]の値を入れる
for ($i = 0; $i <= $M; $i++)
{
for ($j = 0; $j <= $M; $j++)
$a[$i][$j] = $s[$i + $j];

$a[$i][$M + 1] = $t[$i];
}

// はき出し
for ($k = 0; $k <= $M; $k++)
{
$p = $a[$k][$k];
for ($j = $k; $j <= $M + 1; $j++)
$a[$k][$j] = $a[$k][$j] / $p;

for ($i = 0; $i <= $M; $i++)
{
if ($i != $k)
{
$d = $a[$i][$k];
for ($j = $k; $j <= $M + 1; $j++)
$a[$i][$j] = $a[$i][$j] – $d * $a[$k][$j];
}
}
}

// 補間多項式によるyの値の計算
for ($px=0; $px < $N; $px++)
{
$p = 0;
for ($k = 0; $k <= $M; $k++)
$p = $p + $a[$k][$M + 1] * pow($px, $k);

$polyfitdata[] = $p;
}

return $polyfitdata;

}
[/php]

しばらくしたら、すっかり忘れるんだろうな。。

サイトはこちら↓
http://kappa.toypark.in/geiger/
http://kappa.toypark.in/geiger/index.php?limit=1000
limitは表示したい点数(デフォルトは499)

コメントを残す

%d人のブロガーが「いいね」をつけました。