Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
П о л и те хн и ч е с к и й и н с ти ту т
Г.П. Озерова
ОСНОВЫ ПРОГРАМ М И РОВАНИЯ
НА ЯЗЫ КЕ PYTHON
В П РИ М ЕРАХ И З А Д А Ч А Х
Учебное электронное издание
Учебное пособие для вузов
.objects.active
+ str(aodifierob))
o b .s e le c t - Ѳ
I ЯЛТОЙ CLASSES
Владивосток
d i f ie r jo b i se iec t^ l
*. context, scene.
Дальневосточный федеральный университет
Политехнический институт
Г.П. Озерова
Владивосток
Издательство Дальневосточного федерального университета
2022
УДК 004.42
ББК 32.973.26-018.1
О-46
Опубликовано: 14.04.2022
Объем 3,7 МБ [Усл. печ. л. 14,9]
Тираж 10 экз.
Защищено от копирования
ВВЕДЕНИЕ..................................................................................................................................................... 5
1. ОСНОВЫ ВЫЧИСЛЕНИЙ НА ЯЗЫКЕ PYTHON............................................................................. 6
1.1. Переменные и типы............................................................................................................................ 6
1.2. Основные конструкции языка........................................................................................................... 7
1.3. Решение простой вычислительной задачи..................................................................................... 12
1.4. Математические вычисления, модуль math................................................................................... 17
1.5. Обработка исключительных ситуаций........................................................................................... 20
1.6. Функции............................................................................................................................................ 22
1.7. Форматный вывод............................................................................................................................ 24
1.8. Задача, вычисления на плоскости................................................................................................... 25
1.9. Варианты заданий для самостоятельного решения....................................................................... 31
2. ОБРАБОТКА ТАБЛИЧНЫХ ДАННЫХ И ИХ ВИЗУАЛИЗАЦИЯ.................................................... 34
2.1. Списки............................................................................................................................................... 34
2.2. Задача, формирование таблицы значений функции...................................................................... 41
2.3. Построение графиков и диаграмм.................................................................................................. 45
2.4. Задача, построение графиков функций одной переменной.......................................................... 50
2.5. Задача: построение графиков функций одной переменной c точками разрыва......................... 52
2.6. Рисование плоских фигур................................................................................................................ 55
2.7. Задача, рисование фигуры из геометрических примитивов......................................................... 59
2.8. Варианты заданий для самостоятельного решения....................................................................... 62
3. МАТРИЦЫ И ВЕКТОРЫ........................................................................................................................ 72
3.1. Массивы............................................................................................................................................ 72
3.2. Задача о движении по различным участкам дороги...................................................................... 78
3.3. Многомерные массивы.................................................................................................................... 80
3.4. Задача, матричные вычисления....................................................................................................... 86
3.5. Задача: решение системы линейных уравнений............................................................................ 89
3.6. Тренды............................................................................................................................................... 90
3.7. Задача о выстреле из пушки............................................................................................................ 92
3.8. Варианты заданий для самостоятельного решения....................................................................... 95
4. СИМВОЛЬНЫЕ ВЫЧИСЛЕНИЯ......................................................................................................... 101
4.1. Символьные преобразования........................................................................................................ 102
4.2. Решение уравнений........................................................................................................................ 104
4.3. Дифференцирование и интегрирование....................................................................................... 109
4.4. Предел функции.............................................................................................................................. 115
4.5. Задача: исследование функции и построение ее графика.......................................................... 117
4.6. Варианты заданий для самостоятельного решения..................................................................... 122
ЗАКЛЮЧЕНИЕ.......................................................................................................................................... 125
СПИСОК ЛИТЕРАТУРЫ.......................................................................................................................... 126
Приложение А. Описание работы в среде IDLE(Python)....................................................................... 127
Приложение Б. Установка библиотек Python.......................................................................................... 128
Приложение В. Стили библиотеки matplotlib.pyplot............................................................................... 129
4
ВВЕДЕНИЕ
5
1. О С Н О В Ы В Ы Ч И С Л Е Н И Й НА Я ЗЫ К Е PY THO N
6
1.2. О сновны е конструкции я зы к а
7
В выражениях допустимо использовать арифметические операции:
• сложение «+»,
• вычитание «-»,
• умножение «*»,
• деление «/»,
• целочисленное деление «//»,
• остаток от деления «%», возведение в степень «**».
Python поддерживает привычный порядок выполнения операций: сначала возведение
в степень, затем умножение, деление, целочисленное деление и остаток (все они имеют
одинаковый приоритет, применяются последовательно слева направо), последним
выполняется сложение или вычитание. Для изменения приоритета используются круглые
скобки.
Примеры выражений:
3 + 2 * 5 ** 2 - 1 = 52
(3 + 2) * 5 ** 2 - 1 = 124
5 ** 2 / 2 = 12.5
63 % 10 = 3
63 % 10 + 4 = 7
63 % (10 + 4) = 7
63 / / 10 = 6
63 / / 10 + 4 = 10
63 / / (10 + 4) = 4
П ример. Спросить у пользователя его имя и его год рождения. Вычислить сколько
лет сейчас пользователю и вычислить результат (считаем, что текущим является 2022 год).
Код:
name = i n p u t ( "Ваше имя? " )
y ear b i r t h = i n t (i n p u t ( "B каком году Вы родились? " ))
age = 2022 - y ear b i r t h
p r i n t ( "Привет, " , name, "! Ваш возраст " , a g e , " . " )
Результат:
Ваше имя? Алина
В каком году Вы родились? 2002
Привет, Алина ! Ваш возраст 20 .
у = 4 •х 2 —5
(х — 2 )2 — 1
z = х + 4:
8
1.2.3. Условный оператор
Для реализации возможности выполнения различных действий в зависимости от
условия в Python используется условный оператор i f . . . e l i f . . . e l s e , синтаксис которого
следующий (разделы e l i f и e l s e могут отсутствовать):
i f условие 1 :
операторы 1
e l i f условие 2 :
операторы 2
e ls e :
операторы
В ы полняется этот оператор так:
• проверяется у с л о в и е _ 1 после i f , если условие истинно, то выполняются
операторы _1;
• в противном случае проверяется у с л о в и е _ 2 после первого e l i f , если оно
истинно, то выполняются о п е р а т о р ы _ 2 ;
• аналогично обрабатываются все e l i f ;
• в случае если все условия ложны, то выполняются о п е р а т о р ы после e l s e .
Особенности синтаксиса оператора if:
1. ключевые слова ( i f , e l i f , e l s e ) записываются строчными буквами;
2. после условия в операторах i f и e l i f , а также после e l s e обязательно ставится
знак двоеточия «:», который означает наличие вложенных конструкций;
3. все операторы после знака «:» считаются вложенными и записываются с отступом
(ставится два или четыре пробела перед каждым вложенным оператором).
Вложенные инструкции в Python записываются в соответствии с одним и тем же
шаблоном, когда основная инструкция завершается двоеточием, вслед за которым
располагается вложенный блок кода, с отступом под строкой основной конструкции.
Вложенные инструкции объединяются в блоки по величине отступов. Отступ может
быть любым, главное, чтобы в пределах одного вложенного блока отступ был одинаков
(обычно это 4 пробела).
В следующем примере оператор 1 и оператор 2 относятся к вложенному блоку
основной конструкции, а оператор 3 находится на уровне основной конструкции.
осн о в н ая к о н с т р у к ц и я :
о п ер а то р 1
о п ер а то р 2
о п ер а то р 3
Условия в операторе i f являются логическими выражениями и могут включать:
• знаки отношений (равно «==» (два подряд равенства), не равно «!=», больше «>»,
меньше «<», больше или равно«>=», меньше или равно «<=»),
• логические операции (И «an d » , ИЛИ « o r» , НЕ « n o t» );
Результатом вычисления логических выражений является либо Истина (T ru e ),
другими словами, в этом случае выражение «верно», либо Ложь ( F a l s e ) - выражение
«неверно».
При использовании логической операции И (a n d ) выражение верно, если все его
элементы верны. При использовании логической операции ИЛИ ( o r ) выражение верно, если
хотя бы один его элемент верен.
Примеры:
3 > 5 результат F a lse
3 == (1 + 2) результат True
3 >= (1 + 2) результат True
3 != (1 + 2) результат F a lse
9
3 < 5 and 3 >= 4 результат F a lse
3 < 5 o r 3 >= 4 результат True
3 < 5 and n o t (3 >= 4) результат True
П ример. Дана сторона квадрата a (вещественное число). Если введено
положительное значение a, то посчитать площадь и периметр квадрата. В противном случае
вывести сообщение об ошибке.
Код:
a = f l o a t (i n p u t ( "a = " ))
i f a <= 0 :
p r i n t ( "Длина должна быть положительной")
e ls e :
p = 4 * a
s = a * a
p r i n t ( "p = " , p , "s = " , s )
Результат:
Тест 1
a = 4
p = 16.0 s = 16.0
Тест 2
a = -2
Длина должна быть положительной
10
округляется в большую по модулю сторону, при банковском - к ближайшему чётному.
Например:
ro u n d (2 .6 5 , 1) = 2.6
ro u n d (2 .7 5 , 1) = 2.8
П ример. Всего в группе учится n студентов, из них проживает в общежитии k
человек. Проверить входные данные и вывести процент студентов, проживающих в
общежитии. При выводе результат округлить до двух знаков после запятой.
Код:
n = i n t (i n p u t ( "n = " ))
k = i n t (i n p u t ( "k = " ))
# количества студентов - положительное число, также количество
# проживающих в общежитии не может быть больше общего количества
i f n <= 0 o r k <= 0 o r k > n :
p r i n t ( "Ошибочные входные данные")
e ls e :
p e rc e n t = k / n * 100
p r i n t ( "проживает в общежитии:", ro u n d (p e r c e n t, 2) , "%")
Результат:
тест 1
n = 23
k = 17
проживает в общежитии: 7 3.91 %
тест 2
n = 20
k = 21
Ошибочные входные данные
11
станет спутником Солнца (вывести 2), если v > 16.4, то ракета покинет Солнечную
Систему (вывести 3).
Если будет введено значение, меньшее или равное 0, то вывести "error".
12
Следующим шагом неформальной постановки задачи является описание результата
выполнения программы или вы ходны х данных. В нашем случае мы должны посчитать
индекс массы тела, а также разъяснить пользователю, что этот индекс означает. В таблице 3
приведено описание выходных данных программы.
Таблица 3 - В ы ходны е данны е
Описание Пример
Индекс массы тела 18.45, 24.12, 27.1
Заключение недостаточная масса тела
нормальная масса тела
избыточная масса тела
ожирение
13
На этапе проектирования и реализации разрабатывается проект програм м ы . Для
этого используются различные средства, в том числе для простых программ можно
использовать естественный язык. Для нашей задачи проект будет выглядеть так:
в в е с т и входные данные
е с л и входные данные неверны е
то
вы вести сообщение об ошибке
и н ач е
вы числить и н декс массы т е л а
выполнить интерпретацию и н д ек са массы т е л а
вы вести р е з у л ь т а т ы
Дальше можно переходить к реализации (кодированию) программы, то есть к записи
ее на выбранном языке программирования. При этом рекомендуется писать программу по
частям, постоянно проверяя ее работоспособность. Последовательно рассмотрим шаги
реализации программы для вычисления индекса массы тела в соответствии с ее проектом.
14
Код:
age = i n t (i n p u t ( "Ваш возраст? " ))
h e ig h t = f l o a t (i n p u t ( "Ваш рост? " ))
w eight = f l o a t (i n p u t ( "Ваш вес? " ))
i f age < 10 o r h e ig h t <= 0 o r h e ig h t > 2 .5 o r w eight <= 0 o r w eight > 300:
p r i n t ( "Ошибочные входные данные")
e ls e :
bmi = w eight / h e ig h t ** 2
bmi = ro u n d (bm i, 2)
p r i n t ( "Ваш индекс массы т е л а :" , bmi)
Результат:
Тест 1
Ваш возраст? 20
Ваш рост? 1.72
Ваш вес? 65
Ваш индекс массы тела: 21.97
Тест 2
Ваш возраст? 25
Ваш рост? 1.65
Ваш вес? 70
Ваш индекс массы тела: 25.71
15
1.3.3. Отладка и тестирование
На этом этапе после того, как найдены и исправлены все ошибки (то есть программа
запускается и выдает результат), необходимо проверить работоспособность программы для
различных входных данных. Естественно, невозможно перебрать все возможные варианты
ввода пользователя, но необходимо их систематизировать и выделить те, которые позволяют
проверить все вычисления и условные переходы.
Описание процесса тестирования можно оформить в виде таблицы (таблица 5). В ней
привести вариант входных данных, правильный результат, который должна выдать
программа, а также предусмотреть поле, в котором отметить совпадает ли реальный
результат с верным.
Набор входных
Правильный результат Верно?
данных
age : -4
h e ig h t :1 .5 Ошибочные входные данные ✓
w eight : 6
age : 9
h e ig h t :- 1 .5 Ошибочные входные данные ✓
w eight : 65
age : 25
h e ig h t :3 .8 Ошибочные входные данные ✓
w eight : 60
age : 40
h e ig h t :1 .8 Ошибочные входные данные ✓
w eight : -5
age : 30
h e ig h t :1 .8 Ваш индекс массы тела: 27.78
✓
w eight : 90 Вы относитесь к группе людей с избыточной массой тела.
age : 25
Ваш индекс массы тела: 17.58
h e ig h t :1 .6 ✓
w eight : 45 Вы относитесь к группе людей с недостаточной массой тела.
age : 30
h e ig h t :1 .7 Ваш индекс массы тела: 21.8
✓
w eight : 63 Вы относитесь к группе людей с нормальной массой тела.
age : 16;
h e ig h t :1 .7 Ваш индекс массы тела: 56.06
✓
w eight : 162 Вы относитесь к группе людей с ожирением.
Возраст: 35
Рост: 1.8
16
Вес: 12 0.71
bmi = 37.26 Вы относитесь к группе людей с ожирением.
Тест 2
Возраст: 18
Рост: 1.68
Вес: 82.79
bmi = 2 9.33 Вы относитесь к группе людей с избыточной массой тела.
Тест 3
Возраст: 50
Рост: 1.97
Вес: 98.67
bmi = 25.42 Вы относитесь к группе людей с нормальной массой тела.
17
Практически все функции модуля m ath возвращают значения в вещественном
формате. В некоторых случаях может получиться такой результат:
c o s ( 1 .5 7 0 7 9 6 3 ) = 2 .6 7 9 4 8 9 6 5 8 5 e -0 8
Число вида 2 .6 7 9 4 8 9 6 5 8 5 e - 0 8 является записью вещественного числа в
экспоненциальной форме, переписать его можно так:
2.6794896585е —08 = 2.6794896585 • 10-8 = 0.000000026794896585,
то есть это практически ноль или, точнее, число равно нулю с точностью 7 знаков после
запятой.
В программе, где предполагается использование модуля, применяется оператор:
im p o r t m ath
Этот оператор должен располагаться до первого обращения к функциям модуля. Как
правило, все импортируемые модули перечисляются в начале программы.
В выражениях при использовании функций из этого модуля перед именем функции
вставляется префикс m ath и точка. В таблице 8 приведены примеры выражений, для
вычисления которых необходимы функции из модуля m a th .
m ath. l o g (x * m ath. e x p (2 * x ) , 5)
*)
w
LO
(
m ath. s q r t (b ** 2 - 4 * a ** 2)
Vb2 —4 • a 2
m ath. s q r t (m ath. pow(b , 2) - 4 * m ath. pow(a , 2))
sin(40o) m ath. s i n (m ath. r a d i a n s (40))
n m ath. p i
Т аблица 9 - П рим еры описания вы раж ений без явного у казан и я имени модуля
18
2. Используя функции модуля m a th , запишите следующие выражения:
—Ь ± ѴЬ2 —4ас
-----------------------, п г 2.
2а
3. Написать программу, которая вычисляет расстояние между двумя точками на
плоскости А (х 0, у 0) и В (х 1, у 1). Координаты точек ввести с клавиатуры, результат округлить
до 4 знаков после запятой. Формула для вычисления расстояния:
Код:
Вариант 1
im p o rt math
x = 4.5
y = m ath. s q r t (m ath. e x p (m ath. s i n (x )) + m ath. l o g (2 + m ath. c o s (x )))
p r i n t (y)
Вариант 2
from math im p o rt s q r t , e x p , s i n , l o g , cos
x = 4.5
y = s q r t (e x p (s i n (x )) + l o g (2 + cos (x)) )
p r i n t (y)
Результат:
0.9787799339565816
Сравните два варианта программы, обе программы выдают одинаковый результат, но
способ с перечислением функций выглядит более удобочитаемым читабельным.
При записи сложных математических выражений можно допустить ошибки,
например, забыть поставить скобку или пропустить операцию. Поэтому рекомендуется
разбить вы раж ение на части, занести их в отдельные переменные, а затем вычислить
полное выражение.
П ример. Вычислить значение выражения:
19
при x = 3.6 , y = -4.1 , z =5.
Решение
Из данного выражения целесообразно выделить две части и вычислить их отдельно
(рисунок 1), сохранив результаты в переменные eq_1 и eq_2, а затем получить результат,
используя эти переменные.
eq_2
x = 3.6
y = - 4.1
z = 5
eq 1 = s q r t (s i n (x + p i / 3) ** 2)
eq~2 = c o s (t a n (1/ ( ( z+1) ** (1/ 3)) ) ** 2)
eq = l o g (a b s (y - eq 1) + eq 2)
p r i n t ( "eq = " , eq)
Результат:
eq = 1.796391214837781
Задание для сам опроверки
Написать программу для вычисления следующего выражения, значения x и y ввести с
клавиатуры, результат округлить до 5 знаков после запятой:
Тест 2
x = -7 .1
y = 12.8
Р езу л ьтат: 0.00417
20
i f x == 0 :
p r i n t ( "Деление на ноль")
e ls e :
y = 1 / x
Однако, если выражение сложное, описать область ее определения часто не
представляется возможным. Тогда можно использовать блок обработки исключений t r y ...
e x c e p t . С его помощью осуществляется отслеживание и обработка ошибок, возникающих в
процессе вычисления выражений. Блок обработки исключений состоит из двух частей:
• раздел t r y , где размещаются операторы, в которых может возникнуть ошибка;
• раздел e x c e p t , в нем размещаются операторы, выполняемые при возникновении
ошибок в разделе t r y , также в нем можно реализовать различные действия для различных
типов ошибок.
Выполняется блок обработки исключений следующим образом:
• вычисляются операторы, размещенные в разделе t r y , если в каком-то из них
возникает ошибка, управление передается блоку e x c e p t , в противном случае выполняется
первый оператор после блока обработки исключений;
• если управление передается в раздел e x c e p t , то выполняются операторы в этом
блоке, затем управление передается первому оператору после блока обработки исключений.
С использованием блока обработки исключений наш пример будет выглядеть
следующим образом:
x = i n t (i n p u t ( ”x = ”))
try :
y = 1 / x
e x c e p t:
p r i n t ( "Деление на ноль")
p r i n t ( "y = " , y)
Протестируем нашу программу на различных входных данных:
Тест 1
x = 6
y = 0.16666666666666666
Тест 2
x = 0
Деление на ноль
Traceback (most re c e n t c a l l l a s t ) :
F ile " t e s t .p y " , l i n e 6, in <module>
p r i n t ( " y = ", y)
NameError: name 'y ' i s n o t d e fin e d
Программа выдает ошибку при вводе значения 0, так как при таком использовании
блока обработки исключений после него осуществляется вывод вычисленного значения y,
которое не определено.
Исправить ошибку можно, поместив вывод в разделе t r y :
x = i n t (i n p u t ( "x = " ))
try :
y = 1 / x
p r i n t ( "y = " , y)
e x c e p t:
p r i n t ( "Деление на ноль")
Тогда оба теста проходят.
Тест 1
x = 6
y = 0.16666666666666666
Тест 2
x = 0
Деление на ноль
21
Такой вариант подходит, если в дальнейшем переменную y нигде не нужно
использовать. Если же результат (бесконечность), который получается при делении на ноль,
важен для вычислений, можно занести в переменную константу i n f , которая определена в
модуле m ath. Наша программа в этом случае будет выглядеть следующим образом:
im p o rt math
x = i n t (i n p u t ( "x = " ))
try :
y = 1 / x
e x c e p t:
y = m ath. i n f
p r i n t ( "y = " , y)
Протестируем программу на различных входных данных:
Тест 1
x = 6
y = 0.16666666666666666
Тест 2
x = 0
y = in f
Задание для сам опроверки
Написать программу для вычисления следующего выражения, значения x и y ввести с
клавиатуры. В случае возникновения ошибок вычисления вывести i n f .
arccos(x) + 1.2 J y
z = ---------------------- -—
x 2 — (y + 1 )2
Проверить программу для следующих входных данных:
Тест 1
x = 0.5
y =6
z = -0.08177610753920843
Тест 2
x = 0.5
y =-5
z = in f
Тест 3
x = 1
y =0
z = in f
Тест 4
x = 2
y = 1
z = in f
1.6. Ф ункции
Программа - это последовательность операторов. Часто случается, что какая-то часть
программы неоднократно повторяется. Например, если в задаче требуется вычислить
попарное расстояние между тремя точками на плоскости А (хА,у А), В (хв ,у в ) и С(хс,у с) , то
одна и та же формула применяется для вычисления трех расстояний.
Код:
from math im p o rt s q r t
r a b = s q r t ( ( x a - x b ) ** 2 + (y a - y b ) ** 2)
r_bc = s q r t ( ( x_b - x_ c ) ** 2 + (y_b - y_ c ) ** 2)
r_ ac = s q r t ( ( x_ c - x_ a ) ** 2 + (y_ c - y_ a ) ** 2)
22
Чтобы устранить подобного рода избыточность программного кода, используют
понятие функции. Повторяющийся (да и не только) блок программного кода обозначают
некоторым уникальным именем, чтобы потом при необходимости обратиться к нему по
этому имени.
Для определения функции используется ключевое слово d e f , после которого
указывается ее имя, круглые скобки и двоеточие.
Функции, вычисляющей расстояние между двумя точками, дадим имя
c o m p u te _ le n , ее объявление имеет вид:
d e f compute l e n ():
Внутри функции можно использовать любые операторы языка, в нашем случае
должна вычисляться длина стороны:
d e f compute l e n ():
le n l i n e = s q r t ( ( x b - x a ) ** 2 + (y b - y a ) ** 2)
Но реализованная таким образом функция вычисляет только расстояние между
точками A и B. Для того чтобы вычислить расстояние между двумя произвольными точками
с координатами (x0, y0) и (xb yj), необходимо в заголовке функции указать параметры
(аргументы), с которыми она будет работать, а внутри функции использовать эти параметры
как обычные переменные:
d e f compute l e n (x 0 , y 0 , x 1 , y 1):
le n l i n e = s q r t ( ( x 1 - x 0 ) ** 2 + (y 1 - y 0 ) ** 2)
Расстояние между точками вычислено. Для того чтобы результат стал известен вне
функции, используется оператор r e t u r n , после которого указывается переменная (или
выражение), значение которой является результатом выполнения функции (говорят, что это
значение «возвращается» из функции):
d e f compute l e n (x 0 , y 0 , x 1 , y 1):
le n l i n e = s q r t ( ( x 1 - x 0 ) ** 2 + (y 1 - y 0 ) ** 2)
r e tu r n le n l in e
Данная функция реализована и может быть использована для вычисления расстояния
между двумя точками на плоскости, заданными своими координатами. Для этого к ней
обращаются (вызывают ее) с конкретными значениями координат, а результат заносят в
некоторую переменную. Например, чтобы вычислить расстояние между точками А(хА,у А) и
В (хв , у в у.
С помощью функции c o m p u t e _ l e n можно вычислить расстояние между тремя
точками на плоскости А(хА,у А), В( х в , у в ) и С(хС, у С).
Код:
from math im p o rt s q r t
d e f compute l e n (x 0 , y 0 , x 1 , y 1):
le n l i n e = s q r t ( ( x 1 - x 0 ) ** 2 + (y 1 - y 0 ) ** 2)
r e tu r n le n l in e
xa = f l o a t (i n p u t ( "x a = " ))
ya = f l o a t (i n p u t ( "y a = " ))
x~b = f l o a t (i n p u t ( "x~b = " ))
y_b = f l o a t (i n p u t ( "y_b = " ))
x_c = f l o a t (i n p u t ( "x_c = " ))
y_c = f l o a t (i n p u t ( "y_c = " ))
r a b = compute l e n (x a , y a , x b , y b )
r bc = compute l e n (x b , y b , x c , y c )
r a c = compute l e n (x a , y a , x c , y c )
23
Результат:
x_a = 4
y_a = 1
x_b = 8 .2
y b = -3
x_c = 4.5
y_c = -1
r_ab = 5 .8
r_bc = 4.2059
r_ac = 2.0616
Задания для сам опроверки
1. Какое значение получит переменная re s после выполнения следующего
фрагмента программы:
d e f compute r e s i s t (r 1 , r 2 ):
r = r _1_ * r_2 / ( r _ 1 + r_ 2 )
r e tu r n r
re s = compute r e s i s t (1 5 .0 , 1 1 .0 )
2. Описать функцию, которая вычисляет прибыль от вложения суммы x руб на n
месяцев под k процентов годовых с капитализацией процентов. Формула для вычисления
прибыли:
24
вывод как числовых значений, так и строк. В таблице 10 приведены форматы для вывода
наиболее распространённых типов данных.
число
запятой заполняются 0
Если длина строки меньше 8 символов, то она размещается в 8
Строка текста %8s позициях, прижата к правому краю, в противном случае формат не
учитывается
Если длина строки меньше 8 символов, то она размещается в 8
Строка текста %-8s позициях, прижата к левому краю, в противном случае формат не
учитывается
вывод значения у
Рисунок 2. Форматный вывод
25
• площадь;
• величины углов в градусах.
Условие существования треугольника: сумма двух любых его сторон больше третьей
26
и периметр назовем s и p. Величины узлов обозначаются специальным знаком угла «Z»,
после которого пишется имя вершины. Использовать символ угла в имени мы не можем,
поэтому вместо него напишем a n g l e , для соединения с именем вершины воспользуемся
подчеркиванием. Типы результатов - вещественные числа. В таблице 12 приведены
выходные данные задачи.
Таблица 12 - В ыходные данны е
‘ = Л - ( Н - ( И - ( И -
4. Для вычисления углов используется теорема косинусов:
с2 = а2 + Ь2 — 2 • а • b • cos(AC).
Выразим величины углы (значения будут получены в радианах):
' с2 + Ь2
а А = arccos
2^ с • b )
\ 2 + а2 — Ь2\
аВ = arccos
к 2 •с •а )
U 2 + Ъ2 - с2\
аС = arccos
У 2^ а^ b J
Последним шагом неформальной постановки задачи является описание
ф ункциональны х возможностей программы. Наша программа должна:
• ввести координаты точки A;
• ввести координаты точки B;
• ввести координаты точки C;
• вычислить длины сторон треугольника;
• проверить условие существования треугольника; если треугольник не существует,
вывести сообщение;
27
• вычислить периметр треугольника;
• вычислить площадь треугольника;
• вычислить величины углов треугольника в радианах;
• перевести значения величин углов в градусы;
• вывести длины сторон, периметр, площадь и углы.
28
# Вычислить длины сторон треугольника.
c = compute l e n (x a , y a , x b , y b)
a = compute l e n (x b, y b , x c , y c )
b = compute l e n (x a, y a , x c , y c )
29
Таблица 13 - Тестирование п рограм м ы для разли чны х входных данны х
Набор входных
Правильный результат Верно?
данных
xa = 0
y_a = 0
x_b = 9
yb = 1 Т реуго л ьн и к не сущ ествует ✓
x_c = 9
yc = 1
xa = 0
y_a = 1
x_b = 0
yb = 2 Т реуго л ьн и к не сущ ествует ✓
x_c = 0
yc = 5
= = = = = =
c c b b a a
y x y x y x
0 5 0 - 1 0
Площадь: 50.0
✓
______
Периметр: 32.361
Углы: 53.13 63.435 63.435
xa = 0
y_a = 1 Стороны: 1 .0 1 .4 1 4 1 .0
x_b = 0 Площадь: 0 .5
yb = 0 П ериметр: 3 .4 1 4 ✓
x_c = 1 Углы: 4 5 .0 9 0 .0 4 5 .0
yc = 0
xa = 1
y_a = -5 Стороны: 9 .0 5 5 1 4 .3 1 8 8 .0 6 2
xb = 5 Площадь: 3 .5
y_b = -1 П ериметр: 3 1 .4 3 5 ✓
x_c = 6 Углы: 3 5 .4 8 1 1 3 .4 0 5 3 1 .1 1 5
yc = 8
Тест 1
x_a = 1
y_a = 1
x_b = 0
y_b = 0
x_c = 1
y_c = 1
Результат: Треугольник не существует
Тест 2
x a = -1 2 .8
y_a = 3.4
x~b = -7 .7
y_b = 8.6
x_c = -1 4 .6
y c = -3 .5
Результат: 0.9113 14.0042 22.8319
30
Ф орм улы для вы числений
1. Радиус вписанной окружности вычисляется:
( 2 - a ) ^( 2 - b ) ^( 2 - c )
р .
2
2. Радиус описанной вокруг треугольника окружности:
а •b •с
й = ^ 4------
•s ■
3. Длины медиан вычисляются по формулам:
1 ________________
Ма = —• ^ 2 • (с 2 + Ь2) —а 2,
1 __________________
Мь = —• ^ 2 • (с 2 + а 2) —Ь2,
1
Мс = —• ^ 2 • ( а 2 + Ь2) — с2.
Вариант 2
1. Дан катет и гипотенуза прямоугольного треугольника. Найти величины острых углов
треугольника (в градусах).
2. Даны два вещественных числа. Вычислить коэффициенты приведенного квадратного
уравнения, корнями которого являются эти числа.
Вариант 3
1. Вычислить длину окружности, площадь круга и объем шара одного и того же заданного
радиуса.
2. Идет k-ая секунда суток. Определить сколько полных часов и полных минут прошло к
этому моменту суток.
Вариант 4
1. Дана окружность радиуса r и величина центрального угла (в градусах). Найти длину дуги
и площадь сектора, ограниченных этим углом.
2. Составить программу для решения уравнения a-x = b, где a и b - заданные
действительные числа.
Вариант 5
1. Дан цилиндр, заданный радиусом основания и высотой. Найти объем, площадь боковой и
полной поверхностей цилиндра.
2. Даны три действительных числа a, b, c. Определить, являются ли они последовательными
членами арифметической прогрессии.
Вариант 6
1. Дана равнобедренная трапеция, заданная длинами оснований и высотой. Найти площадь
и периметр этой трапеции.
2. Составьте программу, которая для целого числа k (от 1 до 99), введенного вами,
напечатает фразу «Мне k лет», при этом в нужных случаях слово «лет» заменяя на «год» или «года».
31
Вариант 7
1. Дан ромб со стороной a и острым углом а. Найти площадь ромба и длины его
диагоналей.
2. Составить программу для решения уравнения x2+b^x+c= 0, где c и b - заданные
действительные числа. Определить сколько корней имеет уравнение.
Вариант 8
1. Даны координаты центров двух окружностей (x1,y1) и (x2,y2), а также их радиусы r 1 и r2
(r 1>r 2). Определить взаимное расположение окружностей.
2. На поле (k, p) шахматной доски расположен слон. Угрожает ли он полю (m, n)?
Вариант 9
1. Даны координаты двух точек A(x1,y1) и B(x2,y2). Какая из этих точек находится дальше от
начала координат?
2. На поле (k, p) шахматной доски расположена ладья. Угрожает ли она полю (m, n)?
Вариант 10
1. Даны координаты трех вершин треугольника. Определить тип этого треугольника
(прямоугольный, остроугольный или тупоугольный).
2. Составить программу для решения неравенства a • x < b, где a и b - любые
действительные числа.
Вариант 11
1. Найти координаты точек пересечения прямой y=kx+b и окружности радиуса R с центром
в начале координат.
2. Составьте программу, которая по введенному вами k - числу грибов печатает фразу «Мы
нашли в лесу k грибов», причем согласовывает окончание слова «гриб» с числом k.
Вариант 12
1. Даны координаты двух точек A(x1,y1) и B(x2,y2). Пересекает ли отрезок AB оси
координат?
2. На поле (k, p) шахматной доски расположен ферзь. Угрожает ли он полю (m, n)?
Вариант 13
1. Выяснить, принадлежит ли точка с координатами (x,y) кольцу с центром в начале
координат с внешним радиусом a и с внутренним радиусом b.
2. Вычислить значение выражения (x, y, z - вводятся с клавиатуры):
max(х,y, z)2 - 2min(x,y, z)
y =■ max( x , y , z )
sin(2) + ----- v J
min( x , y , z )
Вариант 14
1. Даны координаты центров двух окружностей (0, 0) и (x2,y2), а также их радиусы r 1 и r2.
Найти точки пересечения этих окружностей.
2. Составить программу для решения уравнения a • |x| = b, где a и b - заданные
действительные числа.
Вариант 15
1. Даны координаты двух точек A(x1,y1) и B(x2,y2). Определить, параллелен ли этот отрезок
AB одной из осей координат, если параллелен - вывести какой именно.
2. Составить программу для решения неравенства a • |x| < b, где a и b - заданные
действительные числа.
32
Вариант 16
1. Дана точка O(x,y) на плоскости и длина диагонали квадрата a. Считая, что точка O является
точкой пересечения диагоналей, отрезок a параллелен оси ОХ, найти координаты вершин квадрата,
площадь и периметр квадрата.
2. Даны координаты двух точек A(x1,y1) и B(x2,y2). Найти уравнение прямой, являющейся
серединным перпендикуляром к этому отрезку.
Вариант 17
1. Даны координаты двух точек A(x1,y1) и B(x2,y2). Определить, проходит ли отрезок AB
через начало координат.
2. Даны три действительных числа a, b, c. Определить, являются ли они последовательными
членами геометрической прогрессии.
Вариант 18
1. Дана точка O(x,y) на плоскости и длины двух диагоналей ромба a и b. Считая, что точка
O является точкой пересечения диагоналей, отрезок a параллелен оси ОХ, отрезок b параллелен оси
OY, найти координаты вершин ромба, длину стороны ромба и величины углов ромба.
2. Даны координаты точки A(x, y). Определить, в какой координатной плоскости она
расположена. Если точка лежит на осях координат - вывести, какой именно оси она принадлежит.
33
2. О БРА БО ТК А Т А Б Л И Ч Н Ы Х ДА Н Н Ы Х И ИХ ВИ ЗУ А ЛИ ЗА Ц И Я
2.1. С писки
Списки в Python - упорядоченные изменяемые коллекции объектов произвольных
типов (рисунок 4).
индексы
Рисунок 4. Список
34
• второе число вычисляется как предыдущее плюс шаг 3 + 2 = 5: 3 5
• третье число вычисляется как предыдущее плюс шаг 5+2 = 7: 3 5 7
• четвертое число вычисляется как предыдущее плюс шаг 7 + 2 = 9: 3 5 7 9
• пятое число вычисляется как предыдущее плюс шаг 9+2 = 11, получили число
большее или равное границе, поэтому оно в диапазон не включается, заполнение диапазона
заканчивается: 3 5 7 9
Таким образом, получили диапазон, состоящий из четырех чисел.
Описание диапазона может включать 3, 2 и одно значение в качестве параметров.
Принято считать:
• если r a n g e () содержит 2 значения - пропущен шаг, который по умолчанию
равен 1;
• если r a n g e () содержит 1 значение - пропущен шаг, который по умолчанию
равен 1, и начальное значение, которое по умолчанию равно 0.
Например:
r a n g e (0 , 5 , 2 ) р е з у л ь т а т : 0 , 2 , 4
r a n g e ( 1 , 4) р е з у л ь т а т : 1 , 2 , 3
r a n g e (5 ) р е з у л ь т а т : 0 , 1 , 2 , 3 , 4
Диапазоны используются в цикле for, в котором на каждом шаге управляющей
переменной цикла присваивается очередное значение диапазона.
Рассмотрим, как работает цикл на следующем примере:
f o r i in ra n g e (0 , 4):
p r i n t (i )
Диапазон генерирует следующую последовательность чисел:
r a n g e ( 0 , 4) ^ 0 , 1 , 2 , 3
Выполняется цикл следующим образом:
35
П ример. Арифметическая прогрессия - это последовательность, в которой каждый
следующий член можно найти, прибавив к предыдущему одно и то же число h. Вывести
члены арифметической прогрессии, первый элемент которой равен целому числу а,
последний не превышает целого числа b, шаг - целое число h.
Код:
• вводим параметры арифметической прогрессии
a = i n t (i n p u t ( "a = " ))
b = i n t (i n p u t ( "b = " ))
h = i n t (i n p u t ( "h = " ))
37
# элементы списка x _ l i s t исчерпаны, значит генерация списка y _ l i s t
заканчивается:
y_l i s t = [2 5 , 64, 25]
Таким образом, получили список, состоящий из трех чисел.
# выводим результаты
p r i n t (y ear l i s t )
p r i n t (le a p y e a r)
Результат:
[1900, 1945, 1980, 2000, 2019, 2020, 2300]
[F a ls e , F a ls e , True, True, F a ls e , True, F alse]
38
Т аблица 14 - Ф ункции работы со списком
П ример. В список занесен рост студентов группы. Найти самый маленький и самый
большой рост в группе. Посчитать, сколько студентов имеют самый маленький и самый
большой рост.
Код:
# создадим список с ростом студентов
h e i g h t _ l i s t = [ 1 .6 7 , 1 .8 5 , 1 .5 8 , 1 .8 9 , 1 .7 6 , 1 .8 9 , 1 .7 , 1 .8 9 ]
# отсортируем список по возрастанию
h e ig h t l i s t . s o r t ()
# первый элемент этого списка - самый маленький рост
h e ig h t min = h e ig h t l i s t [0]
# последний элемент отсортированного списка - самый большой рост
h e ig h t max = h e ig h t l i s t [l e n (h e ig h t l i s t ) - 1]
#посчитаем количество студентов с самым маленьким ростом
min count = h e ig h t l i s t . c o u n t(h e ig h t min)
#посчитаем количество студентов с самым большим ростом
max count = h e ig h t l i s t . c o u n t(h e ig h t max)
# выведем результат:
p r i n t ( "минимальный р о с т :" , h e ig h t m in, "к о л и ч еств о :", min c o u n t)
p r i n t ("максимальный р о с т :" , h e ig h t max, "к о л и ч еств о :", max c o u n t)
Результат:
минимальный рост: 1.5 8 количество: 1
максимальный рост: 1.8 9 количество: 3
Задание для сам опроверки
Решить следующую задачу:
В список занесены численности городов некоторого региона:
p o p u la tio n = [300125, 50000, 600050, 212000, 120000, 50000, 17000]
39
Из этого списка удалить одно максимальное и одно минимальное значения.
40
# цикл перебора индексов списка от 0 до 4
f o r i in ra n g e (n ):
# вводим очередной элемент списка
x = f l o a t (i n p u t ( "Введите элемент списка: " ))
# добавляем введенный элемент в конец списка
x l i s t . append(x )
Вторым способом является ввод элементов списка в одну строку через пробел, а
затем формирование списка на основе введенной строки. Алгоритм формирования списка:
# попросить пользователя ввести элементы списка в одну строку через пробел;
# полученную строку преобразовать в список с помощью метода s p l i t ( ) , при этом
в список будет занесены введенные числа в виде строк;
# преобразовать элементы списка из строковых переменных в вещественные (или
целые).
П ример. Введем с клавиатуры вещественные числа и занесем их в список.
# вводим строку с числами
l i n e = i n p u t ( "Введите элементы списка через пробел: " )
41
1 X
/( х ) =
х+1 х —3
2.2.2. Реализация
Для построения таблицы значений функции используется следующая программа,
пояснения к операторам даны в комментариях:
im p o rt math
# Опишем функцию f ( x ) :
d e f f x (x ):
try :
y = 1 / (x+1) + x / (x- 3)
e x c e p t:
y = m ath. i n f
r e tu r n y
42
Результат:
a = -5
b = 5
n = 21
-5 .0 : 0 375
-4 .5 : 0 314
-4.0 : 0 238
-3 .5 : 0 138
-3 .0 : 0 000
-2 .5 : -0 212
-2 .0 : -0 600
-1 .5 : -1 667
-1 .0 : in f
-0 .5 : 2 143
0.0 1 000
0.5 0 467
1.0 0 000
1.5 -0 600
2 .0 : -1 667
2 .5 : -4 714
3.0 : in f
3.5 : 7 222
4.0 4 200
4.5 3 182
5.0 2 667
Оформим вывод в виде привычной таблицы (знак * при форматном выводе означает,
что строку нужно повторить указанное количество раз). Для этого заменим вывод
таблицы в программе на следующий код:
# вывод шапки таблицы
p r i n t ( "-" * 17)
p r i n t ( "| %4s | %6s |" % ( " x " , " f ( x ) " ))
p r i n t ( "-" * 17)
# вывод содержимого таблицы
f o r i in ra n g e (n ):
p r i n t ( "| %4.1f | %6.3f |" % (x_l i s t [i ] , f _l i s t [i ]))
# вывод подчеркивания
p r i n t ( "-" * 17)
Результат:
a = -5
b = 5
n = 21
x | f(x)
-5 0 0 .375
-4 5 0 .314
-4 0 0 .238
-3 5 0 .138
-3 0 0 .000
-2 5 -0 .212
-2 0 -0 .600
-1 5 -1 .667
-1 0 in f |
-0 5 2 .143
0 0 1 .000
0 5 0 .467
1 0 0 .000
1 5 -0 .600
2 0 -1 .667
2 5 -4 .714
3 0 in f |
3 5 7 .222
43
| 4 .0 | 4.2 0 0 |
| 4 .5 | 3.182 |
| 5 .0 | 2.6 6 7 |
З ад ан и е д л я сам о п р о в ер к и
Написать программу для решения следующей задачи:
Для вычисления и прогноза численности населения Земли С.П. Капица предложил
следующую формулу:
С /71 — t \
N( t ) = —• a rcc tg ( -------- ),
где t - год, для которого вычисляется численность населения;
С - 172 миллиарда человек/лет;
Ti - 2000 год;
т - 45 лет.
Вычислить численность населения в заданные годы.
Реализовать задачу на основе шаблона.
im p o rt math
d e f compute p o p u l a t i o n (t ) :
^вычислить численность населения для года t по формуле
Результат
Введите список лет ч ер ез пробел: 1220 2369 2636 1032 2657 198 1118
122 0 - 0.22 0 миллиард(ов)
2369 - 11.544 миллиард(ов)
2 63 6 - 11.738 миллиард(ов)
1032 - 0.178 миллиард(ов)
2657 - 11.746 миллиард(ов)
198 - 0.095 миллиард(ов)
1118 - 0.195 миллиард(ов)
П о ясн ен и е
1. В модуле m a t h функции a r c c t g ( ) нет, но ее можно выразить через a r c t g ( )
следую щ им образом:
п
ar cc t g( x) = ——a c t g ( x ).
2. Для вычисления a r c t g () в модуле m a t h используется a t a n ( ) .
44
2.3. П остроен и е гр а ф и к о в и д и агр ам м
Для построения графиков и диаграмм используется библиотека m atplotlib.pyplot. Эта
библиотека не является стандартной, в больш инстве сред разработки (в том числе и
ID LE(Python)) ее необходимо установить. В П риложении Б приведена инструкция по
установке дополнительных модулей.
П еред первым применением библиотеки ее необходимо подключить. Чтобы
упростить обращ ение к функциям библиотеки, можно присвоить ей имя, например, p l t :
im p o rt m a t p l o t l i b . p y p lo t a s p l t
С помощью этой библиотеки создается графическая область, на которой
отображаю тся следую щ ие элементы:
• линии;
• оси координат;
• заголовок;
• легенды линий;
• многое другое.
Графическая область представляет собой прямоугольную сетку, координаты узлов
которой определяю тся либо автоматически, либо могут быть установлены пользователем.
В графическую область можно вывести точку с координатами ( x , у ) (рисунок 5). Значение
x увеличивается по горизонтали слева направо, значение у увеличивается по вертикали
снизу вверх, как это принято в декартовой системе координат.
А(-1 0, 5)
45
3 -2 -1 0 1 2 3 4 5
Т аб л и ц а 15 - У с т а н о в к а х а р а к т е р и с т и к л и н и и в plot()
46
Результат построения показан на рисунке 7.
2
о-
-3 -2 -1 0 1 2 3 4 5
47
2.3.3. Заголовок
В область построения можно вывести заголовок с помощью метода:
t i t l e ("текст").
Если в нашу программу добавить оператор:
p l t . t i t l e ( "Пример рисования линий")
то в области построения появится новый элем ент - заголовок (рисунок 9)
2.3.4. Легенда
Л еген д а - это условное обозначение графиков. Легенда показывает названия и
маркеры линий, используемых при их отображении в области построения.
Для каждой линии задается параметр - ее подпись, которая будет выводиться в
качестве легенды. Это можно сделать двумя способами: либо задать параметр l a b e l при
создании линии:
l i n e b lu e = p l t . p l o t ( [ 1 , 5 , - 3 , - 0 .5 ] , [ 1 , 2 5 , 9 , 0 .2 5 ] , 1аЬе1= 'синяя линия')
либо задать этот параметр одновременно с установкой параметров стиля линии:
p l t . s e t p (l i n e r e d , c o l o r = " r e d " , li n e w id th =2 , l a b e l = ' красная л и н и я ')
Для вывода в область построения легенды используется метод l e g e n d ( ) . В этом
случае для расположения легенды выбирается «наилучш ее» ее положение в области
построения, то есть то, которое не перекрывает линии в области построения.
Если необходимо изменить положение вывода, используется метод:
le g e n d (1oc= "зн ач ен и е")
48
Параметр з н а ч е н и е определяет положение легенды на графике. Он может
принимать следующ ие значения: b e s t , u p p e r r i g h t , u p p e r l e f t , lo w e r l e f t ,
lo w e r r i g h t , rig h t, c e n te r l e f t , c e n te r r ig h t, lo w e r c e n t e r , upper
c e n te r, c e n te r.
Например, построим две ломаные линии, зададим для них легенду.
im p o rt m a t p l o t l i b . p y p lo t a s p l t
# отображаем легенду
p l t . le g e n d ()
6 -4 -2 0 2 4 б 8
49
l i n e s t y l e = 'd a s h e d ', li n e w id th =4 , m a rk e r s iz e =10)
b. p l t . p l o t (x , y , c o l o r = ' r e d ' , m a rk e r= ' o ' , li n e w id th =4 , m a rk e r s iz e =10)
c. p l t . p l o t (x , y , c o l o r = ' r e d ' , m a rk e r= ' o ' , l i n e s t y l e = ' s o l i d ' ,
li n e w id th =4 , m a rk e r s iz e =10)
d. l i n e = p l o t (x , y )
p l t . s e t p (l i n e , c o l o r = ' r e d ' , m a rk e r= ' o ' , l i n e s t y l e = 'd a s h e d ',
li n e w id th =4 , m a rk e r s iz e =10)
2.4.2. Реализация
Для построения графиков двух функций используется следую щ ая программа,
пояснения к операторам даны в комментариях:
• подключим модуль для построения графиков функций, дадим ему имя p l t :
im p o rt m a t p l o t l i b . p y p lo t a s p l t
d e f y x (x ) :
y = (x - 2 ) ** 2 - 6
re tu rn y
• Вычислим шаг:
h = (b - a ) / ( n - 1)
50
# Сформируем список со значениями аргум ента х:
х l i s t = [a + h * i f o r i i n r a n g e (n )]
ч 10 -
1 1/ х 1 1 1 ' / 1
-2 - і L l\ 2 3 >r 5 / 6
/ “5
/ -10
-15
/ -20
I -25 -
--- f(x)
--- у(х)
-30 -
51
• Какая функция на данном интервале принимает только отрицательные значения?
Укажите функцию или слово « Н е т » ___ .
• Сколько реш ений имеет уравнение f(x)-y(x) = 0 на данном интервале? Для этого
посчитайте количество пересечений графиков Дх)и y ( x ) :___ .
d e f f x (x ) :
try :
y = x + 1 / x
e x c e p t:
y = m a th . i n f
re tu rn y
Но при некоторых значениях n график будет построен неверно. Сравните результат
построения графика при n = 200 (рисунок 12а) и при n = 201 (рисунок 12б).
— f(x), n = 2 0 0 f(x). п = 2 0 1
60 -
40 -
20 -
-20
-40
а) б)
Рисунок 12. Результат построения функции: а) n = 200; б) n = 201
52
b —а
h = ------ - ;
n —1
• вычислить количество точек построения, расположенных до точки разрыва:
(Ху, —
(ХЪ
п г = int ( — -— ) — 1;
h
• вычислить количество точек построения, расположенных после точки разрыва:
п 2 = п —п 1 —2;
• создать список x _ l i s t _ 1 , содержащ ий значения аргумента функции x, на
интервале [а, хъ —h] список должен вклю чать следую щ ие значения, количество элементов в
этом списке щ :
а, а + h, a + 2^ h, a + 3 • h , ... , x b —h;
• создать список x _ l i s t _ 2 , содержащ ий значения аргумента функции x, на
интервале [xb + h,b] список должен вклю чать следую щ ие значения, количество элементов в
этом списке п 2 :
хъ + h, xb + 2 • h, xb + 3 • h , ..., b;
• создать список y _ l i s t _ 1 , содержащ ий все значения функции, вычисленные от
сформированных в списке x _ l i s t _ 1 аргументов, список должен включать:
f(x_list_1[0]), f(x_list_1[1]), . .f(x_List_1[n1 — 1]);
• создать список y _ l i s t _ 2 , содержащ ий все значения функции, вычисленные от
сформированных в списке x _ l i s t _ 2 аргументов, список должен включать:
f(x_list _2[0]), f(x_list_2[1]), . . f(x_list_2[n2 — 1]);
• построить две линии по спискам ( x _ l i s t _ 1 , f _ lis t_ 1 ) и (x _ lis t_ 2 ,
f _ l i s t _ 2 ) , задать одинаковые характеристики линиям;
• вывести координатные оси;
• при необходимости добавить заголовок и легенду для одной из линий;
• отобразить область построения.
2.5.2. Реализация
Для построения графиков двух функций используется следующ ая программа,
пояснения к операторам даны в комментариях:
• подключим модуль для построения графиков функций, дадим ему имя p l t :
im p o rt m a t p l o t l i b . p y p lo t a s p l t
• создадим функцию:
d e f f x (x ) :
y = x + 1 / x
re tu rn y
• Вычислим шаг:
n = 200
• Точка разрыва
x_b = 0
• Вычислим шаг:
h = (b - a ) / ( n - 1)
• Вычислим n1
n 1 = i n t ((x b - a ) / h) - 1
53
# Вычислим n2
n2 = n - n1 - 2
54
------- f ( x ) = l / ( x * * 2 -1)
20
-3 -2
J -
Г
10 -
' Л
1 2 3
-10 -
1
-20 -
^ ш и рина
■ч
/4
вы сота
г
(2 і )
і 4 j t> / В
а) б)
Рисунок 15. Фигуры: а) прямоугольник; б) окружность
55
C i r c l e ( ( x , y ) , r a d i u s ) - создает круг с центром в точке (x , y ) , радиуса
r a d i u s (рисунок 1 5б).
E l l i p s e ( ( x , y ) , w i d t h , h e i g h t ) - создает эллипс с центром в точке (x , У
диаметр которого по горизонтальной оси равен w i d t h , а диаметр по вертикальной -
h e i g h t (рисунок 1 6 а).
P o ly g o n ( [ ( x 0 , y 0 ) , (x 1 , y 1 ) , (x 2 , y 2 ) , ... ] , c l o s e d ) - создает
ломаную линию по точкам (x 0 , y 0 ) , (x 1 , y 1 ) , (x 2 , y 2 ) , . . . , если параметр
c l o s e d равен T r u e (или он отсутствует) , первая точка соединяется с последней, в
противном случае ( c l o s e d = F a l s e ), ломаная линия остается незамкнутой (рисунок 16а).
Г^імЗ
а)
Рисунок 17. Фигуры: а) сектор; б) дуга
56
Коды - это числовые константы, определенные в модуле P a t h , которые могут
принимать значения:
• MOVETO (переместиться в точку без рисования линии);
• LINETO (провести линию в заданную точку);
• другие.
Коды можно записывать двумя способами:
• полной ссылкой ( m a t p l o t l i b . p a t h . P a th . MOVETO, m a t p l o t l i b . p a t h . P a th . LINETO);
• цифрой 1 или 2 соответственно.
Свойства, описываю щ ие с т и л ь в ы в о д а каждой фигуры, общ ие для всех фигур.
Основные свойства представлены в таблице, больш инство из них могут быть описаны в
полной или сокращ енной форме (таблица 16). Возможные значения характеристик
приведены в П рилож ении В.
Т аб л и ц а 16 - С т и л и в ы в о д а ф игур
Х арактеристика Описание
fa c e c o lo r= " ц в е т "
Ц вет заливки фигуры
^= "цвет"
lin e w id th = з н а ч е н и е
^= зн ачен и е Толщ ина границы фигуры
e d g e c o lo r = " ц в е т "
Ц вет границы фигуры
ec= "ц вет"
Ф игура закраш енная (True, по умолчанию )
^ !!= зн а ч е н и е
или незакраш енная(False)
57
0-10---------2---------4---------ft--------,в--------,10--------.12---
0 1 2 3 4 5 6 7 8
58
p a t h = P a t h (v e r t i c e s , c o d e s )
З ад ан и е д л я сам о п р о в ер к и
В программе создаются плоские фигуры с помощью методов библиотеки
m a tp lo tlib .p a tc h e s :
from m a t p l o t l i b . p a tc h e s im p o rt C i r c l e , Wedge, E l l i p s e , A r c , R e c ta n g le
Выберите н е в ер н ы е операторы:
a . f i g u r e = wedge( ( 4 , 4) , 2 , - 9 0 , 90)
b. f i g u r e = Wedge( ( 4 , 4) , 2 , - 9 0 , 90)
c. f i g u r e = Wedge( ( 4 , 4) , 2 , - 90)
d. f i g u r e = R e c t a n g l e ( ( 1 0 , 12) , 5 , 8)
e. f i g u r e = E l l i p s e (5 , 1 , 2 , 3)
59
О Н------- 1------- 1------- 1------- 1------- 1------- 1------- 1------- 1------- 1------- 1------- 1------- 1-------
О 1 2 3 4 5 6 7 8 9 10 11 12 13
2.7.2. Реализация
Для создания рисунка используется следую щ ий код, пояснения даны в комментариях:
# Импортировать необходимые фигуры рисования,
# подключить модуль для рисования:
from m a t p l o t l i b . p a tc h e s im p o rt C i r c l e , Wedge, P o ly g o n , E l l i p s e , A r c ,
P a t h , P a th P a tc h
im p o rt m a t p l o t l i b . p y p lo t a s p l t
60
# нос
c i r c l e = C i r c l e ( ( 6 . 5 , 7 . 5 ) , 0 . 3 , f c = " b l a c k " , e c = " b l a c k " , lw=4)
a x . add p a tc h (c i r c l e )
# задние лапы
wedge = Wedge( ( 3 , 1) , 2 , 8 6 , 1 8 0, f c = " g r e y " , e c = " b l a c k " , lw=4)
a x . add p a tc h (w edge)
61
З ад ан и е д л я сам о п р о в ер к и
Допиш ите программу так, чтобы в результате ее выполнения получалось
изображение, показанное на рисунке 23.
from m a t p l o t l i b . p a t c h e s im p o rt P a t h , P a t h P a t c h
im p o rt m a t p l o t l i b . p y p l o t a s p l t
n = # у к азать размер области
m = # у к азать размер области
p l t . x l i m (0 , n )
p l t . y l i m ( 0 , m)
ax = p l t . gca ()
# созд ать массив точек
v e r t i c e s = [ ( 1 , 3) , (7 , 2 ) , (6 , 1) , (3 , 1) , (1 , 3) , (4 , 2 . 5 ) , (4 , 6) ,
(7 , 3) , (4 , 2 . 5 )]
#создать список кодов для п оследовательн ости рисования:
codes = # зап и сать список
#создать объект p а t h
p a t h = P a t h (v e r t i c e s , c o d e s )
#создать фигуру
p a t h p a tc h = P a t h P a t c h (p a t h , lw=3)
# Добавить созданную фигуру в область ax:
p l t . show ()
62
Xi = co s ( i ^ ) , y t = s i n ( i - ^ ) . Z i = ^j.
Таблицу вывести в следую щ ем виде (использовать форматный вывод), все числа в
таблице (кроме номера) вывести с 4 знаками после запятой:
N пп x У z f(x,y,z)
1
В ариант 2
1. Описать функцию f ( x , y , a ), при реализации вклю чить обработку
исклю чительных ситуаций:
J e х — cos4( x 2a 5) + a r c t g 4(a —х 5)
f { x , у, a) = -------------------- ------------------ ;
J ^ + x y 41
а) посчитать значения функции:
х = 2п, у = 4.01, a = —1.6;
х = 1, у = 1, a = —1;
б) вывести таблицу значений функции f ( x , y , a ) , состоящ ей из N=15 строк, в точках
(x i, y i, a i) , i = 1..N, где
t a n ( i ^T) ( і \ i2
Хі = -------:------ , yi = ln I г— - ) , a t = —;—r.
1 i \ i + 1 / 1 e 1-1
Таблицу вывести в следую щ ем виде (использовать форматный вывод), все числа в
таблице (кроме номера) вывести с 3 знаками после запятой:
N пп x У a f(x,y,a)
1
В ариант 3
1. Описать функцию f (х, у, с) при реализации включить обработку исклю чительных
ситуаций:
t g ( x 4 — 6) —c os 3J c + х у
f (x , y , c ) =
cos4 |x 3c|
а) посчитать значения функции:
х = —1.2, у = —3.41, с = 1.6;
х = 1, у = 1 , с = ^;
б) вывести таблицу значений функции f ( x , y , c ) , состоящ ей из N=25 строк, в точках
( х і,Уі, сі) , i = 1..N, где
63
3 1 J _ П\ l0g5
log5 О2)
Xj = — , Vi = tan
1 \i + l ' 7 ) , C i ~
ъ i
Таблицу вывести в следую щ ем виде (использовать форматный вывод), все числа в
таблице (кроме номера) вывести с 5 знаками после запятой:
N пп x У c f(x,y,c)
1
В ариант 4
1. Описать функцию f ( x , y , c ) , при реализации вклю чить обработку исклю чительных
ситуаций:
3
•5 (f)'
+ ес
f ( x , y , c ) = lnlcos(x2 + 2)l +
sin2( y 2x 3)
а) посчитать значения функции:
х = ^ , у = —3.41, с = 1.6;
х = 1, у = 0, с = —10;
б) вывести таблицу значений функции f ( x , y , c ) , состоящ ей из N =18 строк, в точках
(x i, y i, c i) , i = 1..N, где
log2(i)
X,-
, y ‘ = s , n ( J h ^ ) , c‘ cos(i)
Таблицу вывести в следую щ ем виде (использовать форматный вывод), все числа в
таблице (кроме номера) вывести с 4 знаками после запятой:
N пп x У c f(x,y,c)
1
В ариант 5
1. Описать функцию f(x,y,b), при реализации вклю чить обработку
исклю чительных ситуаций:
c os6( b x 2) — ( c o s ( x 3 + 6) —s i n 3 у)
f (x , y , b ) = х
b 3a rc sin ( + b)
ІУ + 17
а) посчитать значения функции:
х = Щ^, у = —1, Ъ = 0.1;
x = 1, у = —17, b = —10;
б) вывести таблицу значений функции f (х,у, Ь), состоящ ей из N=23 строк, в точках
(x i, y i, b i), i = 1..N, где
64
Т (Г Т і) 13 t U\ fU \
X,- = ------------ , У,- = cos ----- ) A = sin ^ • І ).
1 I \ Лt + 1 6 / 1 V6 /
N пп x y c f(x,y,b)
1
В ариант 6
1. Описать функцию / (х, у, Ь), (при реализации вклю чить обработку исключительных
ситуаций):
c o s 6(b x 2) — ( c o s ( x 3 + 6) —s t n 3 у )
/ (х ,у ,Ь ) = — х
b 3a r c s t n ( + Ь)
ѴУ+17
а) посчитать значения функции:
х = - ^ , у = —1, b = 0.1;
х = 1, у = - 1 7 , Ь = —10;
б) вывести таблицу значений функции / ( х , у , Ь), состоящ ей из N=23 строк, в точках
(* ;,У ;Л ) , t = 1 ..N , где
ѵ т і 3 t U\ /Ж \
= ---- :— ,Уі = cos Г + Г б Р ' = 51 п( б ’ ‘>
N пп x y c f(x,y,b)
1
В ариант 7
1. Описать функцию / ( х , у, Ь), при реализации вклю чить обработку
исклю чительных ситуаций:
s t n 5(b x 2) — (s tn ( х 2 • ^ —s t n 33 у )
/ (х , у , Ь) = х
b 2a r c o s ( )
Ѵ у + 4'
а) посчитать значения функции:
65
х = - ^ , у = —1, b = 0.1;
x = 1, у = —4, b = —10;
б) вывести таблицу значений функции f ( x , y , b ) , состоящ ей из N =26 строк, в точках
(x i, y i, b i), i = 1..N, где ____
Ѵі + 1 ( Ѵ 2 • п'
Хі -,Уі = sin I I • , bj = s i n e n i .
1 V 2
Таблицу вывести в следую щ ем виде (использовать форматный вывод), все числа в
таблице (кроме номера) вывести с 3 знаками после запятой:
N пп x У с f(x,y,b)
1
В ариант 8
1. Описать функцию f(x,y,b), при реализации вклю чить обработку
исклю чительных ситуаций:
2.33 + In 11 + co s2 ( у +
f (x , y , b ) =
■ г2 ([х +,-----
s in Ь3\)
V У)
а) посчитать значения функции:
x = 2 , y = f 2, b = —29;
х = 4, у = 0, b = —3;
б) вывести таблицу значений функции f ( x , y , b ) , состоящ ей из N=28 строк, в точках
(x i, y i, b i), i = 1..N, где
^
зі. Я лЦ — 1 ( п д
= s i n ( J ''"б,
хі ^ -Ь У і = р , b i = c o s [~rz) ^1).
~
Таблицу вывести в следую щ ем виде (использовать форматный вывод), все числа в
таблице (кроме номера) вывести с 5 знаками после запятой:
N пп x У с f(x,y,b)
1
В ариант 9
1. Описать функцию f(x,y,a), при реализации вклю чить обработку
исклю чительных ситуаций:
66
ln a + ( y ) | - sin 4(y - a)
f (x , y , a ) —
3 (Х + У)
sin
( x —y )
а) посчитать значения функции:
x — 2, у — V b я — —6.1;
х — 4, у — —4, а — —3;
с) вывести таблицу значений функции / ( х , у , а ), состоящ ей из N =24 строк, в точках
(х і, у і , а і) , t — 1. . N, где
/ n \ Vt—
Vt — 11
Xj — e 3/7
, y i — log2 ( - 6 ^ / j , — ^3 .
vv6 ' Г
Таблицу вывести в следую щ ем виде (использовать форматный вывод), все числа в
таблице (кроме номера) вывести с 4 знаками после запятой:
N пп x У с f(x,y,a)
1
В а р и а н т 10
1. Описать функцию / ( х , у, а ), при реализации вклю чить обработку
исклю чительных ситуаций:
a rc c o s(a + х 3) — sin 4(y — a )
/ (х ,у ,а ) —-----
7 |s i n (x + у ) |
а) посчитать значения функции:
х — 2, у — V i, а — —6.1;
х — 4, у — —4, а — —3;
с) вывести таблицу значений функции / ( х , у , а ), состоящ ей из N =19 строк, в точках
(X j,y j,a j) , t — 1. . N, где
я я i
X / — cos It • —, у / — ta n It • —, a
1 J 3 Уі ЛІ 5 1 log5(t + 1)
Таблицу вывести в следую щ ем виде (использовать форматный вывод), все числа в
таблице (кроме номера) вывести с 4 знаками после запятой:
N пп x У с f(x,y,a)
1
В а р и а н т 11
1. Описать функцию / ( х , у, а ), при реализации вклю чить обработку
исклю чительных ситуаций:
67
c t g 3( x 3 —a) + a r c t g 2(y)
f (x , y , a ) =
^ e tg(x+y-a)
а) посчитать значения функции:
x = 7, у = ^й, а = —1.1;
х = 0, у = —4, а = —3.4;
б) вывести таблицу значений функции f ( x , y , a ), состоящ ей из N=33 строк, в точках
(x i, y i, a i) , i = 1..N, где
J ( i + 1) 3 i М . (п Л
ъ = — — , ^ = cosI J — 6), a*= sm U ^ >
N пп x y c f(x,y,a)
1
В а р и а н т 12
1. Описать функцию f(x,y,a), при реализации вклю чить обработку
исклю чительных ситуаций:
^ е х — cos2( x 2a 5) + a r c t g 4(a —у 5)
f f r У, а) = -------------------- . ------------------ ;
^ а + х у 41
а) посчитать значения функции:
х = 7, у = Ѵп3, а = е 3
х = —10, у = 4, а = 5;
б) вывести таблицу значений функции f ( x , y , a ) , состоящ ей из N=33 строк, в точках
(х и уі, а і) , i = 1..N, г д е _________
sin(^ • i)
/ і одз (і) \ ■ f n л
Xi = yi = c o s l J — - ) , ai = s m & l).
N пп x y c f(x,y,a)
1
68
Вариант 13
1. Описать функцию f ( x , y , c ), при реализации включить обработку
исключительных ситуаций:
c 5 + s i n 4(y —c)
j ( x , y , z ) = — 5------------------------- ;
sin (х + у ) + |х — у|
а) посчитать значения функции:
х = е 2, у = 5.01, с = 1.6;
х = 0, у = 0, с = ^;
с) вывести таблицу значений функции f ( x , y , c ) , состоящ ей из N =27 строк, в точках
( х і,Уі, сі) , i = 1..N, где
i2 i —1 n \ lo g s( i2)
x i = 1 — т=,Уі = tan I г— - • т ) , сі = ~л----- 7ГТ.
1 J~i \ i + 1 61 1 log2(i)
Таблицу вывести в следую щ ем виде (использовать форматный вывод), все числа в
таблице (кроме номера) вывести с 5 знаками после запятой:
N пп x У с f(x,y,c)
1
В а р и а н т 14
1. Описать функцию f(x,y,c), при реализации вклю чить обработку
исклю чительных ситуаций:
s i n3x + ln(2y + 3х)
f (x , y , t ) =
t s —^х
а) посчитать значения функции:
х = е 2, у = 5.01, t = 1.6;
х = 1024, у = 0, t = 2;
б) вывести таблицу значений функции f ( x , y , c ) , состоящ ей из N=31 строк, в точках
(x i, y i, t i) , i = 1..N, где
2
log s (i 2) sin(4 l2)
Хі Уі = е Лі,
1 Л ’ ~ ’ cos(i)
Таблицу вывести в следую щ ем виде (использовать форматный вывод), все числа в
таблице (кроме номера) вывести с 4 знаками после запятой:
N пп x У с f(x,y,t)
1
69
Вариант 15
1. Описать функцию / (х, у, а ) при реализации включить обработку исключительных
ситуаций:
J 4 e x + s t n 2( x 3a 5) + a r c t g 4( a —у 5)
/ (х , у , а ) = -------------
V ia —х у 2|
а) посчитать значения функции:
х = 7, у = Ѵя5, а = е 2
х = 1, у = 1, а = 1;
б) вывести таблицу значений функции / ( х , у, а ), состоящ ей из N=31 строки, в точках
(X j,y j,a j) , t = 1. . N, где
ж ,л
c o s(4 • О |^Ogl0( t)
х,- -, У; = COSl I, aj = cos I
t2 + 1 ( 1 4
N пп x y c f(x,y,a)
1
В а р и а н т 16
1. Описать функцию / ( x , у, с), при реализации вклю чить обработку
исклю чительных ситуаций:
у • с 3 + s tn 2 (у — с)
/ (x ,y ,z ) =
c o s 3(x + у 2) + |х 2 —у | — 1 '
а) посчитать значения функции:
х = е 2, у = 6.01, с = 2.6;
х = 0, у = 0, с = | ;
б) вывести таблицу значений функции / ( х , у, с), состоящ ей из N=25 строк, в точках
(Х;,У;,С і ), t = 1. . N, где
co s( t 2) / t л\ lo g 5 (i2)
X; = 1 -------- ---- , V; = ctan I ----- - ^—■) , С; = ------ :---- .
1 VI Vi + 1 3 / 1
Таблицу вывести в следую щ ем виде (использовать форматный вывод), все числа в
таблице (кроме номера) вывести с 5 знаками после запятой:
N пп x y c f(x,y,c)
1
70
Вариант 17
1. Описать функцию f(x,y,c), при реализации включить обработку
исключительных ситуаций:
s i n( x 4 — 6) —tan(3j c + xy)
f (x , y , c ) =
co s3|x 3c|
а) посчитать значения функции:
x = —0.2, у = —4.41, с = 1.2;
x = 1, у = 1 , с = ^;
с) вывести таблицу значений функции f ( x , y , c ), состоящ ей из N=25 строк, в точках
(x i, y i, c i) , i = 1..N, где
(і — 0 .5 )2 / і п\ i
x ‘ = - 7 f + + r ’y , = t g ( — i 7 ) ’ c‘ = 7 n -
Таблицу вывести в следую щ ем виде (использовать форматный вывод), все числа в
таблице (кроме номера) вывести с 5 знаками после запятой:
N пп x У с f(x,y,c)
1
В а р и а н т 18
1. Описать функцию f(x,y,a), при реализации вклю чить обработку
исклю чительных ситуаций:
t g 3( x y 2 — а) + a r c t g 2(y —x)
f (x , y , a ) =
N пп x У с f(x,y,a)
1
71
3. М А Т Р И Ц Ы И В Е К Т О Р Ы
3.1. М асси в ы
N um Py — это библиотека языка Python, предназначенная для создания и обработки
многомерных массивов числовых данных (векторов и матриц). Также N um Py включает
большую библиотеку высокоуровневых (и очень быстрых) математических функций для
операций с этими массивами. П одклю чение библиотеки:
i m p o r t numpy a s np
Для упрощ ения обращ ения к методам библиотеки модуль в программе будет
именоваться np.
3.1.1. П о н я ти е м асси ва
М асси в - это пронумерованная последовательность величин одинакового типа,
обозначенная одним именем. Каж дое из значений, составляю щ их массив, называется
компонентой (или элементом массива). Для обращ ения к элементу массива используется его
индекс (рисунок 24).
Для обращ ения к элементу по индексу 5 используется запись a[5], изменить значение,
хранящ ееся по этому индексу, можно с помощью оператора присваивания:
a[5] = 47
С оздани е м асси ва
В N um Py сущ ествует много способов создать массив. П рощ е всего создать массив из
списка. Для этого используется метод a r r a y ( ) :
i m p o r t numpy a s np
a = n p . a r r a y ( [ - 4 , 5 , 2 ])
П ри создании массива из списка можно переопределить тип его элементов, например,
из списка, состоящ его из строк, представляю щ их собой числа, можно создать массив из
целых чисел.
a = n p . a r r a y ( [ ' - 4 ' , ' 5 ' , ' 2 ' ] , d t y p e =i n t )
Например, введем с клавиатуры строку, которая состоит из чисел, разделенных
пробелом. А затем создадим массив из них:
l i n e = i n p u t ( "В в ед и т е ч и с л а ч е р е з п р о б е л : " )
l i s t a = l i n e . s p l i t ()
a = n p . a r r a y ( l i s t a , d t y p e =i n t )
В ы вод м асси в а
Вывод массива осущ ествляется с помощью оператора p r i n t ( ) :
a = n p . a r r a y ( [ ' - 4 ' , ' 5 ' , ' 2 ' ] , d t y p e =i n t )
p r i n t ( ”a = ” , a )
Результат:
a = [-4 5 2]
72
З ад ан и е д л я сам о п р о в ер к и
Отметьте н е в ер н ы е операторы и объясните, в чем ошибка. В начале программы
модуль numpy импортирован следую щ им образом:
i m p o r t numpy a s np
П ри анализе операторов вывода считайте, что в переменной а хранится массив чисел.
• p rin t а
• a = a r r a y ( [ 1 , 2 , 3 ] , d t y p e =i n t )
• a = i n p u t (n p . a r r a y ( ))
• a = n p . a r r a y ( [ 1 , 2 , 3 ] , d T y p e=i n t )
• a = n p . a r r a y (1 , 2 , 3)
• p r i n t ( " a = %3d " % a )
Метод Описание
a.sum() Сумма элементов массива a
a.prod() Произведение элементов массива a
а.mean() Среднее значение элементов массива a
a.max() Максимальное значение из элементов массива a
a.min() Минимальное значение из элементов массива a
a = n p . a r r a y ( [ - 4 , 5 , 2 ])
p r i n t ( "a = ” , a )
p r i n t ( "Сумма = " , a . sum())
p r i n t ( "Произведение = " , a . p r o d ())
p r i n t ( "Среднее = " , a . mean())
p r i n t ( "Максимум = " , a . max())
p r i n t ( "Минимум = " , a . m i n ())
Результат:
a = [-4 5 2]
Сумма = 3
Произведение = -40
Среднее = 1.0
Максимум = 5
Минимум = -4
З ад ан и е д л я сам о п р о в ер к и
В ставьте в программу пропущ енные фрагменты так, чтобы в результате выполнения
программы получился следую щ ий результат:
[200. 6. -5. 1.]
Код программы:
im p o rt numpy a s np
a = n p . a r r a y ( [ - 5 , 5 , - 1 , 1 , 2 , 4])
73
b 0 = a.
b1 = a .___
b2 = a .___
b3 = a.
b = n p . a r r a y ( [ b 0 , b 1 , b 2 , b 3 ])
p r i n t (b )
a = n p . a r r a y ( [ - 4 , 5 , 2 ])
b = n p . a r r a y ( [ 3 , 2 , 1])
c = a + b
p r i n t ( "a + b = " , c )
c = a - b
p r i n t ( "a - b = " , c )
c = a * b
p r i n t ( "a * b = " , c )
c = a / b
p r i n t ( "a / b = " , c )
c = a %b
p r i n t ( "a % b = " , c )
c = a // b
p r i n t ( "a / / b = " , c )
Результат:
a + b = [-1 7 3]
a - b = [-7 3 1]
a * b = [-12 10 2]
a / b = [-1 .3 3 3 3 3 3 3 3 2 .5 2. ]
a % b = [2 1 0]
a / / b = [-2 2 2]
З ад ан и е д л я сам о п р о в ер к и
Какую операцию нужно вставить в выражение для формирования массива с, чтобы
получился следую щ ий результат:
[3 7 2]
Код программы:
im p o rt numpy a s np
a = n p . a r r a y ( [ 5 , 5 , 2 ])
b = n p . a r r a y ( [ 2 , 7 , 1])
c = a .m i n ()+ a * (b + b .m i n ()) __ b
p r i n t (c )
74
3.1.4. Функции массивов
В модуле n u m p y реализованы математические функции, выполняемые над
массивами, в таблице приведены некоторые из них для массива с именем а. Перед вызовом
функций в программе необходимо указать префикс «np» (имя модуля n u m p y в текущ ей
программе) и точку.
Т аб л и ц а 18 - Ф у н к ц и и м асси вов
Функция Описание
round(a,k) Округляет значения элементов массива а до k знаков после запятой, результат -
массив
sin(a) Вычисляет синусы от каждого элемента массива а, результат - массив
cos(a) Вычисляет косинусы от каждого элемента массива а, результат - массив
tan(a) Вычисляет тангенсы от каждого элемента массива а, результат - массив
arcos(a) Вычисляет арккосинусы от каждого элемента массива а, результат - массив
arcsin(a) Вычисляет арксинусы от каждого элемента массива а, результат - массив
arctan(a) Вычисляет арктангенсы от каждого элемента массива а, результат - массив
degrees(a) Переводит каждый элемент массива а в градусы, результат - массив
radians(a) Переводит каждый элемент массива а в радианы, результат - массив
log(a) Вычисляет натуральный логарифм от каждого элемента массива а, результат -
массив
log10(a) Вычисляет десятичный логарифм от каждого элемента массива а, результат -
массив
exp(a) Вычисляет экспоненту от каждого элемента массива а, результат - массив
s u m( a ) Вычисляет сумму элементов массива а, результат - число
prod(a) Вычисляет произведение элементов массива а, результат - число
mean(a) Вычисляет среднее значение элементов массива а, результат - число
ma x ( a ) Вычисляет максимальное значение из элементов массива а, результат - число
min(a) Вычисляет минимальное значение из элементов массива а, результат - число
abs(a) Применяет функцию модуль для каждого элемента массива а, результат - массив
pi Число пи, размноженное на все элементы массива.
sqrt(a) Вычисляет корень от каждого элемента массива а, результат - массив
Код программы:
im p o rt numpy a s np
d e f compute p o p u l a t i o n (t ):
c = 172
t _1 = 2000
t a u = 45
y = c / t a u * (n p . p i / 2 - n p . a r c t a n ( ( t 1- t ) / t a u ))
re tu rn y
75
p r i n t ( "Годы:" , t )
p r i n t ( "Ч исленность: ” , n p . r o u n d (compute p o p u l a t i o n (t ) , 3))
Результат:
Годы: [1000 1500 1800 1850 1900 1950 1990 2019 2030]
Численность: [0. 172 0. 343 0. 846 1.114 1. 616 2. 801 5. 168 7. 531 8.251]
Обратите внимание, что в программе не использую тся циклы, которые осущ ествляют
поэлементный перебор, не использую тся конструкторы списков. В