
- •Лабораторhа робота n 1
- •Опис пpогpами
- •Приклад виконання завдання
- •Опис пpогpами
- •Метод pозв'язування piвнянь
- •Текст пpогpами
- •Приклад виконання завдання
- •Опис пpогpами
- •Приклад виконання завдання
- •Контрольний приклад
- •Скористуємося формулою
- •Варіанти до завдання 2
- •Iнтерполяцiйна формула ньютона
- •Контрольний приклад
Контрольний приклад
Знайти приблизне значення функції при даному значенні аргументу за допомогою інтерполяційного многочлена Лагранжа, якщо функція задана:
а. в нерівностоячих вузлах;
b. в рівностоячих вузлах;
a) b)
-
x
y
x
y
0.05
0.050042
0.101
1.26183
0.10
0.100335
0.106
1.27644
0.17
0.171657
0.111
1.29122
0.25
0.255342
0.116
1.30617
0.30
0.309336
0.121
1.32130
0.36
0.376403
0.126
1.32660
Знайти f(x)=y(x) Визначити y(x)
при x=0.263 при x=0.1157
a)
Скористуємося формулою
де
Обчислення приведені у таблиці
i |
Різності |
Di |
yi/Di |
|||||
0 |
0.213 |
-0.05 |
-0.12 |
-0.20 |
-0.25 |
-0.31 |
-0.198E-4 |
-2526.2 |
1 |
0.05 |
0.163 |
-0.07 |
-0.15 |
-0.20 |
-0.26 |
0.444E-5 |
25547.7 |
2 |
0.12 |
0.07 |
0.093 |
-0.08 |
-0.13 |
-0.19 |
-0.154E-5 |
-111202.0 |
3 |
0.20 |
0.15 |
0.08 |
0.013 |
-0.05 |
-0.11 |
0.176E-6 |
1488007.0 |
4 |
0.25 |
0.20 |
0.13 |
0.05 |
-0.037 |
-0.06 |
0.721E-6 |
428740.0 |
5 |
0.31 |
0.26 |
0.19 |
0.11 |
0.06 |
-0.09 |
-0.980E-6 |
-38392.0 |
b)
Скористуємося формулою
де
Здесь
i |
xi |
t-i |
Ci |
(t-i)*Ci |
yi/((t-i)*Ci) |
0 |
0.101 |
2.94 |
-120 |
-352.8 |
-0.0035766 |
1 |
0.106 |
1.94 |
24 |
46.56 |
0.0274149 |
2 |
0.111 |
0.94 |
-12 |
-11.28 |
-0.1144691 |
3 |
0.116 |
-0.06 |
12 |
-0.72 |
-1.8141250 |
4 |
0.121 |
-1.06 |
-24 |
25.44 |
0.0519379 |
5 |
0.126 |
-2.06 |
120 |
-247.2 |
-0.0054069 |
program Lagransh;
var
x, p, S, t : real;
a : real; { type Share }
mass : array [1..7,1..10] of real;
i, j : integer; { type Share }
v : char;
begin
p:=1;
s:=0;
writeln;
write('Введіть значення X,які обчислюють значення фукції:');
readln(x);
{ занесення значень Х у масив значень }
for i:=1 to 6 do
begin
write('Введіть X значення [',i,']:');readln(mass[i][1]);
end;
writeln;
{ занесення значень Y у масив значень }
for i:=1 to 6 do
begin
write('Введіть значення Y[',i,']:');readln(mass[i][10]);
end;
writeln;
writeln('1 - в нерівностоячих вузлах таблиці');
writeln('2 - в рівностоячих вузлах таблиці');
readln(v);
writeln('*************** Xi Yi **************');
for i:=1 to 6 do
writeln(mass[i][1],' ',mass[i][10]);
if v='2' then
begin
{ t-i }
t:=(x-mass[1][1])/(mass[2][1]-mass[1][1]);
for i:=1 to 6 do
mass[i][3]:=t-(i-1);
{ P5+1 }
for i:=1 to 6 do
p:=p*mass[i][3];
{ Ci }
for i:=1 to 6 do
begin
mass[i][4]:=1;
for j:=1 to i-1 do mass[i][4]:=mass[i][4]*j;{ i! }
for j:=1 to 6-i do
mass[i][4]:=mass[i][4]*j; { (n-1)! }
{ визначення парності значення}
if int((6-i)/2)=(6-i)/2 then a:=1 else a:=-1;
mass[i][4]:=mass[i][4]* a;
end;
{ знаходження Yi / ((t-i)*Ci) }
for i:=1 to 6 do
begin
mass[i][6]:=mass[i][10]/(mass[i][3]* mass[i][4]);
end;
{ знаходження S = Yi / ((t-i)*Ci) }
for i:=1 to 6 do
s:=s+mass[i][6];
writeln('************* Значення t-i ************');
for i:=1 to 3 do
writeln('при i=',i,' ',mass[i][3],
'при i=',i+3,' ',mass[i+3][3]);
writeln;
writeln('************* Значения Ci ******************');
for i:=1 to 3 do
writeln('при i=',i,' ',mass[i][4],
'при i=',i+3,' ',mass[i+3][4]);
writeln;
writeln('************* Значения Yi / ((t-i)*Ci) ******');
for i:=1 to 3 do
writeln('при i=',i,' ',mass[i][6],
'при i=',i+3,' ',mass[i+3][6]);
end
{ ++++++++++++++++++++++++++++++++++++++++++++}
else
begin
{ обчислення Пn+1 і заносимо данні у таблицю }
for i:=2 to 7 do
mass[i-1][i]:=x-mass[i-1][1];
writeln;
{ знаходження останніх різностей }
for i:=1 to 5 do
for j:=i+2 to 7 do
begin
mass[i][j]:=mass[i][1]-mass[j-1][1];
mass[j-1][i+1]:=abs(mass[i][j]);
end;
{ знаходемо Di }
for i:=1 to 6 do
mass[i][8]:=1;
for i:=1 to 6 do
for j:=2 to 7 do
mass[i][8]:=mass[i][8]*mass[i][j];
{ знаходемо yi/Di }
for i:=1 to 6 do
mass[i][9]:=1;
for i:=1 to 6 do
mass[i][9]:=mass[i][10]/mass[i][8];
{ знаходемо Пn+1 }
for i:=2 to 7 do
p:=p*mass[i-1][i];
{ знаходемо Z(yi/Di) }
for i:=1 to 6 do
s:=s+mass[i][9];
{ печать значень на екран }
readln;
writeln('************ Різності ***********');
for i:=1 to 6 do
begin
for j:=2 to 7 do
write(mass[i][j]:6,' ');
writeln;
end;
readln;
writeln('************ Di ***********');
for i:=1 to 6 do
writeln(mass[i][8]);
writeln('************ yi/Di ***********');
for i:=1 to 6 do
writeln(mass[i][9]);
end;
writeln;
writeln(' П5+1 = ',p);
writeln(' S = ',s);
writeln('Приблизне значення функції при значенні ');
writeln(' аргумента рівному ',x,'дорівнюється: ',s*p)
end.
Контрольні завдання
Варіанти до завдання 1
X |
Y |
|
N вар |
X |
|
X |
Y |
|
N вар |
X |
0.43 |
1.63597 |
|
1 |
0.702 |
|
0.02 |
1.02316 |
|
2 |
0.102 |
0.48 |
1.73234 |
|
7 |
0.512 |
|
0.08 |
1.09590 |
|
3 |
0.114 |
0.55 |
1.87686 |
|
13 |
0.645 |
|
0.12 |
1.14725 |
|
14 |
0.125 |
0.62 |
2.03345 |
|
19 |
0.736 |
|
0.17 |
1.21483 |
|
20 |
0.203 |
0.70 |
2.22846 |
|
25 |
0.608 |
|
0.23 |
1.30120 |
|
26 |
0.154 |
0.75 |
2.35973 |
|
|
|
|
0.30 |
1.40976 |
|
|
|
X |
Y |
|
N вар |
X |
|
X |
Y |
|
N вар |
X |
0.35 |
2.73951 |
|
3 |
0.526 |
|
0.41 |
2.57418 |
|
4 |
0.102 |
0.41 |
2.30080 |
|
9 |
0.453 |
|
0.46 |
2.32530 |
|
10 |
0.114 |
0.47 |
1.96864 |
|
15 |
0.482 |
|
0.52 |
2.09336 |
|
16 |
0.125 |
0.51 |
1.78776 |
|
21 |
0.552 |
|
0.60 |
1.86203 |
|
22 |
0.203 |
0.56 |
1.59502 |
|
27 |
0.436 |
|
0.65 |
1.74926 |
|
28 |
0.154 |
0.64 |
1.34310 |
|
|
|
|
0.72 |
1.62098 |
|
|
|
X |
Y |
|
N вар |
X |
|
X |
Y |
|
N вар |
X |
0.68 |
0.80866 |
|
5 |
0.896 |
|
0.11 |
9.05421 |
|
6 |
0.314 |
0.73 |
0.89492 |
|
11 |
0.812 |
|
0.15 |
6.61659 |
|
12 |
0.235 |
0.80 |
1.02964 |
|
17 |
0.774 |
|
0.21 |
4.69170 |
|
18 |
0.332 |
0.88 |
1.20966 |
|
23 |
0.955 |
|
0.29 |
3.35106 |
|
24 |
0.275 |
0.93 |
1.34087 |
|
29 |
0.715 |
|
0.35 |
2.73951 |
|
30 |
0.186 |
0.99 |
1.52368 |
|
|
|
|
0.40 |
2.36522 |
|
|
|