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

Как не стоит вычислять матричную экспоненту

Пост написан под влиянием поста пользователя pchelintsev_an.

В данной статье я постараюсь рассказать, с какими вычислительными трудностями можно столкнуться, если пойти по «наивному» пути вычисления матричной экспоненты. Статья может быть полезна тем, кто хотел бы познакомиться с вычислительной математикой, но уже знаком с такими понятиями как система обыкновенных дифференциальных уравнений и задача Коши. Эксперименты проводились с использованием системы GNU Octave.

Что вообще такое матричная экспонента и для чего она применятеся

Матричная экспонента возникает при рассмотрении задачи Коши для линейной системы обыкновенных дифференциальных уравнений с постоянными коэффициентами:

Иногда такие системы возникают после частичной дискретизации уравнений в частных производных, например, в методах конечных элементов. Тогда матрица A является некоторой конечномерной аппроксимацией дифференциального оператора. Как следствие, число строк матрицы A может легко достигать тысяч, миллионов и даже нескольких миллиардов. Такие матрицы даже невозможно хранить в виде квадратного массива, поэтому их хранят в специальных разреженных форматах представления.

Решение системы ОДУ можно выписать явно:

Здесь появляется матричная экспонента, которая определяется как сумма ряда:

Фактически, матричная экспонента получается формальной подстановкой матрицы A в ряд Тейлора для e z (Математик отметит, что ряд сходится абсолютно для любой матрицы и любого t). Удобно то, что с помощью матричной экспоненты можно вычислить решение в любой момент времени t. Например, если эту систему решать каким-нибудь методом численного интегрирования, например, Адамса или Рунге-Кутты, то затраченное время будет пропорционально времени t. Однако, решение через матричную экспоненту возможно лишь для автономных систем с постоянными коэффициентами.

В курсе дифференциальных уравнений для практических вычислений матричной экспоненты предлагается метод приведения матрицы к жордановой форме: если матрицу A представить в виде S J S -1 , где J – жоржанова форма, S – матрица перехода к жорданову базису, то матричная экспонента А выражается через матричную экспоненту J:

Матричная экспонента от жордановой матрицы J выписывается в явном виде. Однако такой способ требует вычисления системы собственных векторов, а также присоединенных к ним векторов. Эта задача значительно сложнее исходной. К тому же, даже для действительной матрицы А, ее жорданова форма J может быть комплексной.

Суммирование ряда

Итак, у нас есть бесконечный ряд и желание вычислить его за обозримое время. Очевидный путь – закончить суммирование на каком-то слагаемом, отбросив остаток. При этом суммирование ряда заканчивается, если очередное k-е слагаемое по норме мало:

Нормы матрицы

Остановимся ненадолго на норме матрицы. Различных норм матрицы существует достаточно много. Можно ввести норму, исходя из требования

В этом случае говорят о норме матрицы индуцированной (или подчиненной) некоторой векторной норме. Для наиболее употребимых векторных норм соответствующие матричные нормы имеют вид:

Первые две нормы матрицы считаются элементарно, а для последней требуется вычислить сингулярное число, что весьма непросто. Кроме индуцированных норм существует еще ряд других норм. Практически удобной является норма Фробениуса, которая, с одной стороны, легко вычисляется, а с другой – тесно связана с сингулярными числами А. Фактически, это евклидова норма вектора, полученного «вытягиванием» матрицы в одну строку:

Сюрпризы при суммировании ряда

Чтобы осознать сложности, возникающие при суммировании рядов Тейлора, не обязательно обращаться к примеру с матричной экспонентой. Попробуем просто построить график функции e -x на отрезке [0, 50], суммируя аналогичным образом ряд Тейлора для экспоненты. Суммирование завершим, если очередное слагаемое не превосходит 10 -20 . Воспользуемся следующим кодом на Octave:

Результат получается довольно странным:

При x > 30 график функции начинает вести себя хаотично и не имеет с экспонентой ничего общего.

Причина данного эффекта в накоплении погрешностей округления. Например, при вычислении e -35 было просуммировано 132 слагаемых, из которых минимум абсолютной величины имело последнее слагаемое s132 ≈ 5.8674 · 10 -21 , а максимум абсолютной величины имело слагаемое с номером 35: s35 ≈ -1.067 · 10 14 . Поскольку Octave проводит вычисления с двойной точностью (примерно 16 значащих цифр), округление 35-го слагаемого уже внесло ошибку порядка 0.01, что существенно превосходит и значение ϵ = 10 -20 и само значение суммы ряда e -35 ≈ 6.305 · 10 -16

Неужели ряд Тейлора настолько безнадежен? Нет, ошибки округления не будут давать существенного вклада, если величина суммируемых слагаемых не будет достигать таких огромных значений. Например, такой алгоритм будет надежно работать при небольших значениях x (|x| ≲ 1). Для матричной экспоненты аналогичное условие имеет вид . Кроме вычислительной устойчивости такой выбор x обеспечивает быструю сходимость, то есть достаточно взять всего несколько слагаемых из ряда для получения приемлемой точности.

Метод удвоения аргумента

Заметим, что матричная экспонента удовлетворяет следующему соотношению:

Это означает, что матричную экспоненту можно посчитать для матрицы , а затем возвести результат в степень N. Взяв в качестве N = 2 p можно воспользоваться быстрым алгоритмом возведения в степень за p матричных умножений:

  1. Вычислить матричную экспоненту
  2. Умножить B на себя , повторив эту операцию p раз
  3. В результате,

Число p можно (и нужно) выбрать из соображений вычислительной устойчивости шага 1 алгоритма, то есть

Соответствующий Octave код:

Метод аппроксимаций Паде

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

Аналогичная аппроксимация для матричной экспоненты будет иметь вид:

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

Анализ точности

Как убедиться, что матричная экспонента вычислена правильно? Достаточно ли, что или требуется более «интеллектуальная» проверка?

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

описывает систему с одним быстро затухающим процессом (собственное значение -1000) и двумя колебательными процессами (собственные значения ±i). Хорошим критерием правильности вычисления матричной экспоненты может являться соотношение:


связывающее собственные значения матрицы A и ее матричной экспоненты.

Вычислительный эксперимент

Для начала исследуем алгоритмы на быстродействие на случайных матрицах разного размера. В качестве методов используем метод суммирования ряда Тейлора, метод удвоения аргумента и встроенную в Octave функцию expm. Изначально хотелось сравнить также соответствие собственных значений, но от этой идеи пришлось отказаться, поскольку все три алгоритма одинаково проваливали эту проверку при размерах матрицы N ≳ 50. Возможно виновником этого была функция определения собственных значений eig, работающая недостаточно точно или плохая обусловленность самой задачи определения собственных значений для этих матриц.

Исходя из графика, метод удвоения работает примерно вдвое дольше библиотечной функции (возможно стоит ослабить завышенное требование по точности), в то время как прямое суммирование имеет даже иную асимптотику ≈O(N 3.7 ), в то время, как остальные имеют асимптотику O(N 3 ).

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


С начальным условием:

.

Её особенность в том, что одно из ее собственных значений равно -1000 (быстро затухающее решение), а два других равны ±i√2 (колебательные решения). Если в мнимые собственные значения будут внесены искажения, это будет хорошо заметно. Возьмем шаг по времени τ = 0.038, найдем матричную экспоненту разными способами. Решение системы на сетке с шагом τ получается следующим простым алгоритмом:

  1. Решение в начальный момент известно из начального условия
  2. Зная решение un в момент tn, решение в момент tn+1 = tn + τ получается из него умножением на матричную экспоненту B:

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

    Все траектории, кроме полученной с помощью прямого суммирования ряда Тейлора, визуально совпадают. Обратите внимание, график не выходит из начального условия x1(0) = 1. На самом деле, график экспоненциально подходит к точке y = 1, просто характерное расстояние «поворота» графика (∼ 1 / 1000) намного меньше шага по времени τ = 0.038.

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

    Дальнейшее чтение

    О различных способах вычисления матричной экспоненты можно почитать в статье (англ.) [2]. По методам решения обыкновенных дифференциальных уравнений и жестких задач написан замечательный двухтомник [3,4]

    Решение систем дифференциальных уравнений матричным способом

    Вы будете перенаправлены на Автор24

    Матричная запись системы обыкновенных дифференциальных уравнений (СОДУ) с постоянными коэффициентами

    Линейную однородную СОДУ с постоянными коэффициентами $\left\<\begin <\frac> =a_ <11>\cdot y_ <1>+a_ <12>\cdot y_ <2>+\ldots +a_ <1n>\cdot y_ > \\ <\frac> =a_ <21>\cdot y_ <1>+a_ <22>\cdot y_ <2>+\ldots +a_ <2n>\cdot y_ > \\ <\ldots >\\ <\frac> =a_ \cdot y_ <1>+a_ \cdot y_ <2>+\ldots +a_ \cdot y_ > \end\right. $,

    где $y_ <1>\left(x\right),\; y_ <2>\left(x\right),\; \ldots ,\; y_ \left(x\right)$ — искомые функции независимой переменной $x$, коэффициенты $a_ ,\; 1\le j,k\le n$ — заданные действительные числа представим в матричной записи:

    Теперь на основе правила умножения матриц данную СОДУ можно записать в виде матричного уравнения $\frac =A\cdot Y$.

    Общий метод решения СОДУ с постоянными коэффициентами

    Решение СОДУ отыскивается в следующем виде: $y_ <1>=\alpha _ <1>\cdot e^ $, $y_ <2>=\alpha _ <2>\cdot e^ $, \dots , $y_ =\alpha _ \cdot e^ $. В матричной форме: $Y=\left(\begin > \\ > \\ <\ldots >\\ > \end\right)=e^ \cdot \left(\begin <\alpha _<1>> \\ <\alpha _<2>> \\ <\ldots >\\ <\alpha _> \end\right)$.

    Теперь матричному уравнению данной СОДУ можно придать вид:

    Полученное уравнение можно представить так:

    Последнее равенство показывает, что вектор $\alpha $ с помощью матрицы $A$ преобразуется в параллельный ему вектор $k\cdot \alpha $. Это значит, что вектор $\alpha $ является собственным вектором матрицы $A$, соответствующий собственному значению $k$.

    Готовые работы на аналогичную тему

    Это уравнение называется характеристическим.

    Одно из значений в этой матрице выбирают произвольно.

    Окончательно, решение данной системы в матричной форме записывается следующим образом:

    где $C_ $ — произвольные постоянные.

    Записываем матрицу системы: $A=\left(\begin <5>& <4>\\ <4>& <5>\end\right)$.

    Получаем характеристическое уравнение:

    Корни характеристического уравнения: $k_ <1>=1$, $k_ <2>=9$.

    Получаем решение СОДУ в матричной форме:

    В обычной форме решение СОДУ имеет вид: $\left\<\begin =C_ <1>\cdot e^ <1\cdot x>+C_ <2>\cdot e^ <9\cdot x>> \\ =-C_ <1>\cdot e^ <1\cdot x>+C_ <2>\cdot e^ <9\cdot x>> \end\right. $.

    Получи деньги за свои студенческие работы

    Курсовые, рефераты или другие работы

    Автор этой статьи Дата последнего обновления статьи: 19 01 2022

    Решение систем дифференциальных уравнений матричным способом

  • Запишем систему обыкновенных дифференциальных уравнений

    в матричном виде:

    , где .

    Рассмотрим матричный метод решения систем. Ограничимся однородными системами. Пусть

    однородная система. Находим корни характеристического уравнения

    .

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

    Пример 1 Решить систему дифференциальных уравнений

    .

    Составим характеристическое уравнение

    Его корни . Находим собственные , отвечающие этим собственным значениям

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

    Решение соответствующее второму собственному значению такое: .

    Наконец, находим третье решение:

    Таким образом, третий собственный вектор можно взять и третье решение: .

    Общее решение запишем в векторном виде:

    .

    Пример 2 Решить систему дифференциальных уравнений .

    Составляем характеристическое уравнение:

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

    Ищем собственные векторы:

    .

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

    Таким образом, общее решение системы:

    .

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

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

    Пример №1 Постройте центральную симметрию тетраэдра, относительно точки O, изображенных на рисунке 3.

    Для построения такой центральной симметрии сначала проведем через все точки тетраэдра прямые, каждая из которых будет проходить через точку O. На них построим отрезки, удовлетворяющие условиям |AO|=|A?O|, |BO|=|B?O|, |CO|=|C?O|, |DO|=|D?O| Таким образом, и получим искомую симметрию (рис. 4).

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

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

    Совет №1 Велосипедист, имеющий скорость 300 м/с, или идеальный газ, оказывающий давление 100 паскалей в большой тепловой машине — это странно.

  • Нужна помощь с курсовой или дипломной работой?


    источники:

    http://spravochnick.ru/matematika/differencialnye_uravneniya/reshenie_sistem_differencialnyh_uravneniy_matrichnym_sposobom/

    http://khab.work5.ru/spravochnik/matematika/reshenie-sistem-differenczialnykh-uravnenij-matric