Вычислит.мат_лаб.р
..pdfПродолжение таблицы 5
1 |
|
|
2 |
|
||
|
|
.38860Е + 01 |
.11507Е + 02 |
-.19742Е + 01 |
.61716Е +01 |
|
|
|
|
|
|
|
|
|
|
.12738Е +02 |
26061Е+ 01 |
.63995Е + 02 |
.-27195Е +02 |
|
24 |
16202Е + 01 |
.35161Е + 00 |
.86341Е+01 |
-.34589Е+01 |
||
15111Е + 01 |
.30380Е + 00 |
.74599Е+01 |
-.32261Е + 01 |
|||
|
|
|||||
|
|
.81142Е + 00 |
-17609Е + 00 |
.43244 + 01 |
-17323Е + 01 |
|
|
|
.30846Е + 02 |
-.40806Е + 01 |
-.36208Е + 00 |
-.41187Е + 01 |
|
25 |
-.36344Е + 02 |
.49263Е + 01 |
.43712Е + 00 |
.48529Е + 01 |
||
17157Е + 02 |
-.20743Е + 01 |
-18406Е + 00 |
-.22910Е + 01 |
|||
|
|
|||||
|
|
.53507Е + 02 |
-.72527Е + 01 |
-.64354Е + 00 |
-.71445Е + 01 |
|
|
|
.27346Е + 01 |
-.11110Е + 01 |
.50222Е + 01 |
.32234Е + 01 |
|
|
26 |
.91361Е + 01 |
-.35849Е + 01 |
.16206Е + 02 |
.10769Е + 02 |
|
|
.12961Е + 02 |
-.51725Е + 01 |
.23383Е + 02 |
.15278Е + 02 |
||
|
|
|||||
|
|
-.28402Е + 02 |
.11145Е+02 |
-.50380Е + 02 |
-.33479Е + 02 |
|
|
|
.63868Е + 01 |
-.67524Е+02 |
-.24412Е+02 |
-.20908Е+02 |
|
|
27 |
.18697Е + 01 |
-.18932Е + 02 |
-.68445Е+01 |
-.61208Е + 01 |
|
|
-.17156Е + 01 |
.18209Е+02 |
.65832Е + 01 |
.56162Е+01 |
||
|
|
|||||
|
|
.75164Е + 00 |
-.76109Е+01 |
-.27516Е + 01 |
-.24606Е+01 |
|
|
|
.43510Е + 02 |
.59136Е+01 |
-.11467Е + 02 |
-.12245Е+02 |
|
|
28 |
-.38692Е + 02 |
-.50907Е + 01 |
.98719Е4-01 |
.10889Е + 02 |
|
|
-.48615Е+02 |
-.65295Е + 01 |
.12662Е + 02 |
.13682Е+02 |
||
|
|
|||||
|
|
-.17455Е + 02 |
-.22966Е + 01 |
.44536Е + 01 |
.49125Е+01 |
|
|
|
10921Е + 01 |
-.12118Е + 01 |
-.83855Е+00 |
.96881Е+00 |
|
|
29 |
.74301Е + 01 |
-.72230Е + 01 |
-.49981Е+01 |
.65916Е + 01 |
|
|
.26781Е+01 |
-.07865Е + 01 |
-.49087Е+02 |
.76564Е + 01 |
||
|
|
|||||
|
|
.42614Е+02 |
-.41427Е+02 |
-.28666Е+02 |
.37805Е +02 |
|
|
|
.17965Е+01 |
.49866Е + 02 |
-.55218Е+02 |
-.11507Е + 02 |
|
|
30 |
.78083Е + 00 |
.22034Е+02 |
-.24399Е + 02 |
-.50015Е + 01 |
|
|
.26239Е + 00 |
.60831Е + 01 |
-.67359Е + 01 |
-16807Е + 01 |
||
|
|
|||||
|
|
-.82565Е + 00 |
-.23299Е + 02 |
.25799Е + 02 |
.52886Е + 01 |
51
Лабораторная работа № 7 Приближение функций
Интерполяционный полином Лагранжа
Входные параметры: N - число узлов интерполяции; y - массив размерности n, содержащий значения функции в узлах интерполяции; x- массив размерности n, содержащий значения узлов интерполяции; q-точка в которой вычисляем значения функции интерполяции.
Выходные параметры: приближенное значение функции в точке q; графическая интерпретация результата.
Схема алгоритма приведена на рисунке 25.
Задание. Аппроксимировать табличную функцию с помощью интерполяционного полинома Лагранжа.
xi |
yi |
xi |
yi |
1 |
2,05 |
6 |
1,88 |
2 |
1,94 |
7 |
1,71 |
3 |
1,92 |
8 |
1,60 |
4 |
1,87 |
9 |
1,56 |
5 |
1,77 |
10 |
1,40 |
Текст программы:
function Lagran(n:integer;x,y:TVector;q:real):real; var i,j:integer; l,s:real;
begin L:=0;
for i:=1 to n do begin s:=1;
for j:=1 to N do if j<>i then
s:=s*(q-x[j])/(x[i]-x[j]); L:=L+y[i]*s;
end;
Lagran:=l end
Вычисления по программе привели к следующим результатам:
X=1 Y=2,05
X=1,5 Y=2,38
X=2 Y=1,94
X=2,5 Y=1,83
52
X=3 Y=1,92
X=3,5 Y=1,94
X=4 Y=1,87
X=4,5 Y=1,78
X=5 Y=1,77
X=5,5 Y=1,83
X=6 Y=1,88
X=6,5 Y=1,83
X=7 Y=1,71
X=7,5 Y=1,59
X=8 Y=1,6
X=8,5 Y=1,67
X=9 Y=1,56
X=9,5 Y=1,09
X=10 Y=1,4
Function
Lagran(n:integer;x,y,TV
ector;r,q:real)
L=0
I
I>n
s=1
J
J>n
+
I<>J
s=s*(q-x[j]) / (x[i]-x[j])
J=J+1
J
L=L+y[i]*s
I=I+1
I
Lagran=1
Возврат
Рисунок 25 - Схема алгоритма приближения функций формулой Лагранжа
53
Варианты заданий для решения задачи приближения функций приведены в таблице 6.
Аппроксимация функций с помощью кубического сплайна
Входные параметры: N - число узлов интерполяции; y - массив размерности n, содержащий значения функции в узлах интерполяции; x- массив размерности n, содержащий значения узлов интерполяции; q-точка в которой вычисляем значения функции интерполяции.
Выходные параметры: приближенное значение функции в точке q; графическая интерпретация результата.
Схема алгоритма приведена на рисунке 26.
Задание. Аппроксимировать табличную функцию с помощью кубического сплайна.
xi |
yi |
xi |
yi |
1 |
2,05 |
6 |
1,88 |
2 |
1,94 |
7 |
1,71 |
3 |
1,92 |
8 |
1,60 |
4 |
1,87 |
9 |
1,56 |
5 |
1,77 |
10 |
1,40 |
Текст программы:
Procedure Spline3(N:integer;X,Y:mas;S0,SN:real;Var A,B,C,D:mas);
Var F |
: Mas; |
H2,H3,p |
: real; |
i,j |
: integer; |
|
Begin |
|
|
|
|
|
|
H2:=X[2]-X[1]; |
|
|
|
|
|
|
H3:=X[3]-X[2]; |
|
|
|
|
|
|
A[1]:=(2*(H2+H3))/H3; |
|
|
|
|||
f[1]:=(6/h3)*(((y[3]-y[2])/h3)-((y[2]-y[1])/h2))-(h2*s0)/h3; |
||||||
For i:=4 to n-1 do |
|
|
|
|
||
|
begin |
|
|
|
|
|
|
h2:=x[i-1]-x[i-2]; |
h3:=x[i]-x[i-1]; |
||||
|
a[i-2]:=(2/h3)*(h2+h3); |
|
b[i-2]:=h2/h3; |
|||
|
f[i-2]:=(6/h3)*(((y[i]-y[i-1])/h3-((y[i-1]-y[i-2])/h2))); |
|||||
|
end; |
|
|
|
|
|
h2:=x[n-1]-x[n-2]; |
h3:=x[n]-x[n-1]; |
|
||||
p:=2*(h2+h3); |
|
b[1]:=h2/p; |
|
|
||
f[n-2]:=(6/p)*(((y[n]-y[n-1])/h3)-((y[n-1]-y[n-2])/h2))-(h3*sn)/p; |
||||||
d[1]:=1/a[1]; |
c[1]:=f[1]; |
|
|
|||
For i:=2 to n-3 do |
|
|
|
|
||
begin |
|
|
|
|
|
|
d[i]:=1/(a[i]-b[i]*d[i-1]); |
|
c[i]:=f[i]-b[i]*d[i-1]*c[i-1]; |
||||
|
|
|
|
|
54 |
|
end; |
|
|
|
d[n-2]:=(f[n-2]-b[1]*d[n-3]*c[n-3])/(1-b[1]*d[n-3]); |
|
||
For i:=n-3 downto 1 do |
|
||
d[i]:=d[i]*(c[i]-d[i+1]); |
|
||
c[1]:=s0; |
c[n]:=sn; |
|
|
For i:=2 to n-1 do |
c[i]:=d[i-1]; |
|
|
For i:=1 to n do |
|
|
|
begin |
|
|
|
a[i]:=0; |
b[i]:=0; |
d[i]:=0; end; |
|
For i:=2 to n do |
|
|
|
begin |
|
|
|
h2:=x[i]-x[i-1]; |
d[i]:=(c[i]-c[i-1])/h2; |
|
|
b[i]:=h2*c[i]/2-(Sqr(h2))*d[i]/6+(y[i]-y[i-1])/h2; |
a[i]:=y[i]; |
||
end; end; |
|
|
|
Вычисления по программе привели к следующим результатам:
X=1 Y=2,21
X=1,5 Y=2,06
X=2 Y=1,94
X=2,5 Y=2,00
X=3 Y=1,92
X=3,5 Y=1,99
X=4 Y=1,87
X=4,5 Y=1,88
X=5 Y=1,77
X=5,5 Y=1,91
X=6 Y=1,88
X=6,5 Y=1,90
X=7 Y=1,71
X=7,5 Y=1,71
X=8 Y=1,6
X=8,5 Y=1,66
X=9 Y=1,56
X=9,5 Y=1,57
X=10 Y=1,4
55
Procedure |
|
|
|
||
Spline3(N:integer;X,Y:mas |
|
|
|
||
;S0,SN:real;Var |
|
A |
|||
A,B,C,D:mas) |
|
|
|
||
|
|
|
|
|
|
H2=x[2]-x[1] |
|
c[1]=s0 |
|||
h3=h[3]-h[2] |
|
c[n]=sn |
|||
a[1]=(2*(h2+h3))/h3 |
|
|
|
||
|
|
|
|||
|
|
|
|
|
|
|
|
|
I |
||
f[1]=(6/h3)*(((y[3]-y[2]/h3)- |
|
I>n-1 |
|||
((y[2]-y[1])/h2))-(h2*s0) |
|
|
|
||
|
|
|
|||
/ h3) |
|
|
|
||
|
c[i]=d[i-1] |
||||
|
|
|
|||
|
|
|
|||
I |
|
|
|
||
I>n-1 |
|
|
|
||
|
I=I+1 |
||||
|
|
|
|||
|
|
|
|||
|
|
|
I |
||
H2=x[i-1]-x[i-2] |
|||||
|
|
|
|||
h3=h[i]-h[i-1] |
|
|
|
||
|
I |
||||
a[i-2]=(2/h3)*(h2+h3) |
|
||||
b[i-2]=h2/h3 |
|
I>n |
|||
|
|
|
|
|
|
|
|
|
|
|
|
f[i-2]=(6/h3)*(((y[i]-y[i-1]/h3 |
|
a[i]=0 |
|||
|
b[i]=0 |
||||
)-((y[i-1]-y[i-2])/h2))) |
|
||||
|
d[i]=0 |
||||
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
I=I+1 |
|
I=I+1 |
|||
I |
|
I |
|||
|
|
|
|
|
|
|
|
|
|
|
|
H2=x[n-1]-x[n-2] |
|
I |
|||
h3=h[n]-h[n-1] |
|
I>n |
|||
p=2*(h2+h3) |
|
|
|
||
|
|
|
|||
b[i]=h2/p |
|
|
|
||
|
H2=x[i]-x[i-1] |
||||
|
|
|
|||
|
|
|
d[i]=(c[i]-c[i-1])/h2 |
||
f[n-2]=(6/p)*(((y[n]-y[n-1]/h |
|||||
|
|
|
|||
3)-((y[n-1]-y[n-2])/h2))-(h3* |
|
|
|
||
sn)/p) |
|
b[i]=h2*c[i]/2-(sqr(h2))*d[i]/ |
|||
|
|
|
6+(y[i]-y[i-1])/h2 |
||
|
|
|
a[i]=y[i] |
||
d[1]=1/a[1 |
|||||
|
|
|
|||
|
|
|
|||
c[1]]=f[1] |
|
I=I+1 |
|||
|
|
|
|||
|
|
|
I |
||
|
|
||||
|
|
|
|
|
|
I |
|
|
|
||
|
|
|
|||
I>n-3 |
|
Возврат |
|||
|
|
|
|||
|
|
|
|
|
|
d[i]=1/(a[i]-b[i]*d[i-1]) |
|
|
|
||
c[i]]=f[i]-b[i]*d[i-1]*c[i-1] |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
I=I+1 |
|
|
|
||
I |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
d[n-2]=(f[n-2]-b[1]*d[n-3]*c |
|
|
|
||
[n-3])/(1-b[1]*d[n-3]) |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
I |
|
|
|
||
I<1 |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
d[i]=d[i]*(c[i]-d[i+1]) |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
I=I-1 |
|
|
|
||
I |
|
|
|
||
|
|
|
|
||
|
|
|
|
|
|
A |
|
|
|
Рисунок 26 - Схема алгоритма приближения функций с помощью сплайнов
56
Варианты заданий для решения задачи приближения функций приведены в таблице 6.
Приближение формулами Ньютона
Входные параметры: N - число узлов интерполяции; y - массив размерности n, содержащий значения функции в узлах интерполяции; x- массив размерности n, содержащий значения узлов интерполяции; q-точка в которой вычисляем значения функции интерполяции.
Выходные параметры: приближенное значение функции в точке q; графическая интерпретация результата.
Схема алгоритма приведена на рисунке 27.
Задание. Аппроксимировать табличную функцию с помощью формул Ньютона.
xi |
|
yi |
xi |
yi |
1 |
|
2,0 |
6 |
1,8 |
|
5 |
|
|
8 |
2 |
|
1,9 |
7 |
1,7 |
|
4 |
|
|
1 |
3 |
|
1,9 |
8 |
1,6 |
|
2 |
|
|
0 |
4 |
|
1,8 |
9 |
1,5 |
|
7 |
|
|
6 |
5 |
|
1,7 |
10 |
1,4 |
|
7 |
|
|
0 |
Текст программы:
function PribNew(n:integer;a,b:TVector;x:Real):real; function GetRazdRazn(k,l:integer;m:TMatr):real;
begin GetRazdRazn:=m[k,l-k+1]; end;
var i,j:integer; s,p:real; M:tmatr; begin
TabRazdRazn(n,a,b,M);
S:=b[1];
for i:=1 to N-1 do begin
P:=1;
for j:=1 to i do P:=P*(x-a[j]);
s:=s+P*GetRazdRazn(1,i+1,m);
end;
57
PribNew:=s;
end;
Вычисления по программе привели к следующим результатам:
X=1 Y=2,05
X=1,5 Y=2,38
X=2 Y=1,94
X=2,5 Y=1,83
X=3 Y=1,92
X=3,5 Y=1,94
X=4 Y=1,87
X=4,5 Y=1,78
X=5 Y=1,77
X=5,5 Y=1,83
X=6 Y=1,88
X=6,5 Y=1,83
X=7 Y=1,71
X=7,5 Y=1,59
X=8 Y=1,6
X=8,5 Y=1,67
X=9 Y=1,56
X=9,5 Y=1,09
X=10 Y=1,4
58
PribNew (n:integer:a,
b:TVector:x:real)
GetRazdRazn
(k,l,t)
TabtRazdRazn
(k,l,t)
S=b[1]
I
I>N-1
P=1
J
J>I
P=P*(x-a[j])
J=J+1
J
s=s+P* GETRazdRazn (1,i+1,m)
I=I+1
I
PribNew =s
Возв рат
Рисунок 27 - Схема алгоритма приближения функций формулами Ньютона
Варианты заданий для решения задачи приближения функций приведены в таблице 6.
Аппроксимация функций методом наименьших квадратов.
Входные параметры: N - число узлов интерполяции; y - массив размерности n, содержащий значения функции в узлах интерполяции; x- массив размерности n, содержащий значения узлов интерполяции; q-точка в которой вычисляем значения функции интерполяции.
Выходные параметры: приближенное значение функции в точке q; графическая интерпретация результата.
Схема алгоритма приведена на рисунке 28.
59
Задание. Аппроксимировать табличную функцию многочленом второй степени методом наименьших квадратов.
xi |
|
yi |
xi |
yi |
1 |
|
2,0 |
6 |
1,8 |
|
5 |
|
|
8 |
2 |
|
1,9 |
7 |
1,7 |
|
4 |
|
|
1 |
3 |
|
1,9 |
8 |
1,6 |
|
2 |
|
|
0 |
4 |
|
1,8 |
9 |
1,5 |
|
7 |
|
|
6 |
5 |
|
1,7 |
10 |
1,4 |
|
7 |
|
|
0 |
Текст программы:
function Apr_Kv(n:integer;x,y:TVector;q:real):real; var i,j:integer;
a:TMatr;
b,c:TVector;
s:real; begin
a[1,1]:=N;
s:=0;
for i:=1 to N do s:=s+x[i];
a[1,2]:=s;
a[2,1]:=s;
s:=0;
for i:=1 to N do s:=s+x[i]*x[i];
a[1,3]:=s;
a[2,2]:=s;
a[3,1]:=s;
s:=0;
for i:=1 to N do s:=s+x[i]*x[i]*x[i];
a[2,3]:=s;
a[3,2]:=s;
s:=0;
for i:=1 to N do s:=s+x[i]*x[i]*x[i]*X[i];
a[3,3]:=s;
s:=0;
60