program QuadraticFit;
uses
SysUtils, Math;
const
N = 25; // 5x5 точек данных
type
TMatrix = array[1..6, 1..7] of Double;
TVector = array[1..6] of Double;
procedure SolveLinearSystem(var Matrix: TMatrix; var Solution: TVector);
var
i, j, k, m: Integer;
Temp: Double;
begin
// Метод Гаусса для решения СЛАУ
for k := 1 to 6 do
begin
// Поиск ведущего элемента
for j := k to 6 do
begin
if Abs(Matrix[j, k]) > Abs(Matrix[k, k]) then
begin
for m := 1 to 7 do
begin
Temp := Matrix[k, m];
Matrix[k, m] := Matrix[j, m];
Matrix[j, m] := Temp;
end;
end;
end;
// Нормировка строки
Temp := Matrix[k, k];
for j := k to 7 do
Matrix[k, j] := Matrix[k, j] / Temp;
// Исключение переменной
for i := 1 to 6 do
begin
if (i <> k) then
begin
Temp := Matrix[i, k];
for j := k to 7 do
Matrix[i, j] := Matrix[i, j] - Temp * Matrix[k, j];
end;
end;
end;
// Получение решения
for k := 1 to 6 do
Solution[k] := Matrix[k, 7];
end;
var
x, y, z: array[1..N] of Double;
Sx, Sy, Sz, Sx2, Sy2, Sxy, Sxz, Syz, Sx2y, Sxy2, Sx3, Sy3, Sx2y2, Sx4, Sy4: Double;
Sx3y, Sxy3, Sx2z, Sxyz, Sy2z: Double; // Добавлены недостающие переменные
A, B, C, D, E, F: Double;
Matrix: TMatrix;
Solution: TVector;
i: Integer;
begin
// Инициализация данных (вручную заполняем массив)
// Для x=0, y=1..5
x[1] := 0; y[1] := 1; z[1] := 8;
x[2] := 0; y[2] := 2; z[2] := 11;
x[3] := 0; y[3] := 3; z[3] := 14;
x[4] := 0; y[4] := 4; z[4] := 17;
x[5] := 0; y[5] := 5; z[5] := 20;
// Для x=1, y=1..5
x[6] := 1; y[6] := 1; z[6] := 15;
x[7] := 1; y[7] := 2; z[7] := 19;
x[8] := 1; y[8] := 3; z[8] := 23;
x[9] := 1; y[9] := 4; z[9] := 27;
x[10] := 1; y[10] := 5; z[10] := 31;
// Для x=2, y=1..5
x[11] := 2; y[11] := 1; z[11] := 26;
x[12] := 2; y[12] := 2; z[12] := 31;
x[13] := 2; y[13] := 3; z[13] := 36;
x[14] := 2; y[14] := 4; z[14] := 41;
x[15] := 2; y[15] := 5; z[15] := 46;
// Для x=3, y=1..5
x[16] := 3; y[16] := 1; z[16] := 41;
x[17] := 3; y[17] := 2; z[17] := 47;
x[18] := 3; y[18] := 3; z[18] := 53;
x[19] := 3; y[19] := 4; z[19] := 59;
x[20] := 3; y[20] := 5; z[20] := 65;
// Для x=4, y=1..5
x[21] := 4; y[21] := 1; z[21] := 60;
x[22] := 4; y[22] := 2; z[22] := 67;
x[23] := 4; y[23] := 3; z[23] := 74;
x[24] := 4; y[24] := 4; z[24] := 81;
x[25] := 4; y[25] := 5; z[25] := 88;
// Вычисление сумм для МНК
Sx := 0; Sy := 0; Sz := 0;
Sx2 := 0; Sy2 := 0; Sxy := 0;
Sxz := 0; Syz := 0;
Sx2y := 0; Sxy2 := 0;
Sx3 := 0; Sy3 := 0;
Sx2y2 := 0; Sx4 := 0; Sy4 := 0;
Sx3y := 0; Sxy3 := 0; Sx2z := 0; Sxyz := 0; Sy2z := 0;
for i := 1 to N do
begin
Sx := Sx + x[i];
Sy := Sy + y[i];
Sz := Sz + z[i];
Sx2 := Sx2 + x[i] * x[i];
Sy2 := Sy2 + y[i] * y[i];
Sxy := Sxy + x[i] * y[i];
Sxz := Sxz + x[i] * z[i];
Syz := Syz + y[i] * z[i];
Sx2y := Sx2y + x[i] * x[i] * y[i];
Sxy2 := Sxy2 + x[i] * y[i] * y[i];
Sx3 := Sx3 + x[i] * x[i] * x[i];
Sy3 := Sy3 + y[i] * y[i] * y[i];
Sx2y2 := Sx2y2 + x[i] * x[i] * y[i] * y[i];
Sx4 := Sx4 + x[i] * x[i] * x[i] * x[i];
Sy4 := Sy4 + y[i] * y[i] * y[i] * y[i];
Sx3y := Sx3y + x[i] * x[i] * x[i] * y[i];
Sxy3 := Sxy3 + x[i] * y[i] * y[i] * y[i];
Sx2z := Sx2z + x[i] * x[i] * z[i];
Sxyz := Sxyz + x[i] * y[i] * z[i];
Sy2z := Sy2z + y[i] * y[i] * z[i];
end;
// Формирование матрицы системы уравнений
Matrix[1, 1] := N; Matrix[1, 2] := Sx; Matrix[1, 3] := Sy; Matrix[1, 4] := Sx2; Matrix[1, 5] := Sxy; Matrix[1, 6] := Sy2; Matrix[1, 7] := Sz;
Matrix[2, 1] := Sx; Matrix[2, 2] := Sx2; Matrix[2, 3] := Sxy; Matrix[2, 4] := Sx3; Matrix[2, 5] := Sx2y; Matrix[2, 6] := Sxy2; Matrix[2, 7] := Sxz;
Matrix[3, 1] := Sy; Matrix[3, 2] := Sxy; Matrix[3, 3] := Sy2; Matrix[3, 4] := Sxy2; Matrix[3, 5] := Sy3; Matrix[3, 6] := Sy3; Matrix[3, 7] := Syz;
Matrix[4, 1] := Sx2; Matrix[4, 2] := Sx3; Matrix[4, 3] := Sx2y; Matrix[4, 4] := Sx4; Matrix[4, 5] := Sx3y; Matrix[4, 6] := Sx2y2; Matrix[4, 7] := Sx2z;
Matrix[5, 1] := Sxy; Matrix[5, 2] := Sx2y; Matrix[5, 3] := Sxy2; Matrix[5, 4] := Sx3y; Matrix[5, 5] := Sx2y2; Matrix[5, 6] := Sxy3; Matrix[5, 7] := Sxyz;
Matrix[6, 1] := Sy2; Matrix[6, 2] := Sxy2; Matrix[6, 3] := Sy3; Matrix[6, 4] := Sx2y2; Matrix[6, 5] := Sxy3; Matrix[6, 6] := Sy4; Matrix[6, 7] := Sy2z;
// Решение системы
SolveLinearSystem(Matrix, Solution);
A := Solution[1];
B := Solution[2];
C := Solution[3];
D := Solution[4];
E := Solution[5];
F := Solution[6];
// Вывод результатов
Writeln('Коэффициенты функции F(x, y) = A + Bx + Cy + Dx² + Exy + Fy²:');
Writeln('A = ', FormatFloat('0.00', A));
Writeln('B = ', FormatFloat('0.00', B));
Writeln('C = ', FormatFloat('0.00', C));
Writeln('D = ', FormatFloat('0.00', D));
Writeln('E = ', FormatFloat('0.00', E));
Writeln('F = ', FormatFloat('0.00', F));
end.
cHJvZ3JhbSBRdWFkcmF0aWNGaXQ7Cgp1c2VzCiAgU3lzVXRpbHMsIE1hdGg7Cgpjb25zdAogIE4gPSAyNTsgLy8gNXg1INGC0L7Rh9C10Log0LTQsNC90L3Ri9GFCgp0eXBlCiAgVE1hdHJpeCA9IGFycmF5WzEuLjYsIDEuLjddIG9mIERvdWJsZTsKICBUVmVjdG9yID0gYXJyYXlbMS4uNl0gb2YgRG91YmxlOwoKcHJvY2VkdXJlIFNvbHZlTGluZWFyU3lzdGVtKHZhciBNYXRyaXg6IFRNYXRyaXg7IHZhciBTb2x1dGlvbjogVFZlY3Rvcik7CnZhcgogIGksIGosIGssIG06IEludGVnZXI7CiAgVGVtcDogRG91YmxlOwpiZWdpbgogIC8vINCc0LXRgtC+0LQg0JPQsNGD0YHRgdCwINC00LvRjyDRgNC10YjQtdC90LjRjyDQodCb0JDQowogIGZvciBrIDo9IDEgdG8gNiBkbwogIGJlZ2luCiAgICAvLyDQn9C+0LjRgdC6INCy0LXQtNGD0YnQtdCz0L4g0Y3Qu9C10LzQtdC90YLQsAogICAgZm9yIGogOj0gayB0byA2IGRvCiAgICBiZWdpbgogICAgICBpZiBBYnMoTWF0cml4W2osIGtdKSA+IEFicyhNYXRyaXhbaywga10pIHRoZW4KICAgICAgYmVnaW4KICAgICAgICBmb3IgbSA6PSAxIHRvIDcgZG8KICAgICAgICBiZWdpbgogICAgICAgICAgVGVtcCA6PSBNYXRyaXhbaywgbV07CiAgICAgICAgICBNYXRyaXhbaywgbV0gOj0gTWF0cml4W2osIG1dOwogICAgICAgICAgTWF0cml4W2osIG1dIDo9IFRlbXA7CiAgICAgICAgZW5kOwogICAgICBlbmQ7CiAgICBlbmQ7CgogICAgLy8g0J3QvtGA0LzQuNGA0L7QstC60LAg0YHRgtGA0L7QutC4CiAgICBUZW1wIDo9IE1hdHJpeFtrLCBrXTsKICAgIGZvciBqIDo9IGsgdG8gNyBkbwogICAgICBNYXRyaXhbaywgal0gOj0gTWF0cml4W2ssIGpdIC8gVGVtcDsKCiAgICAvLyDQmNGB0LrQu9GO0YfQtdC90LjQtSDQv9C10YDQtdC80LXQvdC90L7QuQogICAgZm9yIGkgOj0gMSB0byA2IGRvCiAgICBiZWdpbgogICAgICBpZiAoaSA8PiBrKSB0aGVuCiAgICAgIGJlZ2luCiAgICAgICAgVGVtcCA6PSBNYXRyaXhbaSwga107CiAgICAgICAgZm9yIGogOj0gayB0byA3IGRvCiAgICAgICAgICBNYXRyaXhbaSwgal0gOj0gTWF0cml4W2ksIGpdIC0gVGVtcCAqIE1hdHJpeFtrLCBqXTsKICAgICAgZW5kOwogICAgZW5kOwogIGVuZDsKCiAgLy8g0J/QvtC70YPRh9C10L3QuNC1INGA0LXRiNC10L3QuNGPCiAgZm9yIGsgOj0gMSB0byA2IGRvCiAgICBTb2x1dGlvbltrXSA6PSBNYXRyaXhbaywgN107CmVuZDsKCnZhcgogIHgsIHksIHo6IGFycmF5WzEuLk5dIG9mIERvdWJsZTsKICBTeCwgU3ksIFN6LCBTeDIsIFN5MiwgU3h5LCBTeHosIFN5eiwgU3gyeSwgU3h5MiwgU3gzLCBTeTMsIFN4MnkyLCBTeDQsIFN5NDogRG91YmxlOwogIFN4M3ksIFN4eTMsIFN4MnosIFN4eXosIFN5Mno6IERvdWJsZTsgLy8g0JTQvtCx0LDQstC70LXQvdGLINC90LXQtNC+0YHRgtCw0Y7RidC40LUg0L/QtdGA0LXQvNC10L3QvdGL0LUKICBBLCBCLCBDLCBELCBFLCBGOiBEb3VibGU7CiAgTWF0cml4OiBUTWF0cml4OwogIFNvbHV0aW9uOiBUVmVjdG9yOwogIGk6IEludGVnZXI7CmJlZ2luCiAgLy8g0JjQvdC40YbQuNCw0LvQuNC30LDRhtC40Y8g0LTQsNC90L3Ri9GFICjQstGA0YPRh9C90YPRjiDQt9Cw0L/QvtC70L3Rj9C10Lwg0LzQsNGB0YHQuNCyKQogIC8vINCU0LvRjyB4PTAsIHk9MS4uNQogIHhbMV0gOj0gMDsgeVsxXSA6PSAxOyB6WzFdIDo9IDg7CiAgeFsyXSA6PSAwOyB5WzJdIDo9IDI7IHpbMl0gOj0gMTE7CiAgeFszXSA6PSAwOyB5WzNdIDo9IDM7IHpbM10gOj0gMTQ7CiAgeFs0XSA6PSAwOyB5WzRdIDo9IDQ7IHpbNF0gOj0gMTc7CiAgeFs1XSA6PSAwOyB5WzVdIDo9IDU7IHpbNV0gOj0gMjA7CiAgCiAgLy8g0JTQu9GPIHg9MSwgeT0xLi41CiAgeFs2XSA6PSAxOyB5WzZdIDo9IDE7IHpbNl0gOj0gMTU7CiAgeFs3XSA6PSAxOyB5WzddIDo9IDI7IHpbN10gOj0gMTk7CiAgeFs4XSA6PSAxOyB5WzhdIDo9IDM7IHpbOF0gOj0gMjM7CiAgeFs5XSA6PSAxOyB5WzldIDo9IDQ7IHpbOV0gOj0gMjc7CiAgeFsxMF0gOj0gMTsgeVsxMF0gOj0gNTsgelsxMF0gOj0gMzE7CiAgCiAgLy8g0JTQu9GPIHg9MiwgeT0xLi41CiAgeFsxMV0gOj0gMjsgeVsxMV0gOj0gMTsgelsxMV0gOj0gMjY7CiAgeFsxMl0gOj0gMjsgeVsxMl0gOj0gMjsgelsxMl0gOj0gMzE7CiAgeFsxM10gOj0gMjsgeVsxM10gOj0gMzsgelsxM10gOj0gMzY7CiAgeFsxNF0gOj0gMjsgeVsxNF0gOj0gNDsgelsxNF0gOj0gNDE7CiAgeFsxNV0gOj0gMjsgeVsxNV0gOj0gNTsgelsxNV0gOj0gNDY7CiAgCiAgLy8g0JTQu9GPIHg9MywgeT0xLi41CiAgeFsxNl0gOj0gMzsgeVsxNl0gOj0gMTsgelsxNl0gOj0gNDE7CiAgeFsxN10gOj0gMzsgeVsxN10gOj0gMjsgelsxN10gOj0gNDc7CiAgeFsxOF0gOj0gMzsgeVsxOF0gOj0gMzsgelsxOF0gOj0gNTM7CiAgeFsxOV0gOj0gMzsgeVsxOV0gOj0gNDsgelsxOV0gOj0gNTk7CiAgeFsyMF0gOj0gMzsgeVsyMF0gOj0gNTsgelsyMF0gOj0gNjU7CiAgCiAgLy8g0JTQu9GPIHg9NCwgeT0xLi41CiAgeFsyMV0gOj0gNDsgeVsyMV0gOj0gMTsgelsyMV0gOj0gNjA7CiAgeFsyMl0gOj0gNDsgeVsyMl0gOj0gMjsgelsyMl0gOj0gNjc7CiAgeFsyM10gOj0gNDsgeVsyM10gOj0gMzsgelsyM10gOj0gNzQ7CiAgeFsyNF0gOj0gNDsgeVsyNF0gOj0gNDsgelsyNF0gOj0gODE7CiAgeFsyNV0gOj0gNDsgeVsyNV0gOj0gNTsgelsyNV0gOj0gODg7CgogIC8vINCS0YvRh9C40YHQu9C10L3QuNC1INGB0YPQvNC8INC00LvRjyDQnNCd0JoKICBTeCA6PSAwOyBTeSA6PSAwOyBTeiA6PSAwOwogIFN4MiA6PSAwOyBTeTIgOj0gMDsgU3h5IDo9IDA7CiAgU3h6IDo9IDA7IFN5eiA6PSAwOwogIFN4MnkgOj0gMDsgU3h5MiA6PSAwOwogIFN4MyA6PSAwOyBTeTMgOj0gMDsKICBTeDJ5MiA6PSAwOyBTeDQgOj0gMDsgU3k0IDo9IDA7CiAgU3gzeSA6PSAwOyBTeHkzIDo9IDA7IFN4MnogOj0gMDsgU3h5eiA6PSAwOyBTeTJ6IDo9IDA7CgogIGZvciBpIDo9IDEgdG8gTiBkbwogIGJlZ2luCiAgICBTeCA6PSBTeCArIHhbaV07CiAgICBTeSA6PSBTeSArIHlbaV07CiAgICBTeiA6PSBTeiArIHpbaV07CiAgICBTeDIgOj0gU3gyICsgeFtpXSAqIHhbaV07CiAgICBTeTIgOj0gU3kyICsgeVtpXSAqIHlbaV07CiAgICBTeHkgOj0gU3h5ICsgeFtpXSAqIHlbaV07CiAgICBTeHogOj0gU3h6ICsgeFtpXSAqIHpbaV07CiAgICBTeXogOj0gU3l6ICsgeVtpXSAqIHpbaV07CiAgICBTeDJ5IDo9IFN4MnkgKyB4W2ldICogeFtpXSAqIHlbaV07CiAgICBTeHkyIDo9IFN4eTIgKyB4W2ldICogeVtpXSAqIHlbaV07CiAgICBTeDMgOj0gU3gzICsgeFtpXSAqIHhbaV0gKiB4W2ldOwogICAgU3kzIDo9IFN5MyArIHlbaV0gKiB5W2ldICogeVtpXTsKICAgIFN4MnkyIDo9IFN4MnkyICsgeFtpXSAqIHhbaV0gKiB5W2ldICogeVtpXTsKICAgIFN4NCA6PSBTeDQgKyB4W2ldICogeFtpXSAqIHhbaV0gKiB4W2ldOwogICAgU3k0IDo9IFN5NCArIHlbaV0gKiB5W2ldICogeVtpXSAqIHlbaV07CiAgICBTeDN5IDo9IFN4M3kgKyB4W2ldICogeFtpXSAqIHhbaV0gKiB5W2ldOwogICAgU3h5MyA6PSBTeHkzICsgeFtpXSAqIHlbaV0gKiB5W2ldICogeVtpXTsKICAgIFN4MnogOj0gU3gyeiArIHhbaV0gKiB4W2ldICogeltpXTsKICAgIFN4eXogOj0gU3h5eiArIHhbaV0gKiB5W2ldICogeltpXTsKICAgIFN5MnogOj0gU3kyeiArIHlbaV0gKiB5W2ldICogeltpXTsKICBlbmQ7CgogIC8vINCk0L7RgNC80LjRgNC+0LLQsNC90LjQtSDQvNCw0YLRgNC40YbRiyDRgdC40YHRgtC10LzRiyDRg9GA0LDQstC90LXQvdC40LkKICBNYXRyaXhbMSwgMV0gOj0gTjsgICAgTWF0cml4WzEsIDJdIDo9IFN4OyAgIE1hdHJpeFsxLCAzXSA6PSBTeTsgICBNYXRyaXhbMSwgNF0gOj0gU3gyOyAgTWF0cml4WzEsIDVdIDo9IFN4eTsgIE1hdHJpeFsxLCA2XSA6PSBTeTI7ICBNYXRyaXhbMSwgN10gOj0gU3o7CiAgTWF0cml4WzIsIDFdIDo9IFN4OyAgIE1hdHJpeFsyLCAyXSA6PSBTeDI7ICBNYXRyaXhbMiwgM10gOj0gU3h5OyAgTWF0cml4WzIsIDRdIDo9IFN4MzsgIE1hdHJpeFsyLCA1XSA6PSBTeDJ5OyBNYXRyaXhbMiwgNl0gOj0gU3h5MjsgTWF0cml4WzIsIDddIDo9IFN4ejsKICBNYXRyaXhbMywgMV0gOj0gU3k7ICAgTWF0cml4WzMsIDJdIDo9IFN4eTsgIE1hdHJpeFszLCAzXSA6PSBTeTI7ICBNYXRyaXhbMywgNF0gOj0gU3h5MjsgTWF0cml4WzMsIDVdIDo9IFN5MzsgIE1hdHJpeFszLCA2XSA6PSBTeTM7ICBNYXRyaXhbMywgN10gOj0gU3l6OwogIE1hdHJpeFs0LCAxXSA6PSBTeDI7ICBNYXRyaXhbNCwgMl0gOj0gU3gzOyAgTWF0cml4WzQsIDNdIDo9IFN4Mnk7IE1hdHJpeFs0LCA0XSA6PSBTeDQ7ICBNYXRyaXhbNCwgNV0gOj0gU3gzeTsgTWF0cml4WzQsIDZdIDo9IFN4MnkyOyBNYXRyaXhbNCwgN10gOj0gU3gyejsKICBNYXRyaXhbNSwgMV0gOj0gU3h5OyAgTWF0cml4WzUsIDJdIDo9IFN4Mnk7IE1hdHJpeFs1LCAzXSA6PSBTeHkyOyBNYXRyaXhbNSwgNF0gOj0gU3gzeTsgTWF0cml4WzUsIDVdIDo9IFN4MnkyOyBNYXRyaXhbNSwgNl0gOj0gU3h5MzsgTWF0cml4WzUsIDddIDo9IFN4eXo7CiAgTWF0cml4WzYsIDFdIDo9IFN5MjsgIE1hdHJpeFs2LCAyXSA6PSBTeHkyOyBNYXRyaXhbNiwgM10gOj0gU3kzOyAgTWF0cml4WzYsIDRdIDo9IFN4MnkyOyBNYXRyaXhbNiwgNV0gOj0gU3h5MzsgTWF0cml4WzYsIDZdIDo9IFN5NDsgIE1hdHJpeFs2LCA3XSA6PSBTeTJ6OwoKICAvLyDQoNC10YjQtdC90LjQtSDRgdC40YHRgtC10LzRiwogIFNvbHZlTGluZWFyU3lzdGVtKE1hdHJpeCwgU29sdXRpb24pOwoKICBBIDo9IFNvbHV0aW9uWzFdOwogIEIgOj0gU29sdXRpb25bMl07CiAgQyA6PSBTb2x1dGlvblszXTsKICBEIDo9IFNvbHV0aW9uWzRdOwogIEUgOj0gU29sdXRpb25bNV07CiAgRiA6PSBTb2x1dGlvbls2XTsKCiAgLy8g0JLRi9Cy0L7QtCDRgNC10LfRg9C70YzRgtCw0YLQvtCyCiAgV3JpdGVsbign0JrQvtGN0YTRhNC40YbQuNC10L3RgtGLINGE0YPQvdC60YbQuNC4IEYoeCwgeSkgPSBBICsgQnggKyBDeSArIER4wrIgKyBFeHkgKyBGecKyOicpOwogIFdyaXRlbG4oJ0EgPSAnLCBGb3JtYXRGbG9hdCgnMC4wMCcsIEEpKTsKICBXcml0ZWxuKCdCID0gJywgRm9ybWF0RmxvYXQoJzAuMDAnLCBCKSk7CiAgV3JpdGVsbignQyA9ICcsIEZvcm1hdEZsb2F0KCcwLjAwJywgQykpOwogIFdyaXRlbG4oJ0QgPSAnLCBGb3JtYXRGbG9hdCgnMC4wMCcsIEQpKTsKICBXcml0ZWxuKCdFID0gJywgRm9ybWF0RmxvYXQoJzAuMDAnLCBFKSk7CiAgV3JpdGVsbignRiA9ICcsIEZvcm1hdEZsb2F0KCcwLjAwJywgRikpOwplbmQu