Домашнее задание#
Упражнение 1 - Numpy
Пусть у двух матриц совпадает количество строк. Объедините их в одну горизонтально (объедините столбцы этих матриц)
Пусть дана пuтру-матрица \(M\) и два массива индексов \(a, b\) одинаковой длины. Постройте массив элементов \(M[a[0], b[0]], M[a[1], b[1]], \ldots\) Указание: для выполнения этой операции не требуется никаких именных функций.
Подсчитайте след матрицы и количество ненулевых элементов на ее диагонали
Даны два произвольных numpy-массива одинаковой размерности \((n, m)\). Замените нулями те элементы второго массива, для которых на соответствующем месте в первом массиве находятся отрицательные числа
Даны две матрицы с одинаковым количеством строк и количеством столбцов \(n\) и \(m\) соответственно. Постройте матрицу \(m \times m\) всевозможных произведений столбцов друг на друга (в смысле скалярного произведения).
Упражнение 2 - Matplotlib
Постройте таблицу \(2 \times 2\) из четырех графиков (см. функцию plt.subplots)
Постройте график с крестами ошибок
Постройте график в логарифмическом масштабе без явного вычисления логарифмов
Упражнение 3 - Погрешности
Оценить погрешность в определении корней уравнения \(a y^3+d=0\), если величины \(a=1\) и \(d=8\) заданы с точностью \(\Delta(a)=10^{-3}\) и \(\Delta(d)=10^{-3}\).
Определить оптимальный шаг численного дифференцирования \(h_{\text{opt}}\) при использовании для вычисления производной приближенной формулы
Какой порядок аппроксимации имеет эта формула? Известно, что, \(\left|u^{(5)}(t)\right| \leq M_5\), а значения функций вычисляются с точностью \(\Delta u\).
Упражнение 4 - Погрешность определения корня уравнения
С каким числом верных знаков (или относительной погрешностью) должен быть известен свободный член в уравнении \(x^2-2 x+0.999993751=0\), чтобы корни имели четыре верных знака?
Упражнение 5 - Рост погрешности в последовательности
Пусть задана последовательность чисел \(x_n, n=0,1,2, \ldots\), причем \(5 x_{n+1}-x_n=4\), а \(x_0\) известно с относительной погрешностью \(10^{-6}\). При каких значениях \(x_0\) относительная погрешность при вычислении \(x_n\) будет быстро возрастать с ростом \(n\) ?
Упражнение 6* - Вигнеровский полукруг
Сгенерируйте случайную матрицу \(N \times N\), в которой каждый элемент взят из гауссова нормального распределения с фиксированными параметрами. Сделайте из этой матрицы симметричную, добавив к ней ее транспонированную. Постройте гистограмму собственных значений получившейся матрицы (подберите достаточно большое \(N\) и удачное количество бинов). Повторите эксперимент \(M\) раз ( \(M \sim 50\), здесь цикл разрешается) и отобразите разброс высоты каждого бина гистограммы с помощью креста ошибок.
(Wigner surmise) Постройте гистограмму расстояний \(\rho\) между ближайшими собственными числами матрицы. Для этого для случайной симметричной матрицы отсортируйте ее собственные числа \(\lambda_i\) и посчитайте все \(\rho_i=\lambda_{i+1}-\lambda_i\). Для улучшения качества можно повторить эксперимент \(m\) раз и объединить все наборы \(\left\{\rho_i\right\}\).
Случайная величина \(\rho\) из предыдущего пункта имеет плотность вероятности \(f(\rho)\). Построенная в п. 2 гистограмма должна приближаться к функции \(f(\rho)\) при больших \(N\) и \(m\). Пользуясь гистограммой, определите поведение (асимптотику) \(f(\rho)\) на маленьких и больших \(\rho\). На основании этого предложите вид функциональной зависимости, который может приблизить \(f(\rho)\). Достаточно предложить функцию \(\tilde{f}_{c_1, c_2, \ldots}(\rho)\), где \(c_1, c_2, \ldots\) некоторое (небольшое) количество параметров, так что \(\tilde{f}(\rho)\) неплохо приближает гистограмму при некоторых \(c_i\).
Повторите предыдущие пункты для случайной гауссовой эрмитовой матрицы. Для того, чтобы ее сгенерировать, можно сначала сгенерировать случайную гауссову комплексную матрицу, а затем сложить ее с эрмитово сопряженной для нее.