- •1. Разработка алгоритмов с простой структурой
- •1.2. Запись и вычисление логических выражений
- •Перечень логических формул:
- •Варианты задания
- •1.4. Обработка векторов в цикле с ветвлением
- •1.5. Нахождение экстремумов на множестве значений
- •Варианты задания
- •1.6. Вычисления в цикле по рекуррентным формулам
- •1.7. Управление циклом по сложному условию
1.5. Нахождение экстремумов на множестве значений
Экстремум — это максимум или минимум на множестве значений.
Задание. Составить и испытать циклическую программу для получения результата, указанного в варианте задания, выбрав значения векторов X, Y, число n элементов вектора, величину A — в вариантах 26, 27. Если экстремальное значение повторяется, а найти надо его номер, считайте результатом номер первого по порядку экстремума.
Варианты задания
Номер наименьшего по абсолютной величине элемента вектора X.
Наибольший элемент в векторе X и наименьший — в векторе Y.
Наибольшая по абсолютной величине разность соседних элементов в векторе X.
Номер наибольшего из отношений Xk /Yk, k = 1, 2 , 3, … , n.
Номер наибольшей среди сумм ,m = 2, 3, … , n.
Произведение наименьшего элемента вектора X и наибольшего элемента вектора Y.
Сумма квадратов значений наибольшего и наименьшего элементов вектора X.
Наименьшая по абсолютной величине разность Xk–Yk, k =1,2, … , n.
Наибольшая среди сумм ,m = 2, 3, … , n.
Номер наибольшей разности |Xk| – | Xn – k+ 1 |, k = 1, 2 , 3, … , n.
Наименьшее из значений Xk2 + 2/Xk, k = 1, 2 , 3, … , n.
Номер наименьшего из значений Xk2 – Yk2, k = 1, 2 , 3, … , n.
Значение (Xmin+ Ymin)/2, где Xmin (Ymin) — наименьший элемент вектора X (вектора Y).
Номер m наибольшего среди произведений ,m = 2, 3, … , n.
Номер наибольшего элемента Xk и наибольшее значение |Xk |.
Номер наименьшего из значений XkYk, k = 1, 2 , 3, … , n.
Наибольшее из отношений ,m = 2, 3, … , n
Разность наибольшей и наименьшей абсолютной величины элемента вектора X.
Наименьшее из значений Xk2 – Xk–12 и соответствующий номер k.
Номер наибольшего из значений ,k = 1, 2 , 3, … , n.
Наименьшее из произведений ,m = 2, 3, … , n.
Наибольшая среди сумм ,m = 2, 3, … , n.
Наименьшая сумма Xk2 + Xk+1 и соответствующий ей номер k.
Номер наименьшего из значений Yk2– , k = 1, 2 , 3, … , n.
Наибольшее из значений | Xk ·Yn– k+1|, k = 1, 2 , 3, … , n.
Элемент вектора X, для которого разность (Xk – A) максимальна.
Номер элемента вектора X, имеющего ближайшее значение к A.
Два наибольших (хотя бы и равных наибольших) произведения Xk–1 Xk и номер k первого их сомножителя.
Наибольшее число подряд идущих отрицательных элементов вектора X (хотя бы и один элемент или 0).
Наибольшее число подряд идущих пар (X1,Y1), (X2,Y2), (X3,Y3), … , (Xk,Yk), … , (Xn,Yn), в которых Xk < Yk.
1.6. Вычисления в цикле по рекуррентным формулам
Задание. Составьте программу суммирования начальных членов заданного ряда при заданном аргументе x, пока абсолютная величина члена ряда не станет меньше E (малая величина, например 0,0000001).
Вычисляйте члены ряда по рекуррентным формулам, которые выведите, анализируя выражение общего члена ряда. Для тестирования программы используйте |x| ≤ 1.
Правильное значение суммы ряда приблизительно равно значению контрольной формулы (см. ниже перечень контрольных формул; номера ряда и номер формулы совпадают). В противном случае для нахождения ошибки проверьте вычисления по шагам, в отладочном режиме, используя удобное значение x = 1.
Пример выполнения задания для пункта № 0 перечня рядов. Обозначим j номер члена ряда. Если x < 1, имеем дело с быстро убывающим рядом, т.е. число суммируемых членов невелико. Тем не менее, можно значительно ускорить суммирование, если свести к минимуму число умножений при получении очередного члена ряда. Вместо возведения в степень (2j –1) будем увеличивать на 2 текущую степень x, а текущее значение знаменателя zn будем получать, умножая предыдущее на два новых сомножителя (2j–3), (2j–2). Кроме x, zn и E, потребуются переменные chis (числитель), slag (член ряда) = chis/zn, Sum (сумма). Ниже дана одна из возможных схем суммирования:
chis = x, zn = 1, slag = x, Sum = 0,
ВЫПОЛНЯТЬ // Строим цикл с постусловием
slag = chis/zn,
Sum = Sum + slag,
j = j+1, chis = –chis · x · x,
zn = zn (2j–3) (2j–2) // chis и slag меняют знак!
ПОКА НЕ СТАНЕТ ИСТИНОЙ |slag| < E.
Схему можно усовершенствовать. Если предусмотреть переменную со значением x2, а в цикле вместо j изменять (на 2) переменную со значением 2j, исчезнут еще три умножения при вычислении очередного члена ряда.
В примере использовано разложение в ряд произведения x·cos x. Возможное несовпадение значений x·cos x, Sum — признак ошибки в подготовке и/или построении цикла. Программируя цикл, нужно тщательно выверять исходные значения и порядок записи действий.
Перечень бесконечных рядов
0. x – x3/2! + x5/4! – x7/6! + x9/8! – x11/10! ± …
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
27.
28.
29.
30.
Перечень контрольных формул
№ |
Формула |
№ |
Формула | ||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
|