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

Практикум по программированию Обработка числовых данных

.pdf
Скачиваний:
562
Добавлен:
23.03.2016
Размер:
3 Мб
Скачать
☆

4. ПРОГРАММЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ

91

 

 

ReadLn(N);

WriteLn('Введите элементы массива'); for i:=1 to N do

Read(X[i]);

ReadLn;

Write('Введите коэффициент кратности: '); ReadLn(K);

//ВЫЧИСЛЕНИЕ СРЕДНЕГО ЗНАЧЕНИЯ //Начальное значение для поиска суммы S:=0;//элементов массива, кратных K. //Начальное значение сч¸тчика элементов L:=0;//массива, включенных в сумму. for i:=1 to N do

if X[i] mod K = 0 then begin

S:=S+X[i];

L:=L+1;

end;

//ПРОВЕРКА КОЛИЧЕСТВА ЭЛЕМЕНТОВ, ВКЛЮЧЕННЫХ В S if L=0 then

begin

Write('в массиве нет элементов, кратных ',K); ReadLn;

Halt //Завершение работы программы end;

//ВЫЧИСЛЕНИЕ И ВЫВОД СРЕДНЕГО ЗНАЧЕНИЯ S:=S/L;//Найденное среднее значение WriteLn(S:6:1,' - среднее элементов массива, '

,'кратных ',K);

//ПОИСК МАКСИМАЛЬНОГО И ЕГО ИНДЕКСА Write('Введите верхнюю грань '

, 'искомого максимального: '); ReadLn(M);

Xmax:=0;

for i:=1 to N do

if (X[i] < M) and (X[i]>Xmax) then begin

Xmax:=X[i];

iMax:=i;

end;

//ПРОВЕРКА, НАЙДЕН ЛИ МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ if Xmax=0 then

92 ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ

begin

Write('в массиве нет положительных элементов, ' ,'меньших ',M);

ReadLn;

Halt //Завершение работы программы end;

//ЗАМЕНА В МАССИВЕ МАКСИМАЛЬНОГО СРЕДНИМ X[iMax]:=Round(S);

//ВЫВОД РЕЗУЛЬТАТОВ

WriteLn(Xmax:6,' - максимальное, меньшее ',M); WriteLn(iMax:6,' - индекс максимального'); WriteLn;

WriteLn('Преобразованный массив'); for i:=1 to N do

Write(X[i]:4);

ReadLn;

end.

4.11. Задания A для самостоятельной работы

Выполнение программы прекратить и вывести соответствую - щие сообщения, если в массиве не будут найдены требуемые значения.

1.Вычислить среднее арифметическое, наименьшее значение среди положительных элементов и произведение отрицател ьных

âмассиве D(n), n ≤ 25. Вывести массив, среднее арифметическое, наименьшее значение и произведение.

2.Найти наибольшее и наименьшее значения, их индексы и среднее арифметическое элементов, расположенных между н ими

âмассиве D(n), n ≤ 25. Вывести массив, среднее арифметическое, наименьшее и наибольшее значения и их индексы.

3.Найти наибольшее и наименьшее значения и их индексы в массиве D(n), n ≤ 25. Если индекс наименьшего значения меньше индекса наибольшего, то вычислить сумму элементов, в прот ивном случае — произведение. Вывести массив, наименьшее и на и- большее значения и их индексы, сумму или произведение.

4.Вычислить среднее арифметическое значение элементов,

удовлетворяющих условию а ≤ Di < b, найти наименьшее значе- ние среди положительных элементов и его индекс в массиве D(n), n ≤ 25. Вывести массив, среднее арифметическое и наименьшее значение и его индекс.

4. ПРОГРАММЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ

93

 

 

5.Вычислить сумму положительных элементов до первого отрицательного и произведение отрицательных до первого по ложительного элемента в массиве D(n), n ≤ 25. Вывести массив, сумму и произведение.

6.Из массива D(n), n ≤ 25 переписать элементы подряд в массив P, расположив вначале положительные, а затем отрицательные. Определить, в каком из массивов наименьший элемент вс третился первым. Вывести массивы, наименьшие значения и их ин - дексы.

7.Вычислить среднее арифметическое положительных элементов, кратных двум, и произведение отрицательных элемен тов, кратных трем, в массиве D(n), n ≤ 25. Вывести массив, среднее арифметическое и произведения.

8.Вычислить количество положительных и отрицательных элементов массива D(n), n ≤ 25. Если количество положительных элементов больше, то вычислить их среднее арифметичес - кое, в противном случае вычислить их произведение. Вывест и массив, количество положительных и отрицательных чисел, с реднее арифметическое или произведение.

9.Найти наибольшее и наименьшее значения и их индексы в массиве D(n), n ≤ 25. Первый элемент массива заменить наименьшим, а последний — наибольшим значением в массиве. Вывести массив, наименьшее и наибольшее значения, их индексы.

10.Найти наибольшее и наименьшее значения и их индексы

âмассиве D(n), n ≤ 25. Вычислить их среднее значение и произведение элементов, значения которых превышают среднее. Вы вести массив, наименьшее, наибольшее значения и их индексы, п роизведение.

11.Вычислить среднее арифметическое положительных элементов с четными индексами и произведение отрицательных с нечетными индексами в массиве D(n), n ≤ 25. Вывести массив, среднее арифметическое и произведение.

12.В массивах X(n) и Y(n), n ≤ 25 вычислить произведения

соответствующих элементов Xi Yi и найти наибольшее и наименьшее значения. Вывести массивы, произведения, наибольшее и наименьшее значения.

13.В массивах X(n) и Y(n), n ≤ 25 вычислить средние значе-

ния соответствующих элементов (Xi + Yi)/2 и найти среди них наибольшее и наименьшее. Вывести массивы, средние значени я, наибольшее и наименьшее значения.

94

ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ

14.Вычислить отношение C = A/B, где A — произведение положительных элементов с четными индексами, а B — сумма элементов по абсолютному значению с нечетными индексами массива D(n), n ≤ 25. Вывести массив, произведение, сумму и их отношение.

15.Вычислить разность C = A − B, где A — произведение положительных элементов, а B — сумма элементов по абсолютному значению массива D(n), n ≤ 25. Вывести массив, произведение, сумму и их разность.

16.Найти наибольшее и наименьшее значения произведений

соседних элементов Xi Yi+1 (для последнего элемента XnY1) в массиве X(n), n ≤ 25. Вывести массив, наименьшее и наибольшее зна- чения произведений.

17.В массивах X(n) и Y(n), n ≤ 25 вычислить произведения

пар элементов Xi Yi > A и найти среди них наибольшее и наименьшее значения. Вывести массивы, произведения и наиболь - шее и наименьшее значения.

18.Вычислить среднее арифметическое положительных элементов и произведение элементов, превышающих среднее ари ф- метическое по абсолютному значению в массиве D(n), n ≤ 25. Вывести массив, среднее арифметическое и произведение.

19.Для массивов X(n) и Y(n), n ≤ 25 вычислить модуль разно-

сти соответствующих элементов массивов |Xi – Yi | и найти среди них наибольшее и наименьшее значения. Вывести массивы, ра з- ности, наибольшее и наименьшее значения.

20.Вычислить среднее геометрическое положительных элементов, кратных двум, и сумму отрицательных с нечетными ин - дексами в массиве D(n), n ≤ 25. Вывести массив, среднее геометрическое и сумму.

21. Суммы стоящих рядом элементов массива X(n), n ≤ 25

Xi + Xi+1

(для последнего элемента Xn + X1) записать в массив

Y(n), n

≤ 25 и найти наибольшее и наименьшее значения в мас-

сивах X(n) и Y(n). Вывести массивы, наибольшее и наименьшее значения.

22.Из массива D(n), n ≤ 25 переписать числа в массив P, расположив подряд вначале отрицательные, а затем положитель ные. Определить, в каком из массивов наименьший по модулю элемент встретится первым. Вывести массивы, наименьшие значе - ния и их индексы.

23.Вычислить сумму, количество положительных элементов, которые превышают B, и произведение элементов по абсолютно-

4. ПРОГРАММЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ

95

му значению массива D(n), n ≤ 25. Вывести массив, произведение, сумму и количество.

24.В массивах X(n) и Y(n) n ≤ 25 вычислить количество ра-

венств соответствующих элементов Xi è Yi и найти пары элементов, имеющих в сумме наибольшее и наименьшее значения. Вывести массивы, количество равенств, наибольшее и наименьш ее значения.

25.В массиве D(n), n ≤ 25 вычислить среднее арифметическое положительных элементов до первого отрицательного и най ти среди них количество элементов, превышающих среднее ариф - метическое. Вывести массив, среднее арифметическое и коли че- ство элементов.

26.В массиве D(n), n ≤ 25 вычислить произведение положительных элементов до первого отрицательного и найти сред и них наибольшее и наименьшее значения. Вывести массив, про изведение, наибольшее и наименьшее значения.

4.12.Пример выполнения задания Б

Известно, что функция

y =

− sin (5x) x

2 sin x

на интервале зна-

x − 3

 

 

 

 

 

чений аргумента −1,6...2,0 имеет несколько точек перегиба, в которых значение хотя бы одной производной больше −1·1030. Требуется найти точку перегиба с максимальным значением про изводной, изменяя аргумент с шагом 0,001. Вывести найденные приближенные значения производной и соответствующей то чки перегиба:

program Project2; {$APPTYPE CONSOLE} uses

SysUtils; const

dX=0.001; var

Xmax,dYmax,X,dYL,dY,dYR:Extended; begin

X:=-1.6;

//Приращение функции в точке слева от текущей dYL:= Sin(5*X)*Sin(X)*Sqr(X)/(X-3)

-Sin(5*(X+dX))*Sin(X+dX)*Sqr(X+dX)/(X+dX-3); X:=X+dX;

96 ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ

//Приращение функции в текущей точке dY:= Sin(5*X)*Sin(X)*Sqr(X)/(X-3)

-Sin(5*(X+dX))*Sin(X+dX)*Sqr(X+dX)/(X+dX-3); Xmax:=X; dYmax:=-1e30;

repeat X:=X+dX;

//Приращение функции в точке справа от текущей dYR:= Sin(5*X)*Sin(X)*Sqr(X)/(X-3)

-Sin(5*(X+dX))*Sin(X+dX)*Sqr(X+dX)/(X+dX-3); //Если Х – точка ререгиба

if (dY>dYL) and (dY>dYR) or (dY<dYL) and (dY<dYR) then

if dY>dYmax then //и dY в ней больше dYmax, begin //то текущей точкой перегиба

//с максимальной производной станет Xmax:=X-dX; //текущее значение Х, а текущим

//максимальным приращением dYmax:=dY;//в точке перегиба - значение dY.

end;

dYL:=dY;

dY:=dYR; until X>1.9995;

WriteLn(Xmax,' - точка перегиба, ' ,'в которой достигается',#13#10

,dYmax/dX,' - максимум производной');

ReadLn;

end.

4.13. Задания Б для самостоятельной работы

Во всех заданиях не использовать аналитических формул пр о- изводных заданных функций. Ввод исходных данных выполнит ь с применением переменных Хнач, Хкон, hX, используя числовые значения вариантов заданий. Найденные значения выводить с поясняющими текстами.

1. Составить программу вычисления максимального и минимального значений функции Y = X3 − 18X2 − 10X + 7 и соответствующих значений аргумента при его изменении от −4 до 16 с шагом 0,01.

2. Составить программу вычисления значения аргумента, при котором функция X sin5 (3X) имеет минимальное по абсолютной величине значение производной, изменяя его от −1 до 2,5 с шагом 0,001.

4. ПРОГРАММЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ

97

 

 

3.Составить программу вычисления максимального значе- ния экстремума-минимума функции X1/3 sin2 (10X) и соответствующего значения аргумента при его изменении на интерв а- ле 0,06...2,32 с шагом 0,001.

4.Составить программу вычисления минимального расстояния между точками экстремумов-максимумов функции

cos X 1 + 9 sin2 X и соответствующих значений функции при изменении X на интервале 8...18 с шагом 0,001.

5. Произвольные значения от -3,4 до 1,1 аргумента функции Y = X5 - 18X3 - 22X2 находятся в массиве X(n), n £ 20. Составить программу вычисления максимального и минимального знач е- ний функции, а также соответствующих значений элементов м ассива Х и их индексов.

6. Известно, что в интервале -2...8,5 уравнение cos (2,5X)´ ´sin2 X + 0,2 = 0 имеет несколько корней и в каждом корне производная функции меньше -1000. Составить программу нахождения корня, в котором производная функции имеет максимальное значение.

7. Известно, что в интервале от -14 до 19 функция Y = = e −2,5(X−1)2 cos X имеет несколько точек перегиба со значениями производной больше -500. Составить программу нахождения точки перегиба, в которой производная функции имеет максимальн ое значение.

8. Составить программу вычисления минимального расстоя-

ния между соседними корнями уравнения 1 - 0,6 = 0, 1,5 + X cos(1,5X )

изменяя X на интервале 1,2...16 с шагом 0,0001.

9.Составить программу вычисления значения аргумента, изменяя его на интервале 6...12 с шагом 0,001, при котором производная функции Y = X 0,2 sin2 X cos (3X) имеет минимальное по абсолютной величине значение в точке перегиба.

10.На интервале -0,5...0,3 функция 3 X sin2(20X ) - 0,2X имеет несколько экстремумов. Требуется найти, изменяя аргуме нт с шагом dX, пару соседних точек экстремума, разность значений функции в которых минимальна.

11.Составить программу вычисления максимального рассто-

яния между точками экстремумов-минимумов функции Y =

= 1 + 9sin2(5X) × sin(3X ) и соответствующих значений функции при изменении X на интервале 2...8 с шагом 0,001.

98

ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ

 

 

12.На интервале −1,8...1,9 функция Y = cos (5X) sin2 X имеет несколько экстремумов. Требуется найти, изменяя аргумент с шагом dX, точку экстремума-минимума с максимальным значением функции.

13.Составить программу вычисления минимального положи-

тельного значения функции Y = 10 − (2X 3 + 7X 2 − 3X 4) sin (12X ) и соответствующих значений аргумента при его изменении н а интервале −1,5...2,2 с шагом 0,001.

14. Найти локальное минимальное приращение расстояния от точки с координатами (Xt, Yt) до кривой Y = X 5 − 18X 3 −

−22X 2, изменяя X на интервале −3...0,2 с шагом 0,05.

15.Составить программу вычисления максимального расстояния между корнями уравнения 2cos (2X ) + X sin X + 0,4 = 0 с положительным приращением функции в соседних точках, изм е- няя X на интервале −2...3 с шагом 0,0001.

16.На интервале 8...16 функция Y = cos (5X) sin2 X имеет несколько экстремумов. Требуется найти, изменяя аргумент с шагом dX, точку экстремума с максимальным значением функции.

17.В массивах X(N), Y(N), N ≤ 30 заданы координаты точек

на плоскости. Найти такое i ≤ N, для которого расстояние

d =

 

aXi + bYi + c

 

от точки (Xi, Yi) до прямой aX + bY +

c = 0

 

a2 + b2

 

 

 

 

 

 

минимально.

 

 

 

18. Изменяя

аргумент функций Y 1 = X sin (5X ) è

Y 2 =

= excos2 (2X) на интервале 0...4,15 с шагом 0,0001, найти минимальное расстояние между соседними точками их экстремум ов.

19.Изменяя аргумент функции Y = X cos (12X) − X sin (X) на интервале −1...1 с шагом 0,0001, найти минимальное и максимальное приращения и соответствующие им значения аргумента.

20.Найти минимальное расстояние от точки с координатами (Xt, Yt) до прямых aiX + biY + ci = 0, i = 1, 2,… ..., 10, используя

формулу d = aXt + bYt + c расстояния от точки (Xt, Yt ) до пря- a2 + b2

ìîé aX + bY + c = 0.

21. На интервале −2...6 функция Y = cos (2,5X) sin2 X имеет несколько экстремумов. Требуется найти, изменяя аргумент с шагом dX, точку экстремума-максимума с минимальным значением функции.

4. ПРОГРАММЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ

99

 

 

22. Составить программу вычисления максимального отрицательного значения функции Y = sin5 (3X) + 15X sin4 (3X) cos (3X) и соответствующее значение аргумента при его изменении н а интервале −4...16 с шагом 0,001.

23.Составить программу вычисления минимального расстояния между корнями уравнения 1/[2cos X + X sin (2X)] − 0,4 = 0 с положительным приращением в их окрестностях, изменяя X на интервале от −1,5...7 с шагом 0,0001.

24.На интервале −1...8 функция Y = cos (2,5X) sin2 X + 0,5 имеет несколько экстремумов-минимумов. Требуется найти, и з- меняя аргумент с шагом dX, минимальный положительный из таких экстремумов и соответствующее значение X.

25.Найти минимальное расстояние от точки с координатами

(Xt, Yt) до кривой Y = X 2 sin (9X), изменяя аргумент с шагом dX на интервале Х1...Х2, а также соответствующую точку (Xmin, Ymin) на этой кривой.

4.14.Вычисление суммы бесконечного ряда

ñзаданной точностью

Пусть задана последовательность чисел R1, R2, R3, ...…,Rn, ..…. Выражение R1 + R2 + R3 +...+… Rn +…... называютбесконечным рядом, или просто рядом, а числа R1, R2, R3, ...… —членами ряда. При этом имеют в виду, что накопление суммы ряда начинается с первы х

n

его членов. Сумма Sn = å Ri называется частичной суммой ряда:

i =1

ïðè n = 1 — первой частичной суммой, при n = 2 — второй частичной суммой и так далее.

Ряд называется сходящимся, если последовательность его частичных сумм имеет предел, и расходящимся — в противном слу- чае. Понятие суммы ряда можно расширить [5], и тогда некоторые расходящиеся ряды также будут обладать суммами. Именн о

расширенное понимание суммы ряда будет использовано при разработке алгоритмов для следующей постановки задачи: нако п- ление суммы следует выполнять до тех пор, пока очередной ч лен ряда по абсолютной величине не будет больше заданной вели - чины ε.

В общем случае все или часть членов ряда могут быть заданы выражениями, зависящими от номера члена ряда и перемен - ных. Например,

100 ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ

 

X 2

 

X 3

 

X 4

 

X 5

∞

i X i

 

S = 1 - X +

 

-

 

-

 

+

 

+ ... =1 + å

(-1)

 

.

2!

3!

4!

5!

i !

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

i 1

 

 

 

Тогда возникает вопрос, как минимизировать объем вычислений — вычислять значение очередного члена ряда по общей формуле члена ряда (в приведенном примере ее представляет выражение под знаком суммы), по рекуррентной формуле (ее вывод представлен ниже) или использовать рекуррентные форм у- лы лишь для частей выражения члена ряда (см. ниже).

4.15. Вывод рекуррентной формулы для вычисления члена ряда

Пусть требуется найти ряд чисел R1, R2, R3, ..., последовательно вычисляя их по формулам

 

 

R = 1 X

, R

2

= 1

× 3 X 2, ...,

 

 

 

 

1

2

 

2

× 4

 

 

 

 

 

 

 

 

 

RN

=

1 × 3 × 5 × 7 × ... × (2N - 3)(2N - 1)

X N .

(4.1)

 

 

2 × 4 × 6 × 8

× 9 × ... × (2N - 2)(2N )

 

 

Для сокращения вычислений в данном случае удобно вос-

пользоваться рекуррентной формулой вида RN = a(X ,N )RN −1,

 

ïî-

зволяющей вычислить RN при N > 1, зная значение предыдущего

члена ряда RN−1, ãäå a(X ,N )

— выражение, которое можно полу-

чить после упрощения отношения в формуле (4.1) N к N - 1:

 

 

 

 

1 × 3 × 5 × 7 × ... × (2N - 3)(2N - 1) X N

 

 

 

 

 

2 × 4 × 6 × 8 × ... × (2N - 2)(2N )

 

 

 

 

a(X ,N ) =

 

 

=

 

 

 

 

1 × 3 × 5 × 7 × ... ×[2(N - 1) - 3][2(N - 1) - 1] X N −1

 

 

 

 

 

2 × 4 × 6 × 8 × ... × [2(N - 1) - 2][2(N - 1)]

 

 

=

 

1 × 3 × ... × (2N

- 3)(2N - 1)X N × 2 × 4 ×

... ×[2(N - 1) - 2][2(N - 1)]

=

 

1 × 3 × ... ×[2(N

- 1) - 3][2(N - 1) - 1]X N −1

× 2 × 4 × ... × (2N - 2) × 2N

 

 

 

=

1 × 3 × ... × (2N - 3)(2N - 1) X N −1 X × 2 × 4 × ... × (2N - 4)(2N - 2)

 

=

1 × 3 × ... × (2N - 5)(2N - 3) X N −1

× 2 × 4 × ... × (2N - 2) × 2N

 

 

 

 

 

 

 

 

 

 

=

(2N - 1)X

.

 

 

 

 

 

 

 

 

 

 

2N

 

 

 

 

 

 

 

 

Таким образом, рекуррентная формула примет вид

 

 

 

 

 

R

N

= (2N - 1)X

R

N

− .

(4.2)

 

 

 

 

 

2N

 

 

1