PDF / MMS
.pdf1: program MMS; 2:
3:const
4:maxn=10;
5:
6:type
7:matrix = array [1..maxn,1..maxn] of real;
8:vector = array[1..maxn] of real;
9:
10:var
11:ns,i,j:integer;
12:x:real;
13:ss:matrix;
14:as,bs,xs,ys:vector;
16:procedure gauss_method( N : integer; var A : matrix; var B,X : vector );
17:var
18:m:real;
19:i,j,k,l:integer;
20:begin
21:for k:=1 to n-1 do
22:for i:=k+1 to n do begin
23:m:=a[i,k]/a[k,k];
24:b[i]:=b[i]-m*b[k];
25:for j:=k to n do a[i,j]:=a[i,j]-m*a[k,j];
26:end;
27:for j:=n downto 1 do begin
28:m:=b[j];
29:for l:=n downto j+1 do m:=m-a[j,l]*x[l];
30:x[j]:=m/a[j,j];
31:end;
32:end;
33:
34:procedure mnk2_method(N: integer; var X,Y,A: vector);
35:var
36:i,j,k:integer;
37:s1,s2,s3,s4,s5,s6,s7:real;
38:begin s1:=0; s2:=0; s3:=0; s4:=0; s5:=0; s6:=0; s7:=0;
39:for i:=1 to n do
40:begin
41:s1:=s1+x[i]; s2:=s2+x[i]*x[i]; s3:=s3+x[i]*x[i]*x[i];
42:s4:=s4+x[i]*x[i]*x[i]*x[i]; s5:=s5+y[i]; s6:=s6+x[i]*y[i];
43:s7:=s7+x[i]*x[i]*y[i];
44:end;
45: ss[1,1]:=n; |
ss[1,2]:=s1; |
ss[1,3]:=s2; |
bs[1]:=s5; |
|
46: |
ss[2,1]:=s1; ss[2,2]:=s2; |
ss[2,3]:=s3; |
bs[2]:=s6; |
|
47: |
ss[3,1]:=s2; |
ss[3,2]:=s3; |
ss[3,3]:=s4; |
bs[3]:=s7; |
48:gauss_method(3,ss,bs,as);
49:end;
50:
51:begin
52:WriteLn('-- Интерполяция по методу МНК --');
53:Write(' Введите количество экспериментально полученных точек : ');
54:ReadLn(ns);
55:for j:=1 to ns do
56:begin
57:Write(' Введите : X(',j,') = '); readln(xs[j]);
58:Write(' Введите : Y(',j,') = '); readln(ys[j]);
59:end;
60:mnk2_method(ns,xs,ys,as);
61:WriteLn(' Решение : A(0) = ',as[1]:7:3);
62:WriteLn(' Решение : A(1) = ',as[2]:7:3);
63:WriteLn(' Решение : A(2) = ',as[3]:7:3);
64:WriteLn(' Проверка :');
65:Write(' Введите X = '); ReadLn(x);
66:WriteLn(' Y (',x:7:3,') = ',(as[1]+as[2]*x+as[3]*x*x):7:3);
67:ReadLn;
68:end.
69: