овок
У результаті курсової роботи був розроблений алгоритм апроксимації даних методом найменших квадратів. Для полінома кожного ступеня було розраховано середньоквадратичне відхилення. Встановлено, що чим більше ступінь полінома, тим ближче значення апроксимуючої функції до значень заданих таблично.
За допомогою даного алгоритму можна обчислити коефіцієнти аппроксимирующего полінома та іншої ступеня (неменшою 1 й не більшою 8) при іншій кількості експериментальних точок.
Використана література
1. Delphi для «чайників». Нейл Дж. Рубенкінг. Київ - Москва: Діалектика, +1997.
2. lt; # justify gt; Додаток
Unit1 ;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ,, StdCtrls, Series, TeEngine, TeeProcs, Chart, ExtCtrls, buttons, Math, Unit2;=class (TForm): TMemo ;: TMemo ;: TButton ;: TMemo ;: TButton ;: TButton ;: TButton ;: TLabel ;: TLabel; Button1Click (Sender: TObject); Button2Click (Sender: TObject); Button3Click (Sender: TObject); FormCreate (Sender:TObject); Button4Click (Sender: TObject);
{Private declarations}
{Public declarations} ;: TForm1 ;: array [0 .. 8] of extended ;: array [0 .. 8] of extended ;: array [0 .. 8] of extended ;: array [0 .. 39] of extended ;: array [0 .. 39] of extended;
{$ R * .dfm} Polynom (n, m: integer) ;: array [0 .. 16] of extended ;, A: array [0 .. 8] of extended ;: array [0 .. 8, 0 .. 9] of extended ;, DataY: text ;, StrYi: string ;, ii, j, jj, k, s, Code: integer ;, Yi, Y, Bik, Delta: extended; :=0; i:=0 to 16 do [i]:=0; i:=0 to 8 do [i]:=0; [i]:=0; i:=0 to 8 doj:=0 to 9 do [i, j]:=0; (DataX, Xi.txt ); (DataY, Yi.txt ); (DataX); (DataY); i:=1 to m do (DataX , StrXi); (DataY, StrYi); (StrXi, Xi, Code); (StrYi, Yi, Code); [ii]:=Xi; [ii]:=Yi;:=ii + 1; j:=1 to 2 * n do [j]:=T [j] + exp (j * ln (Xi)); j:=0 to n do [j]:=C [j] + Yi * exp (j * ln ( Xi)) ;; [0]:=m; (DataX); (DataY); i:=0 to n doj:=0 to n do [i, j]:=T [j + i]; i:= 0 to n do [i, n + 1]:=C [i]; k:=0 to n - 1 doi:=k to n do:=B [i, k]; j:=k to n + 1 doi=k then [i, j]:=B [i, j]/Bik [i, j]:=B [i, j]/Bik - B [k, j] ;;. Memo3.Lines.Add ( Коефіцієнти полінома ступеня: + IntToStr (n)); i:=n downto 0 do [i]:=(B [i, n + 1] - B [i, 1] * A [1] - B [i, 2] * A [2] - B [i, 3] * A [3] - B
[i, 4] * A [4] - B [i, 5] * A [5] - B [i, 6] * A [6] - B [i, 7] * A [7] - B
[i, 8] * A [8])/B [i, i]; i:=0 to n do (n=3) then [i]:=A [i] if (n=5) then [i]:=A [i] [i]:=A [i] ;. Memo3.Lines.Add ( A [ + IntToStr (i) + ]= + FloatToStr (A [i]));
end; .Memo3.Lines.Add ( Середньоквадратичне відхилення: );
reset (DataX); (DataY);:=0; i:=1 to m do (DataX, StrXi); (DataY, StrYi); (StrXi, Xi, Code); (StrYi , Yi, Code);:=0; j:=0 to n do:=Y + A [j] * exp (j * ln (Xi));:=Delta + sqr (Y - Yi) ;;:= sqrt (Delta/m) ;. Memo3.Lines.Add ( Дельта= + FloatToStr (Delta)); (DataX); (DataY) ;; TForm1.Button1Click (Sender: TObject) ;. Enabled:=true;.Lines.LoadFromFile(laquo;Xi.txtraquo;);.Lines.LoadFromFile(laquo;Yi.txtraquo;);;TForm1.Button2Click(Sender: TObject); (3, 40); (5, 40); (7, 40) ;. Enabled:=true ;; TForm1.Button3Click (Sender: TObject); i: integer; .Show; i:=0 to 39 do.Series1.AddXY (x [i], (p3 [0] + p3 [1] * x [i] + p3 [2] * sqr (x [i])
+ p3 [3] * power (x [i], 3))) ;. Series2.AddXY (x [i], (p5 [0] + p5 [1] * x [i ] + p5 [2] * sqr (x [i])
+ p5 [3] * power (x [i], 3) + p5 [4] * power (x [i], 4)
+ p5 [5] * power (x [i], 5))) ;. Series3.AddXY (x [i], (p7 [0] + p7 [1] * x [i ] + p7 [2] * sqr (x [i])
+ p7 [3] * power (x [i], 3) + p7 [4] * power (x [i], 4)
+ p7 [5] * power (x [i], 5) + p7 [6] * power (x [i], 6)
+ p7 [7] * power (x [i], 7))) ;. Series4.AddXY (x [i], f [i]) ;;; TForm1.FormCreate (Sender: TObject) ;. Clear; .Clear; .Clear; .Enabled:=false; .Enabled:=false ;; TForm1.Button4Click (Sender: TObject) ;;;. Unit2 ;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ,, StdCtrls, Series, TeEngine, TeeProcs, Chart, ExtCtrls, buttons, Math;=class (TForm): TPanel ;: TChart ;: TLineSeries ;: TLineSeries ;: TPointSeries ;: TLineSeries ;: TButton; Button1Click (Sender:TObject);
{Private declarations}
{Public declarations} ;: TForm2;
{$ R * .dfm} TForm2.Button1Click (Sender: TObject) ;. Close ;;.