Смекни!
smekni.com

Методы решения краевых задач, в том числе "жестких" краевых задач (стр. 9 из 9)

Рассмотрим случай A=const и F≠0.

Введем в рассмотрение вектор-функцию Ya(x) в виде: Y(x)= e

Ya(x). (7)

Продиффренцируем (7) и подставим в (1). Получим:

e

Ya
(x) = F(x). (8)

При получении (8) учитывалось, что:

=
= A + A
x + A
x
/2! + … = Ae
.

Из (8) следует, что:

Ya(x) = c +

. (9)

Подставим в (7) и получаем:

Y(x) = e

c + e
. (10)

Положив x=x

в (10) получим:

c = e

Y(x
). (11)

Окончательно получаем:

Y(x) = e

Y(x
) + e
. (12)

Мой отец предложил использовать и другую (гораздо более эффективную по времени счета) матричную формулу вместо матричной экспоненты – что-то на основе Вольтерра. Это есть в статье в журнале «Математическое моделирование»:

Численный метод переноса краевых условий для жестких дифференциальных уравнений строительной механики Журнал "ММ", Том: 14 (2002), Номер: 9, 3 стр. 1409-003r.pdf

Я тут как-то на днях поговорил с отцом и вот что любопытное насчет метода выяснилось.

Когда я сам решал своим методом «переноса краевых условий» «жесткие» краевые задачи, то я в каждой рассматриваемой точке x=x* решал соответствующую систему линейных алгебраических уравнений для нахождения решения Y(x*) в каждой рассматриваемой точке x=x*.

А мой отец утверждает, что «жесткими» бывают только краевые задачи, а начальные задачи «жесткими» не бывают. И поэтому он находил решение Y(x*) в какой-то одной точке x=x* по моему методу, а дальше решал (влево и вправо от рассматриваемой точки x=x*) как задачу Коши (от найденных начальных условий Y(x*) в этой одной точке): Y(x)=K(х←x*)·Y(x*)+Y*(x←x*). И если это так, то так решать, естественно, гораздо быстрее, так как надо только домножать на матрицу Коши (матрициант, матричную экспоненту) вместо решения систем линейных алгебраических уравнений.

Я думаю, что это очень существенное уточнение по скорости счета.

P.P.P.S. Метод решения «жестких» начальных задач, то есть «жестких» задач Коши. Придуман вечером 16 января 2008 года.

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

Пусть дана начальная задача:

Y

(x) = A·Y(x), Y(0) = Yнач,

Можем записать:

Y(0) = K(0←x) · Y(x),

K(0←x) · Y(x) = Yнач

K(0←x3) · K(x3←x2) · K(x2←x) · Y(x) = Yнач

[ K(0←x3) ] · { K(x3←x2) · K(x2←x) · Y(x) } = Yнач

[ матрица ] { вектор } вектор

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

[ K(0←x3) ]орт · {K(x3←x2) · K(x2←x) · Y(x)} = Yнач_орт

Аналогично записываем

[[ K(0←x3) ]орт · K(x3←x2) ] ·{ K(x2←x) · Y(x) } = Yнач

[ матрица ] { вектор } вектор

Далее выполняем построчное ортонормирование и получаем:

[[ K(0←x3) ]орт · K(x3←x2)]орт · {K(x2←x) · Y(x)} = Yнач_2орт

Аналогично получаем

[[ K(0←x3) ]орт · K(x3←x2)]орт · K(x2←x)]орт · Y(x) = Yнач_3орт


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

P.P.P.P.S. 11 сентября 2009:

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

Начальные условия имеют вид:

Y(0) = Yнач.

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

(x) = A · Y(x) + F(x) имеет вид:

Y(x) = K(x←0) · Y(0) + Y*(x←0).

Или можно записать:

Y(0) = K(0←x1) · Y(x1) + Y*(0←x1).

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

K(0←x1) · Y(x1) + Y*(0←x1) = Yнач

или

K(0←x1) · Y(x1) = Yнач - Y*(0←x1)

или

K1 · Y(x1) = Y1.

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

K1орто · Y(x1) = Y1орто.

Тогда

Y(x1) = (K1орто)транспонир · Y1орто.

Подставим вместо Y(x1) выражение через Y(x2) и получим:

K(x1←x2) · Y(x2) + Y*(x1←x2) = (K1орто)транспонир · Y1орто

или

K(x1←x2) · Y(x2) = (K1орто)транспонир · Y1орто - Y*(x1←x2)

или

K2 · Y(x2) = Y2.

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

K2орто · Y(x2) = Y2орто.

Тогда:

Y(x2) = (K2орто)транспонир · Y2орто.

И так далее.

P.P.P.P.P.S. Метод для численного интегрирования дифференциальных уравнений.

Читали нам как-то в бауманке численные методы решения дифференциальных уравнений. И, кажется, приводили аналитический вывод формул одного из авторов. Или это просто мелькнуло в учебнике (я имею в виду вывод формул). Уже не очень помню. Запомнилась только собственная мысль, что людям вообще-то проще всего даются геометрические аналогии и выводы, сделанные на основе понятных геометрических картинок. Ну, вот тогда я и нарисовал один из вариантов численного решения дифференциальных уравнений и помню даже перевёл геометрические картинки в буквенные формулы приближённых вычислений. Сейчас повторно выводить буквенные формулы для численного интегрирования дифференциальных уравнений мне не кажется интересным. А вот привести картинки тех студенческих мыслей вполне можно для обсуждения.

Далее идёт картинка с текстом и с рисунками численного интегрирования: