Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Вычислительная техника и программирование. В 2 ч. Ч. 1. Программирование в среде TURBO PASCAL 7

.0.pdf
Скачиваний:
0
Добавлен:
24.11.2025
Размер:
1.7 Mб
Скачать

Схема алгоритма решения задачи представлена на рис.1.

1

начало

 

2

a,b,n

ввод исходных данных

 

 

 

3 a,b,n

вывод исходных данных

4k = 0 ,5

вычисление полусуммы значений подинте-

z

=

fa + fb

гральной функции на границах отрезка

2

интегрирования (начальное значение суммы)

 

 

 

5

x = b a n

6

x=a

7 i=1, n−1

8x=x+ x z=z+f(x)

9

i

10

z=z× x

11

zt=π/2

12

разбиение отрезка интегрирования на n

частей для определения шага аргумента х

присвоение аргументу левого конца отрезка интегрирования

цикл увеличения аргумента х и суммирования текущей ординаты f(x)

вычисление приближенного значения интеграла

вычисление точного значения интеграла

51

11

 

12

 

 

 

 

 

вычисление относительной погрешности в

 

úz -zú

 

 

t

 

 

 

процентах

Dz= ¾¾¾100

 

 

 

 

 

 

 

 

 

 

zt

 

 

 

 

13z,zt,Dz

вывод результатов

 

14конец

Рис. 1.

Программа, реализующая схему алгоритма (рис. 1), имеет вид:

Program PRIM5a; {Лабораторная работа № 5a}

{студент группы ***** Иванов И.И.}

Var A, B, K, X, Z, ZT, DZ, DX :real; N, I:integer;

Begin

Writeln(‘ Введите A,B,N ‘ ); Read(A,B,N); {Ввод исходных данных} Writeln(‘Вывод исходных данных’); Writeln(‘A=‘, A, ‘B=‘, B, ‘N=‘, N); K:=0,5;

Z:=(SQR(SIN(A))/(1+2 K COS(A)+K K)+SQR(SIN(B))/(1+ +2 K COS(B)+K K))/2; {Начальное значение суммы}

DX:=(B-A)/N; X:=A; {Определение шага аргумента

и присвоение ему значения а} For i:=1 to N-1 do {Организация цикла суммирования}

begin

X:=X+DX;

Z:=Z+SQR(SIN(X))/(1+2 K COS(X)+K K)

end

 

 

 

Z:=Z DX;

ZT:=PI/2; {Вычисление приближенного и точного

DZ:=ABS(ZT-Z) 100/ZT;

 

значения интеграла}

{Вычисление относительной

 

 

 

погрешности}

Writeln(‘Приближенное значение Z=‘, Z:9:5 ); {Вывод

Writeln(‘Точное значение ZT=‘, ZT:9:5);

результатов}

52

Writeln(‘Относительная погрешность ‘, DZ:9:4)

End.

Задание Б.

Вычислить на ЭВМ наибольший элемент массива x1,x2,...,xn и его порядковый номер; n≤30. Проверить правильность программы на тесте при n=3 и следующих элементах массива (1.5, 4.3, 2.4). При выполнении зада- ния необходимо использовать прием нахождения наибольшего. Для этого перед циклом следует задать начальное значение наибольшего, равное пер- вому элементу массива, а в цикле сравнивать наибольший с текущим эле- ментом массива; в том случае, если текущий элемент больше наибольшего из предыдущих, то считать его наибольшим. Для нахождения порядкового

номера наибольшего элемента массива необходимо перед циклом задать его начальное значение, равное 1, а в цикле всякий раз, когда текущий эле- мент массива больше наибольшего, считать номером наибольшего номер текущего элемента массива. Схема алгоритма решения представлена на рис. 2.

Программа, реализующая алгоритм (рис.2), имеет вид:

Program PRIM5b; {Лабораторная работа № 5b}

{студент группы ***** Иванов И.И.}

Const NN=30;

Var

N,I,IMAX:integer;

 

 

XMAX:real;

 

 

 

X:array [1..NN]

of

real;

 

Begin

 

 

 

 

Write(‘Введите значение N‘);

 

Read(N);

{Ввод размерности массива}

For i:=1

to N

do Read(X[i]);

{Ввод массива}

Writeln(‘Вывод исходных данных:’);

Writeln(N);

 

 

 

For i:=1 to N do

Writeln(X[ i ]);

{Вывод массива}

XMAX:=X[1]; {Начальное значение наибольшего элемента

 

 

 

массива}

IMAX:=1; {Начальное значение порядкового номера

 

наибольшего элемента массива}

For i:=2 to N do {Цикл перебора элементов массива}

if X[i]>XMAX

then

 

 

begin

 

 

 

 

XMAX:=X[i];

 

 

 

IMAX:=i

 

 

 

end;

 

 

 

Write(‘XMAX=‘,XMAX,‘‘:4,‘IMAX=‘,IMAX) {Вывод результатов}

53

End.

1

начало

2

n,x(n)

3

n,x(n)

4 xmax=x1,

imax=1

5

i=2, n

Нет 6

xi >xmax

7 Да xmax=xi, imax=i

8

i

ввод размерности и значений элементов массива Х

вывод исходных данных

задание начальных значений наибольшего элемента массива и его порядкового номера

цикл перебора элементов массива для поиска наибольшего и его порядкового номера

9xmax, imax вывод результатов

10

Рис. 2.

конец

54

Л а б о р а т о р н а я р а б о т а № 6 “Программирование алгоритмов со структурой вложенных циклов”

Цель работы - овладение навыками алгоритмизации и програм- мирования вычислительных структур с вложенными циклами.

Задание для самостоятельной подготовки

Задание А.

1. Изучить:

-организацию вычислительных структур с вложенными циклами;

-возможности языка программирования по организации таких струк-

тур;

- прием программирования для вычисления определенного интеграла с заданной точностью.

2.Разработать алгоритм решения задачи в соответствии с заданием А.

3.Составить программу решения задачи.

Задание Б. 1. Изучить:

- прием программирования - нахождение экстремума функции с за- данной точностью.

2.Разработать алгоритм решения в соответствии с заданием Б.

3.Составить программу решения задачи.

4.Для контроля вычислить точное значение экстремума заданной функции (в таблице указано точное значение аргумента х, при котором достигается экстремум).

Задание к работе

Задание А.

Вычислить на ЭВМ с заданной точностью ε значение опреде-ленного

интеграла

b

z

= ò f( x) dx,

приведенного в табл. 1, лаб. 5. Исходнымиa данными для решения считать значения отрезка интегрирования [α,b], точность вычисления ε и метод численного решения. Включить в программу вычисление точного значения интеграла по первообразной функции из табл. 2, лаб. 5, оценить абсо- лютную погрешность метода.

Примечание. Значение числа разбиений, указанное в табл. 1, лаб. 5, в данной работе не используется.

Задание Б.

55

Вычислить на ЭВМ с заданной точностью ε экстремум функции, при- веденной в таблице ниже (в соответствии с вариантом задания). На печать вывести вычисленное конечное значение экстремума и значение аргумента, при котором оно достигается.

Т а б л и ц а

Вар.

 

 

 

 

 

 

 

 

Вид

Диапазон

Грубое

Точность

Вид функции

 

 

изменения

значение

вычисле-

зада-

 

 

экстремума

 

y = f (x)

 

 

 

аргумента

шага

ния

ния

 

 

 

 

 

 

 

 

 

,b]

h

экстрему-

 

 

 

 

 

 

 

 

 

 

 

 

ма ε

1

 

 

2

 

 

 

 

 

3

4

5

6

 

 

 

 

 

 

 

 

 

 

1

2 + x x 2

 

 

Максимум

[0; 1,0]

0,15

10-5

 

 

 

 

 

 

 

 

 

0,5

 

 

 

2

 

(1 x)4

 

 

Минимум

[0,2; 1,5]

0,25

0,5.10-4

 

 

 

 

 

 

 

 

 

1,0

 

 

 

3

cos x + ch x

 

 

Минимум

[−0.8; 0,4]

0,25

10-5

 

 

 

 

 

 

 

 

 

0,0

 

 

 

4

x1/ 3(1x)2/ 3

 

 

Максимум

[0,1; 0,6]

0,1

10-5

 

 

 

 

 

 

 

 

 

0,333333

 

 

 

5

x3 6x2

+ 9x + 4

 

 

Максимум

[0,2; 1,5]

0,3

10-5

 

 

 

 

 

 

 

 

 

1,0

 

 

 

6

x3 6x2 + 9x + 4

 

 

Минимум

[2; 4]

0,3

0,5.10-5

 

 

 

 

 

 

 

 

 

3,0

 

 

 

7

 

2x2

x4

 

 

Минимум

[-2; 0,8]

0,15

10-4

 

 

 

 

 

 

 

 

 

0,0

 

 

 

 

 

x2 3x + 2

 

 

Минимум

[1; 2]

0,15

0,5.10-4

8

 

 

 

 

 

1,4

 

 

 

 

x2 + 2x 1

 

 

 

 

 

9

 

x3 x 1

 

 

Минимум

[0,1; 1,2]

0,2

10-5

 

 

 

 

 

 

 

 

 

0,75

 

 

 

10

 

xex

 

 

 

 

Максимум

[0,1; 1,5]

0,25

10-5

 

 

 

 

 

 

 

 

 

1,0

 

 

 

11

 

(ln2 x)/

x

 

 

Максимум

[6; 8]

0,15

10-5

 

 

 

 

 

 

 

 

 

7,389

 

 

 

12

 

x + 1/

x

 

 

Минимум

[0,1; 1,5]

0,2

10-4

 

 

 

 

 

 

 

 

 

1,0

 

 

 

 

arctg x

1

ln(1 + x

2

)

Максимум

[0,15; 1,5]

0,2

10-5

13

2

 

1,0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

56

П р о д о л ж е н и е т а б л и ц ы

1

 

2

 

 

 

 

3

 

4

5

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14

 

 

x

 

e

 

x 1

 

 

 

Максимум

[-2; -0,5]

0,15

10-5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-1,0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

(ln2 x)/ x

 

Минимум

[0,1; 1,9]

0,2

10-4

 

 

 

 

 

 

 

 

 

 

1,0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример

 

выполнения

работы

 

 

 

Задание А.

 

 

 

 

 

 

 

 

Вычислить на ЭВМ методом трапеций значение интеграла

 

 

 

 

 

 

 

 

 

 

b

 

sin2 x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z = ò

 

 

 

 

dx

 

 

 

 

 

 

 

 

 

 

 

1 + 2k cos x + k

2

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

с точностью ε=10-4 для а=0; b=π; k=0,5. Для контроля вычислить точное значение интеграла и оценить абсолютную погрешность вычисления.

В примере выполнения лабораторной работы № 5 приведены оценка точного значения данного интеграла, схема алгоритма и программа вычис- ления для фиксированного значения числа разбиений n отрезка интегриро-

вания. Схема алгоритма решения по методу удвоения числа разбиений n

приведена на рис. 1.

 

1

 

начало

 

2

 

a,b,ε

ввод исходных данных

3 a,b,ε

вывод исходных данных

4

 

n=5

задание первоначального значения n

5

 

z1=0

начальное значение интеграла

6

57

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

fa + fb

 

 

 

 

 

 

 

 

начальное значение суммы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z2

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x =

ba

 

 

 

 

 

 

определение шага аргумента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

x=a

присвоение аргументу значения а

9

i=1, n−1

 

 

цикл увеличения аргумента и суммирования

 

 

 

текущей ординаты f(x)

10

x=x+Dx z2=z2+f(x)

11

i

12

вычисляется модуль разности между предыду- d= ½z1-z2½ щим значением интеграла и новым

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

 

 

 

 

 

 

 

присвоение нового значения интеграла

 

 

z1=z2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

предыдущему

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14

 

 

 

 

 

 

 

 

число разбиений отрезка интегрирования

 

 

 

n=2n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

удваивается

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

 

 

 

 

 

проверка точности вычисления интеграла

 

 

 

d<e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z2

16

z2=z2×Dx вычисление приближенного значения

интеграла

17

58

16

 

17

 

 

 

 

 

 

 

 

zt=p/2

 

 

вычисление точного значения интеграла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

18

 

 

 

 

 

 

 

 

z=½zt-z2½

 

 

 

 

D

 

вычисление абсолютной погрешности

 

 

 

 

 

 

 

 

 

 

19

 

 

 

 

 

 

 

 

 

 

z2,zt, z

 

 

вывод результатов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20

конец

Рис.1.

Программа, реализованная в соответствии с алгоритмом (рис. 1), име- ет вид:

Program PRIM6а; {Лабораторная работа № 6a}

{Cтудент группы ****** Иванов И.И.}

Var A, B, K, X, Z1, Z2, Z3:real; DZ, DELTA, DX, ZT, EPS:real; N, I:integer;

Begin

Writeln(‘Введите А,В,EPS ‘ ); Read(A,B,EPS); {Ввод исходных данных} Writeln(‘Вывод исходных данных ’,A,B,EPS);

K:=0.5; N:=5; {Число разбиений отрезка интегрирования} Z1:=0; {Начальное значение интеграла}

Repeat {Цикл проверки точности вычисления интеграла} Z2:=(SQR(SIN(A))/(1+2 K COS(A)+K K)+ {Начальное значение

+SQR(SIN(B))/(1+2 K COS(B)+K K))/2; суммы} DX:=(B-A)/N; {Определение шага аргумента}

X:=A; {Присвоение аргументу значения а}

For i:=1 to N-1 do {Организация цикла суммирования} begin

X:=X+DX;

Z2:=Z2+SQR(SIN(X))/(1+2 K COS(X)+K K)

end;

DELTA:=ABS(Z1-Z2); {Вычисление модуля разности}

Z1:=Z2; {Присвоение нового значения интеграла предыдущему}

59

N:=N 2 {Удвоение числа разбиений отрезка интегрирования}

Until DELTA<EPS; {Проверка точности вычисления интеграла} Z2:=Z2 DX; {Приближенное значение интеграла}

ZT:=PI/2; {Вычисление точного значения интеграла} DZ:=ABS(ZT-Z2); {Вычисление абсолютной погрешности} Writeln(‘Приближенное значение Z= ‘, Z2:9:5); {Вывод Writeln(‘Точное значение ZT= ‘, ZT:9:5); результатов} Writeln(‘Абсолютная погрешность ‘, DZ:9:4)

End.

Задание Б.

Вычислить на ЭВМ с заданной точностью ε=10-5 экстремум функции у=х (х-1)2 (х-2)3 на интервале [-0,3; 0,5]. Вид экстремума - минимум. “Гру- боезначение шага изменения аргумента принять равным 0,15. На печать вывести вычисленное значение экстремума и значение аргумента, при ко- тором оно достигается. Схема алгоритма решения приведена на рис. 2.

1

начало

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a,b

 

 

 

 

 

ввод исходных данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a,b

 

 

 

 

 

вывод исходных данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ε=10-5

 

 

 

 

 

задание точности поиска экстремума и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h=0,15

 

 

 

 

 

грубогошага изменения аргумента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x0=a

 

 

 

 

 

задание начального значения аргумента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

присвоение начальному значению экстремума

 

min=1010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x=x

 

 

 

 

большого числа при поиске минимума и

0

 

 

 

 

 

 

 

малого числа при поиске максимума

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

60