2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2
 
 
Сообщение23.06.2008, 17:55 
ewert писал(а):
пожалуй, стоит начать вот с чего.
А до того, как с этого начать --- не перейти ли нам в систему центра тяжести данных, где средние равны нулю?

Добавлено спустя 2 минуты 1 секунду:

Впрочем, метка гласит, что вопрос решён (т.е. видимо контрольная сдана)

 
 
 
 
Сообщение23.06.2008, 20:22 
Алексей К. писал(а):
А до того, как с этого начать --- не перейти ли нам в систему центра тяжести данных, где средние равны нулю?

Имеются в виду взвешенные средние? Это ровным счётом ничего не меняет, это просто часть решения задачи.

Хотя погрешности округлений при такой последовательности вычислений -- действительно, вообще говоря, уменьшатся.

 
 
 
 Re: Метод наименьших квадратов
Сообщение09.04.2010, 19:46 
Облегчённая версия программы, может кому пригодится.
Код:
#!/usr/bin/perl -w
#   Least squares method.

open( DAT, "< 1.dat" ) or die "Couldn't open file for    &!\n";

while ( $line = <DAT> ) {
   $line =~ m/^([^\s]+)\s+([^\s]+)\s+([^\s]+)/gi;
   push @x, $1;
   push @y, $2;
   push @z, $3;
   $n++;
}

for ( $i = 0 ; $i <= $n - 1 ; $i++ ) {
   $A1 += 1 / $z[$i]**2;
   $A2 += $x[$i]**2 / $z[$i]**2;
   $A3 += $x[$i] / $z[$i]**2;
   $A4 += $y[$i] / $z[$i]**2;
   $A5 += $x[$i] * $y[$i] / $z[$i]**2;
}
$delta = $A1 * $A2 - $A3**2;
$b     = sprintf( "%.6e", 1 / $delta * ( $A4 * $A2 - $A5 * $A3 ) );
$a     = sprintf( "%.6e", 1 / $delta * ( $A5 * $A1 - $A4 * $A3 ) );


$delta_b = sprintf( "%.6e", sqrt( 1 / $delta * $A3 ) );
$delta_a = sprintf( "%.6e", sqrt( 1 / $delta * $A1 ) );
close(DAT);

# Data output

print "A = $a Delta A = $delta_a\n";
print "B = $b Delta B = $delta_b\n";

 
 
 [ Сообщений: 18 ]  На страницу Пред.  1, 2


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group