Главная страница

Питон для нормальных. Учебник Москва Базальт спо макс пресс 2018


Скачать 2.54 Mb.
НазваниеУчебник Москва Базальт спо макс пресс 2018
АнкорПитон для нормальных
Дата05.10.2022
Размер2.54 Mb.
Формат файлаpdf
Имя файлаsysoeva_sysoev_piton_dlya_normalnyh_ch1.pdf
ТипУчебник
#715174
страница14 из 14
1   ...   6   7   8   9   10   11   12   13   14
7.4
Примеры решения заданий
Пример задачи 22 (Определитель матрицы) Найдите определитель ма- трицы. Матрицу возьмите из текстового файла, созданного при выпол- нении задания №15.
Решение задачи 22
f r
o m
numpy i
m p
o r
t
*
M = loadtxt ( ’ Matrix . txt ’)
p r
i n
t
( linalg . det ( M ))

168
Глава 7. Библиотеки, встроенные в numpy
Пример задачи 23 (Cистема линейных уравнений) Решите систему ли- нейных уравнений, матрицу коэффициентов и столбец свободных членов прочитайте из текстовых файлов, созданных в задании №15. Запишите в новый текстовый файл полученные корни.
Решение задачи 23
f r
o m
numpy i
m p
o r
t
*
M = loadtxt ( ’ Matrix . txt ’)
V = loadtxt ( ’ Vector . txt ’)
p r
i n
t
( linalg . solve (M , V ))
Пример задачи 24 (Аппроксимация параболою) Сгенерируйте парабо- лу y = x
2
− x − 6 на отрезке [−6; 6]. Прибавьте к ней белый шум с па- раметрами (0; 2). Аппроксимируйте её полиномом второй степени. Оце- ните ошибку аппроксимации. Постройте график (рис. 7(a)).
Решение задачи 24
f r
o m
numpy i
m p
o r
t
*
f r
o m
m a t p l o t l i b . pyplot i
m p
o r
t
*
x = arange ( -6 , 6 , 0.1) # диапазон y = x **2 - x - 6 # парабола r = random . normal (0 , 2 ,
l e
n
( x )) # белый шум z = y + r a = ones ((
l e
n
( x ) , 3))
a [: , 1] = x a [: , 2] = x **2
result = linalg . lstsq (a , z )
za = dot (a , result [0]) # аппроксимирующая кривая plot (x , z , ’o ’ , color = ’ red ’)
plot (x , za , color = ’ blue ’)
p r
i n
t
( result [1]/
l e
n
( x )) # ошибка аппроксимации show ()
Значение ошибки аппроксимации должно быть порядка квадрата стандарт- ного отклонения шума.
Пример задачи 25 (Погрешности аппроксимации) Сгенерируйте 3 ря- да y, как это описано в предыдущем задании, пусть ряды отличаются реализациями шума. Для каждого x таким образом будет доступно по 3

7.4. Примеры решения заданий
169
значения y. По этим значениям рассчитайте для каждого x среднее зна- чение ¯
y и среднеквадратичное отклонение от среднего σ
x
. С использова- нием полученных рядов и постройте график погрешностей результатов
(errorbar) (рис. 7(b)).
Решение задачи 25
f r
o m
numpy i
m p
o r
t
*
f r
o m
m a t p l o t l i b . pyplot i
m p
o r
t
*
x = arange ( -6 , 6 , 0.1)
y = x **2 - x -6
r = random . normal (0 , 2 ,
l e
n
( x ))
y1 = y + r r = random . normal (0 , 2 ,
l e
n
( x ))
y2 = y + r r = random . normal (0 , 2 ,
l e
n
( x ))
y3 = y + r y = c o l u m n _ s t a c k ([ y1 , y2 , y3 ])
e r r o r b a r (x , mean (y , axis =1) , yerr =[ std (y , axis =1) ,
std (y , axis =1)] , marker = ’. ’ , color = ’ green ’ ,
ecolor = ’ blue ’)
savefig ( ’ plot . png ’)
show ()
Пример задачи 26 (Генерация массивов случайных чисел) Сгенерируйте случайные векторы из n действительных значений с равномерным и нор- мальным распределением, а также из n целых чисел.
Решение задачи 26
n =
i n
t
(
i n
p u
t
( ’Введите количество значений: ’ ))
a =
i n
p u
t
( ’Введите диапазон равномерного распределения: ’ ). split ()
x = random . u n i f o r m (
f l
o a
t
( a [0]) ,
f l
o a
t
( a [1]) , n )
p r
i n
t
( x )
b =
i n
p u
t
( ’Введите параметры нормального распределения: ’ ). split ()
y = random . normal (
f l
o a
t
( b [0]) ,
f l
o a
t
( b [1])**0.5 , n )
p r
i n
t
( y )
c =
i n
p u
t
( ’Введите диапазон для дискретного распределения: ’ ). split ()
z = random . r a n d i n t (
i n
t
( c [0]) ,
i n
t
( c [1]) , n )
p r
i n
t
( z )
Возможный вывод программы (при каждом запуске будут различные случайные числа):

170
Глава 7. Библиотеки, встроенные в numpy
Введите количество значений: 8
Введите диапазон равномерного распределения: 1 10
[ 4.59727241 5.25897018 7.05872105 6.53497311 2.79842143 6.9183058 5.47890825 8.6876828 ]
Введите параметры нормального распределения: 3 9
[ 9.2115671 2.97903395 2.91634906 3.67303643 0.29596935 6.45306148 3.50505498 3.44637582]
Введите диапазон дискретного распределения: -10 10
[ 7 2 -2 -2 6 -8 3
1]
Чтобы вводить сразу несколько значений с клавиатуры, в данном примере был использован метод split, разделяющий строку на подстроки. При выполне- нии задания можно просто каждый необходимый параметр считывать новым input()
Пример задачи 27 (Случайные перестановки) Сгенерируйте массив-ле- сенку длины n. Cлучайно перемешайте его. На экран выведите изначаль- ный и перемешанный массивы.
Решение задачи 27
f r
o m
numpy i
m p
o r
t
*
n =
i n
t
(
i n
p u
t
( ’Размер массива: ’ ))
x = arange (n , 0 , -1)
p r
i n
t
( x )
y = random . p e r m u t a t i o n ( x )
p r
i n
t
( y )
Возможный вывод программы (третья строка будет меняться от запуска к за- пуску):
Размер массива: 10
[10 9
8 7
6 5
4 3
2 1]
[ 7 5
6 1
2 8 10 4
3 9]
Пример задачи 28 (Периодограмма синуса) Рассчитайте и постройте периодограмму для функции sin(x) на отрезке x ∈ [π; π].
Решение задачи 28 Результат можно увидеть на рис. 8(a). Грубость графика обусловлена малым объёмом данных.
f r
o m
numpy i
m p
o r
t
*
f r
o m
m a t p l o t l i b . pyplot i
m p
o r
t
*
t = arange ( - pi , pi , pi /12)
x = sin (2* pi * t )

7.5. Задания на использование встроенных библиотек numpy
171
Px =
a b
s
( fft . rfft ( x )/(0.5*
l e
n
( t )))**2
fn = 1/(2* pi /12)
freq = l i n s p a c e (0 , fn ,
l e
n
( Px ))
grid ( True ); plot ( freq , Px , color = ’ red ’)
show ()
Пример задачи 29 (Сложный шум) Сгенерируйте случайный процесс,
представляющий собою сумму равномерно распределённых на отрезке
[−10; 10] случайных величин и нормально распределённых случайных ве- личин с параметрами (0; 1), длиною в 10000 значений. Постройте гисто- грамму его распределения.
Решение задачи 29 Возможный результат можно увидеть на рис. 8(b). От за- пуска к запуску картинка будет несколько варьировать.
f r
o m
numpy i
m p
o r
t
*
f r
o m
m a t p l o t l i b . pyplot i
m p
o r
t
*
n = 10000
x = random . uniform ( -10 , 10 , n )
y = random . normal (0 , 1 , n )
z = x + y hist (z , bins =100 , normed = True , color = ’ green ’)
show ()
7.5
Задания на использование встроенных библиотек numpy
Для заданий, содержащих большое число вариантов (от 4 и более) следует выполнить 1 вариант с номером (n − 1)%m + 1, где n — номер в списке группы,
а m — число заданий.
Задание 24 Найдите определитель матрицы. Матрицу возьмите из текстового файла, созданного ранее, либо у преподавателя.
Задание 25 Решите систему линейных уравнений. Матрицу коэффици- ентов и столбец свободных членов прочитайте из текстовых файлов,
созданных ранее. Запишите в новый текстовый файл полученные корни.
Задание 26 Сгенерируйте набор значений заданной функции с шумом.
Аппроксимируйте его полиномом второй степени. Оцените ошибку ап- проксимации. Постройте график. Функции:
1. парабола y = x2 − x − 6 на отрезке [−4; 4] с белым шумом, распределённым по нормальному закону с параметрами (0; 1);

172
Глава 7. Библиотеки, встроенные в numpy
2. парабола y = x2 − x − 6 на отрезке [−4; 4] с белым шумом, распределённым по равномерному закону на отрезке [−10; 10];
3. парабола y = x2 − x − 6 на отрезке [−4; 4] с белым шумом, распределённым по закону χ
2
(random.chisquare) с параметрами (6; n), где 6 — количество степеней свободы шума, а n — длина ряда y;
4. парабола y = 5x
2
−4x+1 на отрезке [−6; 6] с белым шумом, распределённым по нормальному закону с параметрами (0; 3);
5. парабола y = 5x
2
−4x+1 на отрезке [−6; 6] с белым шумом, распределённым по равномерному закону на отрезке [−1; 1];
6. парабола y = 5x
2
−4x+1 на отрезке [−6; 6] с белым шумом, распределённым по закону χ
2
(random.chisquare) с параметрами (6; n), где 6 — количество степеней свободы шума, а n — длина ряда y;
7. парабола y = x
2
+ 5 на отрезке [−10; 10] с белым шумом, распределённым по нормальному закону с параметрами (0; 1);
8. парабола y = x
2
+ 5 на отрезке [−10; 10] с белым шумом, распределённым по равномерному закону на отрезке [−10; 10].
Задание 27 Сгенерируйте 5 рядов y, как это описано в предыдущем зада- нии, пусть ряды отличаются реализациями шума. Для каждого x таким образом будет доступно по 5 значений y. По этим значениям рассчитай- те для каждого x соответствующее ему среднее значение ¯
y и средне- квадратичное отклонение от среднего σ
y
. С использованием полученных рядов ¯
y(x) и σ
y
(x) постройте график средних с планками погрешностей
(errorbar).
Задание 28 Сгенерируйте случайные векторы из 10, 30 и 200 значений:
1. с равномерным распределением на отрезке [−0.5; 0.5];
2. с нормальным распределением с параметрами µ = 1, σ = 0.5;
3. из целых чисел в диапазоне [0; 10].
Задание 29 Сгенерируйте и случайно перемешайте:
1. массив-диапазон, покрывающий полуинтервал [0; 10) с шагом 0.5;
2. массив-диапазон из целых чисел от 0 до 19;
3. массив из 10 чисел, первые 5 из которых нули, вторые 5 — единицы;
4. массив длины 10, в котором изначально в начале и в конце было по
2 тройки. А середине — пятёрки;

7.5. Задания на использование встроенных библиотек numpy
173 5. массив из 4 нулей, 4 единиц и 4 двоек;
6. массив из 15 нулей и 1 единицы;
7. массив-пирамиду длины 11 из целых чисел, где среднее число — самое большое, стоящие рядом с ним на 1 меньше, следующие по очереди от середины ещё на 1 меньше и т. д., значение среднего числа за- дайте сами;
8. массив, полученный в результате табулирования синусоиды.
Выведите на экран сначала неизменённый массив, потом — перемешан- ный.
Задание 30 Рассчитайте и постройте периодограмму — оценку спектра мощности:
1. сигнала y(x), полученного по формуле 4 sin(πx + π/8) − 1 на отрезке
[−10; 10] с шагом 0.05;
2. сигнала y(x), полученного по формуле 2 cos(x − 2) + sin(2x − 4), на от- резке [−20π; 10π] с шагом π/20;
3. нормального шума, параметры выберите сами;
4. равномерного шума, параметры выберите сами.
Задание 31 Сгенерируйте случайный процесс длиною в 10000 значений и постройте гистограмму его распределения для следующих рядов:
1. равномерный шум с параметрами (0, 1);
2. равномерный шум с параметрами (−4, 10);
3. равномерный шум с параметрами (0.5, 0.6);
4. равномерный шум с параметрами (−a, a), где a — случайное равномерно распределённое число из диапазона [0; 1];
5. равномерный шум с параметрами (−a, 2a), где a — случайное равномерно распределённое число из диапазона [1; 10];
6. нормальный (гауссов) шум со стандартными параметрами: (0, 1);
7. нормальный шум с параметрами (−2, 0.25);
8. нормальный шум с параметрами (1, 2.5);
9. нормальный шум с нулевым средним и среднеквадратичным отклонением
σ, где σ — число, равномерно распределённое в диапазоне [0; 1];

174
Глава 7. Библиотеки, встроенные в numpy
10. нормальный шум с параметрами µ, σ, где µ есть нормально распределён- ное число со стандартными параметрами (0, 1), а σ — число, равномерно распределённое в диапазоне [1, 10];
11. процесс, представляющий собою сумму двух независимых величин, распре- делённых равномерно на интервале [−1; 1];
12. процесс, представляющий собою сумму 3 независимых величин, равномерно распределённых на интервале [−1; 1];
13. процесс, представляющий собою сумму двух нормально распределённых случайных величин с единичною дисперсией, первое из которых имеет сред- нее −e, а второе имеет среднее e;
14. процесс, представляющий собою сумму большого числа (например, 30) рав- номерно распределённых на отрезке [−0.1; 0.1] случайных величин;
15. процесс, представляющий собою сумму большого числа (например, 30) нор- мально распределённых случайных величин с параметрами µ = 0, σ = 0.1.

Учебное издание
Серия «Библиотека ALT»
Сысоева Марина Вячеславовна
Сысоев Илья Вячеславович
Программирование для «нормальных» с нуля на языке Python
В двух частях
Часть 1
Ответственный редактор: В. Л. Черный
Оформление обложки: А. С. Осмоловская
Вёрстка: В. Л. Черный
Издание доступно в РИНЦ по адресу: https://elibrary.ru
ООО «Базальт СПО»
Адрес для переписки: 127015, Москва, а/я 21
Телефон: (495) 123-47-99. E-mail: sales@basealt.ru http://basealt.ru
Подписано в печать 02.03.18. Формат 70x100/16.
Гарнитура Computer Modern. Печать офсетная. Бумага офсетная.
Усл. печ. л. 14.3[+0.33]. Уч.-изд. л. 11.77 Тираж 999 экз. Изд. номер. 044
Издательство ООО «МАКС Пресс»
Лицензия ИД N 00510 от 01.12.99 г.
119992, ГСП-2, Москва, Ленинские горы, МГУ имени М. В. Ломоносова,
2-й учебный корпус, 527 к.
Тел. 8(495)939-3890/91. Тел./Факс 8(495)939-3891.

По вопросам приобретения обращаться: ООО «Базальт СПО»
(495)123-47-99 E-mail: sales@basealt.ru http://basealt.ru

0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 1.0 0.5 0.0 0.5 1.0 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 1.0 0.5 0.0 0.5 1.0
(a)
(b)
Рис. 1. График синусоиды серыми линиями — (a) и синусоиды (синими) и коси- нусоиды (зелёными) линиями — (b).
0.0 0.5 1.0 1.5 2.0 0
1 2
3 4
5
x
0.0 0.5 1.0 1.5 2.0 0
1 2
3 4
5
x
0.0 0.5 1.0 1.5 2.0 0
1 2
3 4
5
x
3 0.0 0.5 1.0 1.5 2.0 0
1 2
3 4
5
x
2 0.0 0.5 1.0 1.5 2.0 0
1 2
3 4
5
x
5 0.0 0.5 1.0 1.5 2.0 0
1 2
3 4
5 6
7 8
x
3
x
3
Рис. 2. Пример построения нескольких графиков на одном полотне.

1 2
3 4
5 6
7 8
9 10 0
1 2
3 4
5 6
Java
26.9%
C
22.4%
C++
16.4%
PHP
13.4%
Python
11.9%
Ruby
9.0%
(a)
(b)
Рис. 3. Пример столбцовой (a) и круговой (b) диаграмм.
3 2
1 0
1 2
2.0 1.5 1.0 0.5 0.0 0.5 1.0 1.5 3
2 1
0 1
2 2.0 1.5 1.0 0.5 0.0 0.5 1.0 1.5
(a)
(b)
Рис. 4. Пример построения контурных диаграмм: (a) — использованы линии, (b)
— использована заливка.

−10
−5 0
5 10 −10
−5 0
5 10
−10
−5 0
5 10
−10
−5 0
5 10 −10
−5 0
5 10
−10
−5 0
5 10
(a)
(b)
Рис. 5. 3D-каркас (a) и 3D-поверхность (b).
3 2
1 0
1 2
3 2
1 0
1 2
(a)
(b)
Рис. 6. Иллюстрация к задаче 21.

−6
−4
−2 0
2 4
6
−10 0
10 20 30 40
−6
−4
−2 0
2 4
6
−10 0
10 20 30 40
(a)
(b)
Рис. 7. Иллюстрации к задачам 24 — (а) и 25 — (b). На рис. (а) представлена за- висимость y i
= x
2
i
− x i
− 6 + ξ
i
(серые точки), где ξ
i
— нормально распределённые случайные числа (шум) с нулевым средним и среднеквадратичным отклонени- ем 2, и её аппроксимирующая функция (чёрная кривая), рассчитанная методом наименьших квадратов. На рис. (b) — зависимость hy k
(x)i k=1,2,3
с разбросом ошибок, построенная по 3 экспериментам (k — номер эксперимента), исходная зависимость сгенерирована по формуле y i
= x
2
i
− x i
− 6 + ξ
i
, причём для каждого эксперимента реализация шума ξ своя.
0.0 0.5 1.0 1.5 2.0 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8
−15
−10
−5 0
5 10 15 0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07
(a)
(b)
Рис. 8. Спектр мощности синусоиды, построенный по 1 периоду при шаге вы- борки π/12 — (a) и гистограмма сложного (суммы равномерного и нормального)
распределения — (b).
1   ...   6   7   8   9   10   11   12   13   14


написать администратору сайта