Практикум по программированию Обработка числовых данных
.pdf4. ПРОГРАММЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ |
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 |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
