Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ к лаб.раб..doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.22 Mб
Скачать

2. Порядок выполнения работы

  1. Построить интерполяционный многочлен Лагранжа для функции с неравноотстоящими узлами и найти ее значение в заданной точке (задание 1), используя программу из приложения.

  2. Построить интерполяционный многочлен Лагранжа для функции с равноотстоящими узлами и найти ее значение в заданной точке (задание 2), используя программу из приложения.

  3. Оценить полученные результаты.

3. Задание к лабораторной работе

3.1. Выбрать последовательно функции из задания 1 и задания 2 в соответствии с вариантом.

Задание 1

X

Y

N вар

X

0.43

1.63597

1

0.702

0.48

1.73234

7

0.512

0.55

1.87686

13

0.645

0.62

2.03345

19

0.736

0.70

2.22846

25

0.608

0.75

2.35973

X

Y

N вар

X

0.02

1.02316

2

0.102

0.08

1.09590

3

0.114

0.12

1.14725

14

0.125

0.17

1.21483

20

0.203

0.23

1.30120

26

0.154

0.30

1.40976

X

Y

N вар

X

0.35

2.73951

3

0.526

0.41

2.30080

9

0.453

0.47

1.96864

15

0.482

0.51

1.78776

21

0.552

0.56

1.59502

27

0.436

0.64

1.34310

X

Y

N вар

X

0.41

2.57418

4

0.102

0.46

2.32530

10

0.114

0.52

2.09336

16

0.125

0.60

1.86203

22

0.203

0.65

1.74926

28

0.154

0.72

1.62098

X

Y

N вар

X

0.68

0.80866

5

0.896

0.73

0.89492

11

0.812

0.80

1.02964

17

0.774

0.88

1.20966

23

0.955

0.93

1.34087

29

0.715

0.99

1.52368

X

Y

N вар

X

0.11

9.05421

6

0.314

0.15

6.61659

12

0.235

0.21

4.69170

18

0.332

0.29

3.35106

24

0.275

0.35

2.73951

30

0.186

0.40

2.36522

Задание 2

X

Y

N вар

X

1.375

5.04192

1

1.383

1.380

5.17744

7

1.392

1.385

5.32016

13

1.386

1.390

5.47069

19

1.393

1.395

5.62968

25

1.386

1.400

5.79788

X

Y

N вар

X

0.115

8.65729

2

0.126

0.120

8.29329

3

0.131

0.125

7.95829

14

0.123

0.130

7.64893

20

0.133

0.135

7.36235

26

0.128

0.140

7.09613

X

Y

N вар

X

0.150

6.61659

3

0.152

0.155

6.39989

9

0.161

0.160

6.19658

15

0.166

0.165

6.00551

21

0.164

0.170

5.82558

27

0.162

0.175

5.65583

X

Y

N вар

X

0.180

5.61543

4

0.183

0.185

5.46693

10

0.187

0.190

5.32634

16

0.194

0.195

5.19304

22

0.197

0.200

5.06649

28

0.203

0.205

4.94619

X

Y

N вар

X

0.210

4.83170

5

0.212

0.215

4.72261

11

0.216

0.220

4.61855

17

0.223

0.225

4.51919

23

0.226

0.230

4.42422

29

0.224

0.235

4.33337

X

Y

N вар

X

1.415

0.888551

6

1.417

1.420

0.889599

12

1.425

1.425

0.890637

19

1.439

1.430

0.891667

24

1.423

1.435

0.892687

30

1.431

1.440

0.893698

3.2. Для каждого задания найти значения функций в заданных точках.

3.3. Оценить правильность полученных результатов.

3.4. Оформить отчет по лабораторной работе.

Приложение

program labrab13;

var

x, p, S, t : real;

a : real;

mass : array [1..7,1..10] of real;

i, j : integer;

v : char;

begin

cls;

writeln('Решение задачи интерполирования с помощью многочлена Лагранжа');

p:=1;

s:=0;

writeln;

write('Введите значение Х, в котором вычисляется функция:');

readln(x);

for i:=1 to 6 do

begin

write('Введите значення аргумента исходной функции X [',i,']:');readln(mass[i,1]);

end;

writeln;

for i:=1 to 6 do

begin

write('Введите значення исходной функции Y[',i,']:');readln(mass[i,10]);

end;

writeln;

writeln('Нажмите 1, если неравномерные');

writeln('Нажмите 2, если равномерные');

readln(v);

for i:=1 to 6 do

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;

if int((6-i)/2)=(6-i)/2 then a:=1 else a:=-1;

mass[i,4]:=mass[i,4]* a;

end;

for i:=1 to 6 do

begin

mass[i,6]:=mass[i,10]/(mass[i,3]* mass[i,4]);

end;

for i:=1 to 6 do

s:=s+mass[i,6];

end

else

begin

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;

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];

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];

for i:=2 to 7 do

p:=p*mass[i-1,i];

for i:=1 to 6 do

s:=s+mass[i,9];

readln;

end;

writeln;

writeln('Результаты вычисления функции в заданной точке');

writeln;

writeln('Y(',x,' )=',s*p:10:4);

end.