1. Работа с числами с плавающей точкой.

Числа с плавающей точкой (ЧПТ) - стандартный способ представления действительных чисел в компьютерах, аппроксимирующий их в форме: ±m * b^e, где:

Стандарт IEEE 754 определяет форматы (single precision float: 32 бита, double precision double: 64 бита), распределяя биты на знак, экспоненту и мантиссу. Ключевые особенности и проблемы:

Конечная точность и погрешность представления: Большинство действительных чисел не могут быть представлены точно из-за ограниченного числа бит мантиссы. Возникает погрешность округления. Величина машинного эпсилон (ε_mach) - это разница между 1.0 и следующим представимым числом >1.0 - характеризует относительную точность округления (ε_mach ≈ 1.1e^(-16) для double).

Диапазон представимых чисел: Ограничен количеством бит экспоненты. Возможны переполнение (overflow, |число| > max_представимое) и исчезновение порядка (underflow, |число| < min_представимое > 0).

Арифметические операции: Результат операции над ЧПТ часто требует округления до ближайшего представимого числа, внося погрешность.

Потеря значимости (Catastrophic Cancellation): Наиболее опасный эффект. Возникает при вычитании двух очень близких по величине чисел. Значимые разряды в мантиссе сокращаются, а погрешности, которые были в каждом из чисел, остаются и становятся относительно огромными в результате.

Пример:

a = 1.2345678901234

b = 1.2345678900000

a - b = 0.0000000001234 = 1.234e^(-10) (теряются многие значащие цифры).

Некоммутативность и неассоциативность: Из-за округления операции могут давать разные результаты при изменении порядка: (a + b) + c != a + (b + c), a + b != b + a в некоторых пограничных случаях (хотя коммутативность обычно сохраняется для + и *).

Особые значения: ±0, ±∞ (Inf), NaN (Not a Number - результат неопределенных операций типа 0/0, ∞ - ∞).

2. Архитектура памяти.

Современные компьютеры используют иерархию памяти для баланса между скоростью доступа, объёмом и стоимостью. Уровни иерархии (от быстрых к медленным):

Ключевые принципы:

Временная: Повторный доступ к одним данным → кэширование.

Пространственная: Доступ к соседним адресам (например, элементам массива) → загрузка блоков в кэш.

3. Переполнение (overflow), потеря точности (underflow).

Переполнение (overflow) возникает, когда результат вычислений превышает максимальное представимое число для типа данных.

Потеря точности (underflow) возникает, когда результат ближе к нулю, чем минимальное нормализованное число:

 Ключевые последствия:

4. Ошибка округления в арифметике с плавающей точкой, накопление ошибок округления, потеря значимости.

Ошибка округления возникает из-за конечной точности мантиссы (бит): число x представляется как fl(x)=x*(1+δ), где ∣δ∣ ≤ ε_mach ​ (машинное эпсилон, ≈ 10^(−16) для double). Например, 0.1 в двоичной системе хранится с погрешностью.

Накопление ошибок — кумулятивный эффект при последовательных операциях. Погрешность результата n операций может достигать ∼ sqrt(n) * ε_mach​ (случайное округление) или n * ε_mach ​ (худший случай).

Потеря значимости — вычитание близких чисел a ≈ b, усиливающее относительную погрешность:

fl(a−b) = (a * (1+δ_1) − b * (1+δ_2)) ≈ (a−b) + (a * δ_1− b * δ_2).

Относительная ошибка: ∣a * δ_1 − b * δ_2∣/∣a − b∣ ≫ ε_mach ​, если ∣a − b∣ ≪ ∣a∣ + ∣b∣.

Пример:

1.000001−1.000000 = 10^(−6), но при погрешностях δ_i ∼ 10^(−16) результат может иметь относительную ошибку до 10^(−10).

5. Суммирование по Кахану.

Алгоритм Кахана — метод компенсации ошибок округления при суммировании последовательности чисел с плавающей точкой. Он использует дополнительную переменную для отслеживания потерянных младших разрядов.

Алгоритм:

y = x - c (включаем предыдущую ошибку),

 t = sum + y (новая промежуточная сумма),

c = (t - sum) - y (вычисляем ошибку округления),

sum = t.

Принцип работы:

6. Абсолютная и относительная погрешности.

Абсолютная погрешность (Δx) — разница между точным значением x∗ и его приближением x:

Δx=∣x−x∗∣.

Эта величина характеризует физический размер ошибки (например, погрешность измерения длины в метрах).

Относительная погрешность (δx) — отношение абсолютной погрешности к модулю точного значения x∗:

δx=Δx/∣x∗∣=∣x − x∗∣/∣x∗∣, (x∗ ≠ 0).

Она выражает качество приближения без привязки к масштабу величины (например, 0.01 при x∗=100 означает 1% ошибки).

7. Округление и значащие цифры в записи приближенного числа.

Значащими цифрами в записи приближенного числа называются:

• все ненулевые цифры;

• нули, содержащиеся между ненулевыми цифрами;

• нули, являющиеся представителями сохраненных десятичных разрядов при округлении.
СКОЛЬЗКИЙ МОМЕНТ (я сама запуталась): Если в результате округления вы сохранили нули, чтобы показать точность числа, эти нули считаются значащими. 12.300 → 5 значащих цифр (нулевые после "3" показывают, что измерение было сделано с точностью до тысячных)
0.00470 → 3 значащих (4, 7, и последний 0 — он показывает, что число точно до 5-го знака после запятой)

Правила округления чисел:

Чтобы округлить число до n значащих цифр, отбрасывают все цифры, стоящие справа от n-й значащей цифры, или, если это нужно для сохранения разрядов, заменяют их нулями. При этом:

1. если первая отброшенная цифра меньше 5, то оставшиеся десятичные знаки сохраняют без изменения;

2. если первая отброшенная цифра больше 5, то к последней оставшейся цифре прибавляют единицу;

3. если первая отброшенная цифра равна 5 и среди остальных отброшенных цифр есть ненулевые, то к последней оставшейся цифре прибавляют единицу;

4. если первая из отброшенных цифр равна 5 и все отброшенные цифры являются нулями, то последняя оставшаяся цифра оставляется неизменной, если она четная, и увеличивается на единицу, если нет (правило четной цифры). Это правило гарантирует, что сохраненные значащие цифры числа являются верными в узком смысле, т. е. погрешность округления не превосходит половины разряда, соответствующего последней оставленной значащей цифре. Правило четной цифры должно обеспечить компенсацию знаков ошибок.

8. Верные в строгом (узком) смысле цифры числа, верные в широком смысле цифры числа.

9. Сложность алгоритмов и нотация big-O.

10. Профилирование кода в Python.

11. Представление чисел с плавающей точкой (стандарт IEEE 754), ошибки представления.

12. Способы изолирования корней нелинейных функций.

13. Сжимающие отображения.

14. Погрешность и критерии сходимости, константа Липшица.

15. Скорость сходимости итерационного алгоритма.

16. Стабильность и распространение ошибки в методах численного решения нелинейных уравнений.

17. Теория сжимающих отображений.

18. Интерполяция, экстраполяция, аппроксимация.

Аппроксимацией функции f(x) называется нахождение такой функции F(x), которая была бы близка к заданной. Критерии близости функций f(x) и F(x) могут быть различные. Аппроксимирующая функция не обязательно должна проходить через все точки. Происходит замена одних объектов другими, в каком-то смысле близкими к исходным, но более простыми.  Пример аппроксимации: регрессия / МНК.

Общая погрешность аппроксимирующей функции может быть выражена как сумма локальных погрешностей в точках с координатами xi.

Если налагается условие строгого совпадения значений функций F(x) и f(x) в заданных точках xi, то данный вид аппроксимации называется интерполяцией. То есть интерполяция - способ нахождения промежуточных значений функции по имеющемуся дискретному набору значений.

В случае, если требуется получить аппроксимацию функции за пределами известного интервала, то данный вид аппроксимации называется экстраполяцией.

19. Глобальная и локальная интерполяция.

При глобальной интерполяции подбирается одна функция F(x), которая проходит через все известные точки заданного интервала . Пример: полином Лагранжа.

При локальной интерполяции функция строится отдельно для каждого интервала между соседними узлами. То есть f(x) интерполируется несколькими функциями . Примеры: кусочно-линейная интерполяция, кубическая сплайн интерполяция

Если использовать глобальную интерполяцию при n>7, то она будет неустойчивой (малые изменения в исходных данных приводят к значительным изменениям интерполирующей функции). Однако локальная интерполяция обладает тем недостатком, что интерполирующая функция в узлах стыковки многочлена имеет непрерывность только нулевого порядка. От этих недостатков свободна сплайн-интерполяция, которая требует непрерывности в узлах стыковки локальных многочленов по производным порядка один, два и т.д.

20. Ступенчатая и линейная интерполяция.

Ступенчатая интерполяция - за значение функции F(x) берется значение функции f в точке, ближайшей к рассматриваемой.

Линейная интерполяция - f(x) интерполируется по двум соседним точкам. Этот метод предполагает, что каждая пара соседних точек соединяется прямой линией

21. Глобальная и локальная интерполяция.

см. вопрос 19

22. Интерполяционные полиномы.

Алгебраическим интерполяционным многочленом  называется многочлен  степени не выше n, принимающий в точках  значения

Полином Лагранжа - многочлен минимальной степени, принимающий данные значения в данном наборе точек. Для n+1 точек существует только один интерполяционный многочлен L(x) степени не более n, для которого

23. Квадратичная интерполяция.

24. Интерполяция сплайнами.

25. Интерполяционный полином Лагранжа.

26. Метод кубической сплайн-интерполяции.

27. Основные операции в вычислительной линейной алгебре.

28. Эффективная реализация алгоритмов вычисления произведения матриц.

Умножение матриц – одна из ключевых операций в линейной алгебре, машинном обучении и научных вычислениях. Для его эффективной реализации создано огромное количество методов.

1. Наивное умножение (стандартный алгоритм).

Пусть есть матрица  размера  и матрица  размером . Матрица  – результат произведения размера :

Для умножения матриц требуется (при ):  умножений и  суммирований  Сложность наивного алгоритма: .

2. Блочное умножение.

С целью повышения эффективности использования кэш-памяти CPU существует алгоритм блочного умножения матриц, в котором результирующая матрица формируется поблочно с использованием известной формулы , либо её более быстрых аналогов, а размер обрабатываемых данных на каждой итерации не превышает ёмкость кэш-памяти. Сложность: .

Размер блока напрямую зависит от архитектуры вычислительной системы и определяет время выполнения умножения. Аналогичный подход применяется при умножении матриц с использованием GPU с оптимизацией использования разделяемой памяти ограниченного объёма.

(по сути то же наивное умножение, но блоками в целях оптимизации затрат памяти и времени)

3. Алгоритм Штрассена (см. вопрос 29).

4. Алгоритм Копперсмита–Винограда.

Алгоритм Копперсмита–Винограда  улучшенная версия Штрассена с вычислительной сложностью . Обладает лучшей асимптотикой среди известных алгоритмов умножения матриц.

На практике алгоритм Копперсмита–Винограда не используется, так как он имеет очень большую константу пропорциональности и начинает выигрывать в быстродействии у других известных алгоритмов только для матриц, размер которых превышает память современных компьютеров.

5. Реализация в numpy.

NumPy использует BLAS (Basic Linear Algebra Subprograms) – высокооптимизированные низкоуровневые библиотеки, предназначенные для выполнения основных операций линейной алгебры.

Сложность: .

Почему NumPy эффективен?

29. Алгоритм Штрассена, сложность метода Штрассена.

Алгоритм Штрассена – рекурсивный алгоритм, предназначенный для быстрого умножения матриц, соответствует идее разделяй и властвуй (т.е. основан на разбиении задачи на более мелкие подзадачи, решение которых потом объединяется для получения решения исходной задачи).

В отличие от традиционного алгоритма умножения матриц (по формуле ), имеющего сложность , сложность алгоритма Штрассена: , что даёт выигрыш на больших плотных матрицах.

Если добавить к матрицам  и  одинаковые нулевые строки и столбцы, их произведение станет равно матрице  с теми же добавленными строками и столбцами. Поэтому можно рассматривать только матрицы размера , а другие случаи сводить к этому добавлением нулей, отчего  может увеличиться лишь вдвое.

Пусть A, B – матрицы размера . Их можно представить как блочные матрицы (матрицы из 4-х блоков) размера () из ()–матриц:

По принципу блочного умножения, матрица  выражается через их произведение:

где в правой части происходит восемь умножений матриц размера .

Для получения итоговой матрицы Штрассен предложил следующий вариант с 7 умножениями и 18 сложениями:

где:

Алгоритм Штрассена:

  1. Разбиваем матрицы  и   размера  на 4 блока размера .
  2. Вычисляем произведения по указанным выше формулам рекурсивно.

Несмотря на то, что алгоритм Штрассена является асимптотически не самым быстрым из существующих алгоритмов быстрого умножения матриц, он проще программируется и эффективнее при умножении матриц относительно малого размера, поэтому именно он чаще используется на практике. Метод Штрассена становится быстрее наивного алгоритма, если .

30. Вычисление SVD.

Сингулярное разложение (Singular Value Decomposition, SVD) – определённого типа разложение прямоугольной матрицы , которое имеет широкое применение и позволяет вычислять сингулярные числа матрицы (они же корни собственных чисел), а также левые и правые сингулярные векторы матрицы (в том числе работает для прямоугольных и вырожденных матриц).

где  – диагональная матрица, элементы главной диагонали которой – сингулярные числа матрицы ; ,  – ортогональные матрицы, элементы которых – левые и правые сингулярные вектора соответственно.

Сингулярное разложение существует для любой матрицы. Его также можно считать способом приведения данной матрицы к диагональному виду с помощью двух унитарных преобразований: .

Теорема. Пусть  – матрица полученная из  заменой части диагональных элементов нулями: . Тогда .

Последнее равенство можно переписать в ещё более экономичном виде: , где матрица  – та же матрица  с первыми  столбцами,  – та же матрица  с первыми  строками, – та же диагональная матрица  обрезанная до размера . Таким образом, при помощи SVD мы можем решать задачу сжатия информации (выделения главной информации, удаление шума).

Алгоритм SVD для матрицы :

  1. Вычисляем матрицу .
  2. Находим собственные значения матрицы  (например, численный итеративный QR-алгоритм).
  3. Находим сингулярные значения  – диагональ сингулярной матрицы .
  4. Находим собственные векторы  матрицы . Столбцы матрицы  – найденные векторы.
  5. Находим левые сингулярные векторы как . Столбцы матрицы  – найденные векторы (или из уравнения ).

(стоит также заметить, что PCA – применение SVD к центрированным данным с последующей аппроксимацией на )

31. Собственные векторы, собственные значения.

Пусть A – действительная числовая квадратная матрица размера (). Ненулевой вектор  размера (), удовлетворяющий условию

 

называется собственным вектором матрицы . Число  в равенстве называется собственным значением. Говорят, что собственный вектор  соответствует (принадлежит) собственному значению .

Последнее равенство равносильно однородной относительно  системе:

Система имеет ненулевое решение для вектора  (при известном ) при условии . Это равенство есть характеристическое уравнение:

.

где  – характеристический многочлен -й степени.

Корни  характеристического уравнения являются собственными (характеристическими) значениями матрицы , а соответствующие каждому собственному значению , ненулевые векторы , удовлетворяющие системе , являются собственными векторами.

Определение в контексте линейных операторов.

Если в линейном пространстве  каждому вектору  по некоторому правилу поставлен в соответствие вектор  этого же пространства, то говорят, что в данном пространстве задан линейный оператор . Т.о., линейный оператор – функция, трансформирующая объект в пространстве.

Условия линейности оператора: для всех :

  1. ;
  2. ).

Собственный вектор – понятие, определяемое для произвольного линейного оператора как ненулевой вектор, применение к которому оператора дает коллинеарный вектор – тот же вектор, умноженный на некоторое скалярное значение (которое может быть равно 0). Скаляр, на который умножается собственный вектор под действием оператора, называется собственным числом (значением) линейного оператора, соответствующим данному собственному вектору. Одним из представлений линейного оператора является квадратная матрица, поэтому собственные векторы и собственные значения часто определяются в контексте использования таких матриц.

У каждой матрицы размера  есть от 0 до  собственных чисел и 0 или собственных векторов.

Задача линейной алгебры состоит в нахождении собственных значений и собственных векторов заданной матрицы.

Особенности собственных векторов и значений:

  1. Если для собственного значения  найден собственный вектор , то вектор , где  – произвольное число, также является собственным вектором, соответствующим этому же собственному значению .
  2. Попарно различным собственным значениям соответствуют линейно независимые собственные векторы; -кратному корню характеристического уравнения соответствует не более  линейно независимых собственных векторов.
  3. Симметрическая матрица (т.е. ) имеет полный спектр действительных собственных значений; -кратному корню характеристического уравнения симметрической матрицы соответствует ровно  линейно независимых собственных векторов.
  4. Множество всех собственных векторов линейного оператора, соответствующих данному собственному числу, дополненное нулевым вектором, называется собственным подпространством этого оператора.

32. Разложение по собственным векторам.

Спектральное разложение матрицы (разложение матрицы по собственным векторам, также называемое каноническим разложением) – это представление квадратной матрицы  в виде произведения трёх матриц:

где  – матрица, столбцы которой являются собственными векторами матрицы ;  – диагональная матрица с соответствующими собственными значениями на главной диагонали;  – матрица, обратная матрице .

Теорема:  – нормальная матрица, тогда и только тогда, когда  , где  унитарна и  диагональна.

Любая нормальная матрица – унитарно диагонализуема. Это означает, что она может быть приведена к диагональному виду с помощью унитарной матрицы . Другими словами, каждая нормальная матрица имеет ортогональный базис из собственных векторов.

Спектральное разложение может использоваться для нахождения собственных значений и собственных векторов матрицы, решения систем линейных уравнений, обращения матрицы, нахождения определителя матрицы и вычисления аналитических функций от матриц. Спектр – множество собственных значений матрицы.

Для динамических систем с матрицей , спектр может много сообщить о поведении системы (например, о её устойчивости). Однако для не нормальных матриц, спектр может быть неустойчивым относительно малых возмущений матрицы. Для измерения подобных возмущений было разработана концепция псевдоспектра. (обобщение спектра для не нормальных матриц). Формально псевдоспектр определяется как: .

Для малых  и нормальных  это круги вокруг собственных значений, для не нормальных матриц, структура может сильно отличаться. Псевдоспектр находится через сингулярное разложение (SVD) матрицы для разных . Для неквадратных матриц вместо спектрального разложения также используют SVD.

Разрешив матричное уравнение  относительно диагональной матрицы, можно получить другое соотношение: .

Диагональную матрицу  также называют матрицей линейного преобразования в базисе из собственных векторов. Одному и тому же линейному преобразованию в разных базисах в общем случае соответствуют разные матрицы (в частности, матрицы  и  в нашем примере). И наиболее удобным из них как раз и является базис из собственных векторов (в случае его существования).

Более того, все матрицы конкретного линейного преобразования в одном и том же векторном пространстве имеют один и то же характеристический многочлен.

33. Задача Google PageRank.

слайды 253-255 презентации

34. Вычисление собственных значений с помощью характеристического многочлена.

35. Особенности степенного метода. Скорость сходимости.

слайды 258-264

36. Круги Гершгорина, теорема Гершгорина.

37. Теорема Шура.

слайды 294-297

38. Нормальные матрицы, унитарно диагонализуемые матрицы, унитарные матрицы, эрмитовы матрицы.

Нормальные матрицы

A – нормальная матрица, тогда и только тогда, когда A = UΛU* , где U унитарна и Λ диагональна.

Матрица A называется нормальной матрицей, если AA* = A*A.

Унитарно диагонализуемые матрицы

Любая нормальная матрица – унитарно диагонализуема. Это означает, что она может быть приведена к диагональному виду с помощью унитарной матрицы U. Другими словами, каждая нормальная матрица имеет ортогональный базис из собственных векторов.

Унитарные матрицы

Пусть U унитарная матрица, то есть U*U = I

Эрмитовы матрицы

Для Эрмитовых матриц собственные значения всегда действительны.

Любая эрмитова матрица диагонализуема

Если матрица 𝐴 симметричная (эрмитова), то 𝐴=𝐴∗ , тогда 𝐻=𝐻∗ и верхне-гессенбергова форма оказывается трёхдиагональной матрицей.

Любая эрмитова матрица может быть приведена к трёхдиагональной форме с помощью отражений Хаусхолдера.

39. Верхне-гессенбергова форма матрицы.

Пусть 𝑄∗𝐴𝑄 = 𝐻 верхне-гессенбергова форма матрицы. Тогда первый столбец матрицы 𝑄 определяет все остальные её столбцы. Он может быть найден из следующего уравнения: 𝐴𝑄 = 𝑄𝐻

Матрица 𝐴 имеет верхне-гессенбергову форму, если 𝑎_𝑖𝑗 = 0, при 𝑖 ≥ 𝑗 + 2.

С помощью отражений Хаусхолдера можно привести любую матрицу к верхнегессенберговой форме: 𝑈∗𝐴𝑈=𝐻.

Если матрица приведена к верхне-гессенберговой форме, то одна итерация QR алгоритма имеет сложность O(n^2) операций.

Также верхне-гессенбергова форма матрицы сохраняется после выполнения одной итерации QR алгоритма.

40. Приведение произвольной матрицы к верхне-гессенберговой форме.

Матрица 𝐴 имеет верхне-гессенбергову форму, если 𝑎𝑖𝑗 = 0, при 𝑖 ≥ 𝑗 + 2.

С помощью отражений Хаусхолдера можно привести любую матрицу к верхнегессенберговой форме: 𝑈∗𝐴𝑈=𝐻.

41. Отношение Релея.

Отношение Рэлея (или коэффициент Рэлея) — это скалярная величина, связанная с матрицей и вектором, которая широко используется в линейной алгебре и численных методах. Оно определяется как отношение двух квадратичных форм, например, для матрицы A и ненулевого вектора  x :

 

где (Ax, x) — скалярное произведение Ax и x, а (x, x) — норма вектора x .

 Основные свойства и применение:

1. Собственные значения и теорема минимакс  

   Отношение Рэлея достигает своего минимума и максимума на собственных векторах матрицы A, соответствующих минимальному и максимальному собственным значениям соответственно. Это положено в основу теоремы Куранта-Фишера, которая связывает отношение Рэлея с собственными числами матрицы.

2. Алгоритмы вычисления собственных значений  

   Отношение Рэлея используется в итерационных методах, таких как метод Рэлея (метод обратной итерации с отношением Рэлея). Этот метод обладает высокой скоростью сходимости и позволяет находить собственные значения и векторы матриц, особенно в сочетании с другими подходами (например, QR-алгоритмом) .  

3. Формализация в математических задачах  

   Для эрмитовых матриц отношение Рэлея позволяет оценить погрешность приближённых собственных значений. Ошибка в отношении Рэлея напрямую связана с близостью вектора к истинному собственному вектору .  

42. Зазор между собственными значениями в матрице, алгоритмы со сдвигами.

Зазор между собственными значениями матрицы — это разность между двумя соседними собственными значениями (например,\lambda_i - \lambda_j). Он играет ключевую роль в устойчивости и скорости сходимости алгоритмов вычисления собственных значений. Чем больше зазор, тем проще отделить собственные значения друг от друга, что особенно важно для численных методов .

Алгоритмы со сдвигами (shifting) используют модификацию матрицы A на величину \sigma (например, A - \sigma I), чтобы сместить собственные значения на \lambda_i - \sigma, сохраняя собственные векторы неизменными. Этот подход позволяет фокусироваться на определённой части спектра или улучшать сходимость методов. Например, в методе QR со сдвигами выбор \sigma, близкого к \lambda_i, ускоряет вычисление близких собственных значений, особенно при малых зазорах между ними .

Для симметричных матриц алгоритм Ланцоша использует сдвиги для ускорения поиска собственных значений в разреженных матрицах. Здесь эффективность зависит от величины зазора: большие зазоры позволяют быстрее сходиться к точным решениям.

Таким образом, зазоры и сдвиги тесно связаны в задачах анализа матриц, где сдвиги служат инструментом для оптимизации работы с собственными значениями, особенно в сложных случаях с близкими значениями спектра.

43. Отражения Хаусхолдера.

Верхнегессенберговая форма:

Аналогично нижняя матрица Хессенберга:

Симметричная матрица:

Единичная матрица I ⇔ Identity Matrix ⇔ матрица с 1 по главной диагонали и нулями в остальных клетках

Эрмитово сопряженная матрица U* ⇔ Транспонированная U с элементами замененными на комплексно сопряженные им (мнимая часть с i умножается на -1)

Унитарная матрица U ⇔

Ортогональная матрица Q ⇔

Общий смысл:

Существует преобразование векторов матрицы, когда зануляются элементы под поддиагональю и собственные значения матрицы не меняются.

Зануление происходит отражением вектора (Hx). Преобразование Хаусхолдера устроено так, что, преобразуя очередной вектор (столбец) матрицы, предыдущие преобразования не портятся. Зануление под диагональю происходит в других алгоритмах (i.e. QR). Почему не занулять сразу под диагональю - QR вычислительно сложный, и эффективнее сначала получить верхнегессенберговую матрицу, потом уже получить треугольную.

При использовании отражения Хаусхолдера на симметричной матрице получается трехдиагональная (на главной диагонали, под и над ней числа, остальное нули).

Отражение Хаусхолдера - матрица H, осуществляющая отражение вектора через гиперплоскость (Hx - отраженный вектор x через гиперплоскость)

 - вектор нормали к гиперплоскости

, - подвектор,  - первый элемент подвектора, ||x|| - евклидова норма вектора без квадрата,  - базисный вектор (единица первый элемент, все остальное нули)

Отражение Хаусхолдера (H) ⇔

Свойства H:

44. Сходимость и сложность QR алгоритма.

Виды сходимости:

         - последовательность, сходящаяся к x*;

Линейная:

Квадратичная:         

Кубическая:

Сходимость алгоритма:

Линейная для исходного алгоритм

Квадратная со сдвигами с несимметричной матрицей

Кубическая со сдвигами с симметричной матрицей

Сложность алгоритма:

QR разложение плотной матрицы NxN (итерация): , итоговая сложность , k - количество итераций

QR разложение трёхдиагональной матрицы NxN (итерация): , со сдвигами число итераций O(n), итоговая сложность

Почему:

Трехдиагональная:

При QR разложении для плотной матрицы обнуляются все элементы для столбца под диагональю, для трехдиагональной это всего 1 элемент.

Сдвиги:

Сдвиги увеличивают относительную разницу между собственными значениями

QR алгоритм чувствителен к отношению собственных чисел. Чем ближе  к нулю тем быстрее сходимость.

Примеры сдвигов:

Рэлея: вычитаем последний элемент

Уилкинсона: вычисляем собственные значения матрицы 2x2 внизу справа через дискриминант, выбираем значение ближайшее к

45. Метод главных компонент и поиск сингулярных значений, прикладные аспекты.

Метод главных компонент ⇔ PCA ⇔ Principal Component Analysis - метод понижения размерности данных и удаления линейных зависимостей путем перевода данных в декартову систему координат, где базисные вектора - собственные вектора.

Реализация для собственных чисел:

1. Стандартизируем данные

2. Вычисляем ков. матрицу

3. Находим собственные значения и вектора ков. матрицы

4. Сортируем по невозростанию собственных значений. Собственные значения показывают какая у компоненты (пара собственное значение/вектор) дисперсия. Чем больше дисперсия компоненты, тем она важнее.

5. Выбираем k первых компонент, они называются главными.

6. Проецируем исходные данные в систему, где базисные вектора - главные компоненты  - собственные вектора, T - спроецированные данные

Реализация через SVD:

1. Центрируем данные

2. Вычисляем SVD

3. Находим собственные значения ков. матрицы  - сингулярное значение,  - собственное значение ковариационной матрицы; Вектора для компонент - V из разложения SVD

4. Сортируем по невозростанию собственных значений. Собственные значения показывают какая у компоненты (пара собственное значение/вектор) дисперсия. Чем больше дисперсия компоненты, тем она важнее.

5. Выбираем k первых компонент, они называются главными.

6. Проецируем исходные данные в систему, где базисные вектора - главные компоненты  - собственные вектора, T - спроецированные данные

Через SVD устойчивее, потому что не вычисляется  - если X имеет малый ранг или содержит маленькие числа значения будут сравнимы с ошибками округления

Выбор k количества компонент:

Обычно выбирают n так, чтобы во включенных компонентах было не меньше 95% дисперсии:

46. Сингулярное разложение (SVD).

 ⇔ левые сингулярные векторы

 ⇔ диагональная матрица сингулярных значений

 ⇔ правые сингулярные значения

 - ортогональные матрицы

Разложение SVD обобщает понятие собственных значений на прямоугольные матрицы, где напрямую собственные значения не найти.

Применения: Поиск информации; веб-поиск; обработка сигналов; анализ больших данных; аппроксимация матриц низкого ранга; минимизация методом наименьших квадратов; псевдообратная матрица и т.д.

Численными методами:

1. Находим

2. Находим собственные значения и вектора у   (QR-алг)

3. Находим сингулярные значения , составляем

4. Вычисляем сингулярные векторы:

V = собственные вектора

U =

Пример разложения в презентации слайд 340

47. Плотные и разреженные матрицы, способы хранения разреженных матриц.

Плотные матрицы - матрицы, где бо́льшая часть элементов ненулевая

Разреженные матрицы - матрицы, где бо́льшая часть элементов нулевая

* Нет четкого количества ненулевых элементов, что делает матрицу разреженной

Т.к. бо́льшая часть разреженной матрицы - нули, их можно игнорировать, тем самым сэкономив место и ускорив их последующую обработку.

Форматы хранения:

* Coordinate Format (COO)

Хранит ненулевые элементы в виде трёх массивов:

values — значения ненулевых элементов,

row_indices — номера строк,

col_indices — номера столбцов.

Плюсы: Простота добавления элементов.

Минусы: Неэффективен для арифметических операций.

* Compressed Sparse Row (CSR)

Оптимизирован для строк.

Использует три массива:

values — ненулевые элементы,

col_indices — индексы столбцов,

row_ptr — указатели на начало строк в values и col_indices.

Плюсы: Эффективен для умножения матрицы на вектор.

Минусы: Долго добавлять элементы. (Если добавить новый элемент в строку i, то все indptr[j] для j > i нужно увеличить на 1. Это O(N) операция (где N — число строк).)

* Compressed Sparse Column (CSC)

Аналог CSR, но для столбцов.

Три массива:

values — ненулевые элементы,

row_indices — индексы строк,

col_ptr — указатели на начало столбцов.

Плюсы: Эффективен для операций по столбцам.

Минусы: Долго добавлять элементы (аналогично CSR)

* Diagonal Storage (DIA)

Используется для матриц с диагональной структурой.

Хранит ненулевые элементы вдоль диагоналей.

Плюсы: Эффективен для СЛАУ с диагональным преобладанием.

Минусы: Не подходит для произвольных разреженных матриц.

* ELLPACK (ELL) (LIL в scipy)

Хранит ненулевые элементы в двумерном массиве, дополняя короткие строки.

Плюсы: Хорош для GPU-оптимизаций.

Минусы: Неэффективен при сильном разбросе длины строк.

48. Обыкновенные дифференциальные уравнения, численное дифференцирование. Типы ОДУ.

Обыкновенное дифференциальное уравнение (ОДУ) – это уравнение, связывающее неизвестную функцию 𝑦 = 𝑦(𝑥) с её производными по одной независимой переменной 𝑥. Формально ОДУ записывается как: 𝐹(𝑥, 𝑦, 𝑦′, 𝑦″, … ,  ) = 0,
где 𝑦′ , 𝑦″ , … ,
 — первая, вторая, ..., 𝑛-ная производные функции 𝑦, а 𝐹 — заданное выражение. Порядок ОДУ определяется наивысшей производной, входящей в уравнение.

Численное дифференцирование – процесс приближённого вычисления производной функции на основе её дискретных значений.
Важность:
– Используется, когда аналитические производные недоступны (например, функция задана сложным выражением или известна только по точкам).
– Применяется в задачах с дискретными данными (например, экспериментальные измерения).
Цель: Вычислить 𝑓′(
) в точке  с заданной точностью.
Основные понятия:
– Сетка: Набор точек
 на отрезке [𝑎, 𝑏], где известны 𝑓()
– Шаг сетки:
 =  − , может быть постоянным или переменным
– Точность: Ошибка приближения ≤
, где 𝐶 – константа, ℎ – шаг, 𝑡 – порядок точности

P.S. Представьте, что у вас есть график функции, но вы знаете её значения только в некоторых точках. Численное дифференцирование помогает найти наклон этого графика (производную) в этих точках, используя разницу между значениями функции. Это как если бы вы измеряли скорость автомобиля по его положению в разные моменты времени.

Типы ОДУ:
- По порядку: первого порядка (𝑦′), второго порядка (𝑦″) и т.д.
- По линейности: линейные (производные входят линейно) и нелинейные.
- По типу: автономные (не зависят явно от 𝑥) и неавтономные.

Примеры ОДУ:
1. Первого порядка:
= −𝑘𝑦, описывающее экспоненциальный распад, где 𝑘 > 0.
2. Второго порядка:
, уравнение гармонического осциллятора,
моделирующее колебания.

49. Метод прямой разности, метод обратной разности, метод центральной разности.

Методы прямой, обратной и центральной разностей используются для численного приближения производных в дифференциальных уравнениях, заменяя их разностными аналогами на сетке, чтобы упростить решение.

Метод прямой разности:
Точки: , .
Разложение Тейлора:
.

Приближение:
.
Остаточный член:
остаток =

Ошибка:
, где
Точность: O(h).

Метод обратной разности:
Точки: , .
Приближение:
.
Остаточный член:
остаток =

Ошибка аналогична прямой разности с подстановкой нового приближения и остатка.
Точность: O(h).

Прямая разность – как будто вы смотрите, насколько функция выросла вперёд от точки, и делите на расстояние. Обратная — то же самое, но назад. Ошибка зависит от того, насколько функция “кривая” (вторая производная), и уменьшается, если шаг маленький. Остаточный член − показывает, что мы отбросили часть информации о кривизне функции. Чем больше вторая производная и шаг h, тем больше ошибка.

Метод центральной разности:
Точки: , .
Для равномерной сетки (
=h):
.
Вывод:
Разложения Тейлора:
.
.
Вычитание:
.
Приближение:
.
Остаточный член:
остаток =

Ошибка:
, где .
Точность: O(
).

Центральная разность смотрит на изменение функции сразу с двух сторон точки, что делает её точнее. Ошибка меньше, потому что она зависит от , а не просто ℎ. Остаток  возникает из-за третьей производной, которую мы игнорируем. Если функция почти прямая (маленькая 𝑓‴), ошибка будет очень маленькой.

Требования:
Прямая разность: Вторая производная должна быть непрерывной.
Центральная разность: Третья производная должна быть непрерывной.

Замечание: Гладкость функции критически влияет на точность. Для функций с разрывами или резкими изменениями точность может снижаться. Чем более гладкая функция (меньше резких скачков), тем лучше работают эти методы. Остаточные члены показывают, от чего зависит ошибка: от шага и производных.

Остаточные слагаемые возникают из разложения Тейлора, когда мы отбрасываем высшие члены. Для прямой разности ошибка линейна (ℎ), для центральной — квадратична ().

50. Локальная и глобальная ошибки, правило Симпсона, ошибка сокращения и ошибка округления, накопление ошибок.

Локальные погрешности – погрешности, образовавшиеся на каждом шаге,

Глобальная (накопленная) погрешность – погрешность, образовавшаяся за несколько шагов.

Порядок глобальной погрешности относительно шага интегрирования на единицу ниже, чем порядок локальной погрешности. Таким образом, глобальная погрешность метода Эйлера имеет порядок p = 1:  = C ∙ h, где C – некоторая постоянная.

Порядок численного метода для решения ОДУ определяется порядком его глобальной погрешности. Он может быть также определен, как количество вычислений значения производной f(x, y) искомой функции на каждом шаге. В соответствии с этим метод Эйлера является методом первого порядка.

Правило Симпсона  это численный метод приближённого вычисления определённых интегралов, основанный на квадратичной интерполяции подынтегральной функции. Его суть заключается в том, что вместо интегрирования исходной функции мы заменяем её на параболу, проведённую через три точки на равномерной сетке, и вычисляем площадь под этой параболой аналитически. Формула Симпсона для отрезка

[a,b] имеет вид:

.

Этот метод особенно эффективен, когда подынтегральная функция гладкая или её можно разбить на такие отрезки, где она ведёт себя почти как квадратичная. Правило Симпсона обеспечивает высокую точность — его погрешность имеет порядок O() для одного отрезка и O() для составного правила (где h — шаг разбиения), что значительно лучше методов прямоугольников или трапеций.

Применять его стоит, когда требуется высокая точность при относительно небольшом количестве вычислений, например, при интегрировании аналитических функций или в инженерных расчётах. Однако если функция имеет резкие колебания или разрывы, лучше использовать другие методы или предварительно разбивать интервал на части.

В более широком смысле "правило Симпсона" иногда называют принципом, что использование квадратичной аппроксимации часто даёт оптимальный баланс между точностью и вычислительными затратами. Отсюда возможная связь с анализом ошибок.

Ошибка сокращения (или ошибка усечения) возникает из-за приближённого характера численных методов, когда бесконечные процессы заменяются конечными или сложные функции — более простыми. Например, при вычислении производной с помощью разностной схемы отбрасываются старшие члены ряда Тейлора, что приводит к неточности. Эта ошибка зависит от выбранного метода и шага вычислений: чем точнее алгоритм и мельче шаг, тем она меньше.

Однако уменьшение шага может усилить другой тип погрешности — ошибку округления, связанную с конечной точностью представления чисел в компьютере. При выполнении арифметических операций (особенно при вычитании близких чисел или сложении значений сильно разного масштаба) младшие значащие разряды теряются из-за ограниченной разрядности мантиссы, что искажает результат.

Накопление ошибок это процесс, при котором малые погрешности на каждом шаге алгоритма суммируются или усиливаются, приводя к значительному отклонению итогового значения. Например, при последовательном сложении тысяч чисел даже очень маленькие округления могут существенно изменить сумму.

Для борьбы с этим используют специальные алгоритмы, такие как алгоритм Кахана. Его идея заключается в отслеживании и компенсации потерянных из-за округления частей чисел. На каждом шаге кроме основного суммирования вычисляется "погрешность"  разница между тем, что должно было добавиться, и тем, что действительно добавилось с учётом ограниченной точности. Эта погрешность затем учитывается на следующей итерации. Таким образом, алгоритм Кахана значительно снижает ошибку накопления, особенно в задачах с большим количеством операций, например, при вычислении скалярных произведений или численном интегрировании.

Полностью устранить ошибки невозможно, но грамотный выбор методов (например, алгоритм Кахана для суммирования) позволяет минимизировать их влияние. Это особенно критично в долгих вычислениях, таких как решение дифференциальных уравнений или моделирование физических процессов, где накопленные погрешности могут привести к качественно неверным результатам.

51. Сетка дифференцирования.

Сетка дифференцирования – это набор точек  на отрезке [𝑎, 𝑏], где для каждой точки известны соответствующие значения функции 𝑓(.
Пример сетки: сетка на [0, 1] с шагом h = 0.1:
 = {0, 0.1, 0.2 … 1}, где для каждой точки  известны соответствующие значения функции.

Значения функции могут быть заданы аналитически (формулой), таблично или являться результатами вычислений. Численные методы дифференцирования используют эти значения 𝑓(, чтобы приблизить производные, например:
 где  и  - известные значения функции в соседних узлах сетки.
Шаг сетки:
=  , может быть постоянным или переменным.
Типы сеток:
– Равномерная:
 = ℎ = const.
– Неравномерная:
 =  −  варьируется.

52. Фазовые портреты, особые точки.

Фазовый портрет – это графический способ представления всех возможных траекторий системы дифференциальных уравнений в фазовом пространстве. Он помогает понять поведение системы без необходимости решать уравнения аналитически.

Фазовое пространство – пространство состояний системы. Для системы из двух уравнений это двумерная плоскость, где оси соответствуют переменным системы (например, (x) и (y)).

Траектории – кривые, показывающие, как изменяется состояние системы со временем при разных начальных условиях.

Особые точки – состояния, где производные равны нулю. Они определяют устойчивость и тип поведения системы.

Примеры (в matploblib можно и не вставлять):

Что показывает фазовый портрет?
- Эволюцию системы во времени.
- Устойчивые и неустойчивые состояния.
- Типы поведения: колебания, затухание, рост.

Типы особых точек:
- Узел: траектории сходятся к точке (устойчивый узел) или расходятся от неё (неустойчивый узел).
- Фокус: траектории закручиваются в спираль (если к центру - то в устойчивую спираль, если от центра - то в неустойчивую).
- Седло: траектории приближаются по одним направлениям и удаляются по другим.

53. Неявные и явные методы численного дифференцирования.

54. Многошаговые методы решения обыкновенных дифференциальных уравнений.

55. Использование адаптивного шага.

56. Понятия согласованности, устойчивости, сходимости алгоритмов.

57. Строгая и нестрогая (слабая) устойчивость.

58. Детерминированный хаос, бифуркация, странные аттракторы.

Детерминированный хаос:

Примечание: Детерминированность (или определенность) - подразумевается, что в алгоритме определен каждый шаг, то есть сколько бы раз мы его не повторили, получим один и тот же результат.

Детерминированный хаос - это явление, когда динамическая система, несмотря на определенность начальных условий и детерминированных законов, является сложной, из-за чего кажется хаотичной и проблемной в предсказании поведения.

Характеристики таких систем:

        Бифуркация:

В широком смысле: Бифуркация — это качественное изменение поведения динамической системы при бесконечно малом изменении её параметров, когда её параметры проходят через некоторые бифуркационные (критические) значения. Эти значения еще называют точками бифуркации.

В узком смысле: Бифуркация - это раздвоение.

Простыми словами, бифуркация - это моменты, когда поведение системы резко меняется. Двойной маятник неплохо это отображает: сначала вся тысяча маятников (видео со слайда 566) двигается одинаково, а потом происходит абсолютно разное движение.

Бифуркационная диаграмма - представление любого характеристического свойства решения как функции критического параметра.

Пример:

Бифуркация подразделяется на:

        Сценарий - последовательность бифуркаций, качественно меняющих свойства системы.

Странные аттракторы:

Аттрактор (или точка притяжения) - точка бифуркации, из которой все исходящие решения устойчивы (по сути - рисунок выше).

Странный аттрактор — это притягивающее множество целых неустойчивых траекторий в фазовом пространстве динамической системы. Данные аттракторы выглядят как сложные фрактальные узоры. Примеры: аттрактор Лоренца (слайды 580-581), аттрактор Рёсслера (слайд 582).

59. Амплитуда, период, частота, длин волны, дискретизация, частота дискретизации, герц, угловая частота, фаза сигнала.

Амплитуда - разница между максимальным значением и базовой линией.

Период волны - время, за которое волна проходит полный цикл.

Частота - количество волн, проходящих через фиксированное место за определенное время. Измеряется в количестве циклов за 1 секунду. Единицей является Герц.

Период = 1 / Частота

Длина волны - расстояние между двумя последовательными гребнями.

Дискретизация - как часто мы измеряем значения волны во времени.

Частота дискретизации - скорость дискретизации, измеряется в Гц.

Герц - частота колебаний за одну секунду (например если мы дискретизируем волну с частотой 2 Гц, значит, каждую секунду мы фиксируем два значения).

Угловая частота - количество циклов за секунду. Измеряется в радианах в секунду.

Фаза сигнала - это положение волны во времени относительно точки отсчета, отвечает за сдвиги волн вправо-лево. Измеряется в градусах или радианах.

60. Амплитудный спектр и частотный спектр.

Амплитудный спектр - совокупность амплитуд гармоник ряда Фурье.

Частотный спектр - совокупность частот амплитуд гармоник ряда Фурье.

61. Фильтрация сигналов.

Большинство фильтров работают не с самим сигналом, а с его спектром. Если вычислить спектр сигнала, удалить из него (или существенно уменьшить) определенные частоты, а затем выполнить обратное преобразование Фурье, то результатом будет фильтрованный сигнал. Эта процедура производится в тех случаях, когда частотный спектр помехи или шума занимают на оси частот интервал, отличный или лишь частично перекрывающийся с частотным диапазоном сигнала.

Математическая абстракция и преобразование Фурье не применимы к реальным сигналам в силу их ограниченности по времени и, следовательно, непериодичности, однако их можно рассматривать как периодические с периодом T → ∞. Тогда ω0=2π/T → 0, а спектры амплитуд и фаз становятся непрерывными (сплошными), сумма в разложении Фурье превращается в интеграл и в результате переходим к интегралу Фурье.

Разложению в ряд Фурье могут подвергаться периодические сигналы. При этом они представляются в виде суммы гармонических функций либо комплексных экспонент (e^(2πνt)) с частотами, образующими арифметическую прогрессию. Чтобы такое разложение существовало, фрагмент сигнала длительностью в один период должен удовлетворять условиям Дирихле, а также сигнал должен быть абсолютно интегрируемым, т.е. интеграл его модуля должен быть конечной величиной.

Условия Дирихле - во фрагменте сигнала длительностью в один период:

В итоге для работы применяются дискретное или быстрое преобразование Фурье.

Прямое преобразование Фурье – это разложение сигнала на гармонические функции (в спектр).

 Обратное преобразование Фурье – это синтез сигнала по гармоникам.

Преобразование Фурье ставит в соответствие сигналу, заданному во времени, его спектральную функцию, т.е. осуществляется переход из временной области в частотную. Преобразование Фурье является взаимно-однозначным, поэтому представление сигнала в частотной области (т.е. спектральная функция) содержит столько же информации, сколько и исходный сигнал, заданный во временной области.

62. Применение преобразований Фурье с целью анализа сезонности во временных рядах.

Примечание: про само преобразование в вопросе выше.

Применение преобразования Фурье во временных рядах позволяет выявить периодические компоненты, даже если они скрыты шумом или другими колебаниями.

Основная идея применения - разложение ряда на сумму гармонических колебаний разных частот для определения основных частот сезонных колебаний (например, суточных, недельных, годовых циклов) и амплитуд гармоник.

Основные этапы включают:

  1. Проверка на стационарность и, если есть, удаление тренда;
  2. Применение преобразования Фурье;
  3. Нахождение спектра мощности, где пики будут соответствовать основным частотам сезонности;
  4. Удаление пиков по определенному порогу;
  5. Выполнение обратного преобразования Фурье;
  6. Построение модели и сглаживание остатков.