Есть вот такой код:
Code
procedure TForm1.Button2Click(Sender: TObject);
var i, n: LongWord;
k,b,summa_x,summa_x_2,summa_x_y: real;
TF: TextFile;
X: array of real;
openfile: boolean;
begin
openfile:=True;
try
SetLength(X,50000);
i:=0;
AssignFile(TF,'dano.txt');
Reset(TF);
try
repeat
ReadLn(TF,X[i]);
Inc(i);
until Eof(TF);
SetLength(X,i);
finally
CloseFile(TF);
end;
except
openfile:=False;
end;
if openfile then
begin
summa_x := 0;
summa_x_2 := 0;
summa_x_y := 0;
n := Length(X);
for i := 1 to n do
begin
summa_x := summa_x + X[i];
summa_x_2 := summa_x_2 + X[i]*X[i];
summa_x_y := summa_x_y + X[i]*i;
end;
k := (summa_x_y - 1)/(summa_x_2 - summa_x*summa_x/n);
b := 1 - summa_x/n*k;
Label2.Caption := 'k = '+floattostr(k);
label3.Caption := 'b = '+floattostr(b);
end;
end;
end.
Добавлено (02.12.10, 11:12)
---------------------------------------------
Сама задача состоит в следующем: Разработать программу расчета линейной зависимости по измерительным данным, полученным с температурных датчиков, метод наименьших квадратов.
И вот что нужно исправить:
1) Каждое действие нужно выделить в отдельную процедуру или функцию (т.е. работа с файлом и собственно само решение задачи);
2) Нужно "отвязать" процедуры и функции от пользовательского интерфейса.
3) А еще даже не знаю как объяснить.... Моя задача базируется на уравнении U=AT+B, где U-напряжение, Т-температура, а А и В- некоторые коэффициенты, которые мне нужно найти. А мне нужно взять приблизительные значения А и В самой, допустим это будет 10 и 5, взять диапазон температуры от -20 до +20 с шагом 0,5 допустим и рассчитать значение напряжения; написать генератор отклонений от точных данных напряжения и уже значения напряжения с отклонениями и значения температуры внести в файл, который потом надо использовать как входные данные. В итоге после решения уравнения должны получиться коэффициенты приближенные к 10 и 5...То есть мы делаем так называемую проверку...
Надеюсь понятно объяснила))
Буду благодарна за любую помощь...