#!/usr/local/bin/perl -W while (){ next if (/^#/); last if (/__END__/); print ; chomp; next unless ($_); $i++; $x[$i] = $_; } $n = $i; print "Orden de autorregresión = "; chomp ($p = ); $k = 1/$p; for $i (1..$p){ $w[$i]=$k; } $smin = 9e99; while (++$iter<100000){ $s=$h1=0; for $i ($p+1..$n){ $f=0; for $j (1..$p){ $f+=$w[$j]*$x[$i-$j]; $h1+=$x[$i-$j]**2; } $h1=sqrt($h1); $e[$i]=$x[$i]-$f; for $j (1..$p){ $w[$j]+= 2*$k*$e[$i]/$h1*$x[$i-$j]/$h1; } $s+=$e[$i]**2; } print "\r$iter\t", $s/($n-$p+1); if ($s>=$smin){ # last; }else { $smin=$s; @wopt = @w; } } print "\nNúmero de predicciones = "; chomp ( $m = ); for $i ($n+1..$n+$m){ $f=0; for $j (1..$p){ $f+=$wopt[$j]*$x[$i-$j]; } print "$i) $f\n"; $x[$i] = $f; } print "Pesos:\n"; for $j (1..$p){ print "$wopt[$j]\n"; } __DATA__ 25 28 30 26 25 29 31 33 35 36 __END__ Adaptado de un programa en basic de 1991, a su vez adaptado de Spyro Makridakis.