Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетЛаб ЕМПІ.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.72 Mб
Скачать

Контрольний приклад

Знайти приблизне значення функції при даному значенні аргументу за допомогою інтерполяційного многочлена Лагранжа, якщо функція задана:

а. в нерівностоячих вузлах;

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