31. (П14) Лінійна алгебра, статистика, симуляції¶
Передумови¶
- Прочитана Лекція 29 — Базова лінійна алгебра у NumPy
- Прочитана Лекція 30 — Статистичні функції та генерація випадкових даних
- Встановлений NumPy:
pip install numpy
Мова в коді
Усі рядкові літерали, вивід print(), імена файлів та змінних — лише латиницею. Кирилиця допускається тільки в коментарях.
Завдання¶
Написати скрипт linalg_stats.py, у якому кожне завдання нижче виводить свій результат. Перед кожним завданням вивести заголовок, наприклад --- Task 3 ---.
Цикли for / while для обчислень не використовувати — лише операції над масивами.
Персоналізація¶
STUDENT_NAME = "Ivan Petrenko" # ваше ім'я та прізвище транслітерацією
STUDENT_GROUP = "KI-31" # ваша група
N = 7 # ваш номер у списку групи + 5
Перший рядок виводу: Ivan Petrenko, KI-31, N = 7.
Генератор випадкових чисел створити один раз на початку скрипта: rng = np.random.default_rng(N).
Завдання 1. Система рівнянь¶
Розв'язати систему:
- Записати матрицю коефіцієнтів
Aі векторb. - Знайти розв'язок через
np.linalg.solveі вивести його. - Перевірити: вивести
A @ xта результатnp.allclose(A @ x, b).
Приклад для N = 7:
Завдання 2. Матриці¶
Для матриці M = [[N, 2], [1, 3]] вивести:
M * MіM @ M— і в коментарі одним реченням пояснити різницю;- визначник, округлений до 2 знаків;
- обернену матрицю;
- перевірку, що
M @ inv(M)дорівнює одиничній матриці (np.allclose+np.eye).
Завдання 3. Аналіз оцінок¶
Придумайте 10 оцінок за 100-бальною шкалою (серед них мають бути нижчі за 60) і створіть масив grades. Вивести:
- середнє, медіану, стандартне відхилення (2 знаки), мінімум і максимум;
- кількість незданих (оцінка
< 60); - оцінки
>= 90; - номер студента з найвищою оцінкою.
Завдання 4. Кидки кубика¶
- Кинути кубик 1000 разів:
rng.integers(1, 7, size=1000). Вивести перші 10 кидків. - Порахувати, скільки разів випала кожна грань (
np.bincount), і вивести 6 чисел. - Вивести середнє значення кидків і порівняти з теоретичним
3.5. - Вивести частку шісток і порівняти з
1 / 6.
Завдання 5. Два кубики¶
- Кинути два кубики 10 000 разів — масив формою
(10_000, 2)— і порахувати суму кожної пари. - Вивести, скільки разів випала кожна сума від
2до12. - Вивести найчастішу суму (
argmax). - Вивести ймовірність суми
7(порівняти з6 / 36) і ймовірність суми>= 10.
Завдання 6. Симуляція оцінок групи¶
- Згенерувати оцінки
N + 20студентів з 3 предметів:rng.normal(70, 12, size=(N + 20, 3)). - Округлити, обрізати до
[0, 100]черезnp.clipі перетворити наint. Вивести форму і перших 3 студентів. - Вивести середній бал по кожному предмету (
axis=0). - Порахувати середній бал кожного студента (
axis=1) і вивести номер найкращого та його середній бал. - Вивести кількість студентів із середнім балом
< 60.
Знайшли помилку чи бажаєте додати інформацію, щоб покращити курс? Створіть issue на GitHub