<?php
$handle = fopen("fuji.txt", "r");
$num = 1;
while (($csvdata = fgetcsv($handle, 100000, ",")) !== FALSE) {
for ($rank=0; $rank < 2; $rank++) {
$data[$num] = $csvdata[$rank];
$num = $num +1;
}
}
fclose($handle);
for ($s=1; $s < 101; $s++) {
$num=2*$s-1;
$c[$s]=$data[$num];
$y[$s]=$data[$num+1];
}
for ( $s=1; $s<=100; $s++ ){
$th[$s] = 0.02 * $s;
}
$t=0;
$h=0.001;
Do {
for($s = 1; $s < 101; $s++) {
for($n1 = -1; $n1 < 2; $n1++) {
for($n2 = -1; $n2 < 2; $n2++) {
$c1 = $c[$s] + $n1 * $h;
$y1 = $y[$s] + $n2 * $h;
$l1 = $y1 / $th[$s];
$pp = 0;
If ($c1 < 0.01) {
$pp = 1;
}
If ($l1 < 0) {
$pp = 1;
}
If ($l1 > 0.99) {
$pp = 1;
}
If ($pp == 1) {
$c1 = 0.5;
}
If ($pp == 1) {
$l1 = 0.5;
}
$u1 = Log($c1) + Log(1 - $l1);
If ($pp == 1) {
$u1 = -999;
}
$u[$s][$n1][$n2] = $u1;
}
}
}
for($s = 1; $s < 100; $s++) {
for($n1 = -1; $n1 < 2; $n1++) {
for($n2 = -1; $n2 < 2; $n2++) {
$c1 = $c[$s] + $n1 * $h;
$y1 = $y[$s] + $n2 * $h;
$l1 = $y1 / $th[$s+1];
$pp = 0;
If ($c1 < 0.01) {
$pp = 1;
}
If ($l1 < 0.01) {
$pp = 1;
}
If ($pp == 1) {
$c1 = 0.5;
}
If ($pp == 1) {
$l1 = 0.5;
}
$u1 = Log($c1) + Log(1 - $l1);
If ($pp == 1) {
$u1 = -999;
}
$w[$s][$n1][$n2] = $u1;
}
}
}
for($n1 = -1; $n1 < 2; $n1++) {
for($n2 = -1; $n2 < 2; $n2++) {
$q=$n2-$n1;
$v[1][$n1][$n2][$q] =$u[1][$n1][$n2] ;
}
}
for($s = 2; $s < 99; $s++) {
for($n1 = -1; $n1 < 2; $n1++) {
for($n2 = -1; $n2 < 2; $n2++) {
for($q = -25; $q < 26; $q++) {
$qx = $q + $n1 - $n2;
$pp = 0;
If ($qx > 25) {
$pp = 1;
}
If ($qx < -25) {
$pp = 1;
}
If ($pp == 1) {
$qx=0;
}
$vs = -999;
for($m1 = -1; $m1 < 2; $m1++) {
for($m2 = -1; $m2 < 2; $m2++) {
$v1 = $u[$s][$n1][$n2] + $v[$s-1][$m1][$m2][$qx];
If ( $w[$s-1][$m1][$m2] > $u[$s][$n1][$n2] ) {
$v1 = -999;
}
If ( $v1 > $vs ) {
$ms1 = $m1;
}
If ( $v1 > $vs ) {
$ms2 = $m2;
}
If ( $v1 > $vs ) {
$qxs = $qx;
}
If ( $v1 > $vs ) {
$vs = $v1;
}
}
}
If ($pp == 1) {
$vs=-999;
}
$v[$s][$n1][$n2][$q]=$vs;
$gotoc[$s][$n1][$n2][$q]=$ms1;
$gotoy[$s][$n1][$n2][$q]=$ms2;
$gotoq[$s][$n1][$n2][$q]=$qxs;
}
}
}
}
for($n1 = -1; $n1 < 2; $n1++) {
for($n2 = -1; $n2 < 2; $n2++) {
$qx = $n1 - $n2;
$vs = -999;
for($m1 = -1; $m1 < 2; $m1++) {
for($m2 = -1; $m2 < 2; $m2++) {
$v1 = $u[100][$n1][$n2] + $v[99][$m1][$m2][$qx];
If ( $w[99][$m1][$m2] > $u[100][$n1][$n2] ) {
$v1 = -999;
}
If ( $v1 > $vs ) {
$ms1 = $m1;
}
If ( $v1 > $vs ) {
$ms2 = $m2;
}
If ( $v1 > $vs ) {
$qxs = $qx;
}
If ( $v1 > $vs ) {
$vs = $v1;
}
}
}
$endv[$n1][$n2]=$vs;
$endc[$n1][$n2]=$ms1;
$ebdy[$n1][$n2]=$ms2;
$endq[$n1][$n2]=$qxs;
}
}
$vs=-999;
for($n1 = -1; $n1 < 2; $n1++) {
for($n2 = -1; $n2 < 2; $n2++) {
If ( $endv[$n1][$n2] > $vs ) {
$nx1 = $n1;
}
If ( $endv[$n1][$n2] > $vs ) {
$nx2 = $n2;
}
If ( $endv[$n1][$n2] > $vs ) {
$vs = $endv[$n1][$n2];
}
}
}
$opc[100] = $nx1;
$opy[100] = $nx2;
$opc[99] = $endc[$opc[100]][$opy[100]];
$opy[99] = $endy[$opc[100]][$opy[100]];
$opq[99] = $endq[$opc[100]][$opy[100]];
for($j = 1; $j < 99; $j++) {
$s=99-$j;
$opc[$s] = $gotoc[$s+1][$opc[$s+1]][$opy[$s+1]][$opq[$s+1]];
$opy[$s] = $gotoy[$s+1][$opc[$s+1]][$opy[$s+1]][$opq[$s+1]];
$opq[$s] = $gotoq[$s+1][$opc[$s+1]][$opy[$s+1]][$opq[$s+1]];
}
$e = 0;
for($s = 1; $s < 101; $s++) {
$e = $e + pow($opc[$s],2)+ pow($opy[$s],2);
}
If ( $e < 2 ) {
$h = $h/2;
}
If ( $h < 0.0001 ) {
$t = 1000;
}
print($t);
print(",");
print($e);
print(",");
print($vs);
print(",");
for($s = 1; $s < 101; $s++) {
$c[$s] = $c[$s] + $opc[$s] * $h;
$y[$s] = $y[$s] + $opy[$s] * $h;
}
$t=$t+1;
}
while($t < 100);
?>
最終更新:2009年11月27日 16:01