
Получение аналитического приближенного решения обыкновенного дифференциального уравнения в виде частичной суммы ряда Тейлора функции решения
Общее количество использованных в посте встроенных функций или символов: 82
Список имен используемых встроенных функций и символов в порядке их появления в коде:
DSolve | Equal (==) | Plus (+) | Derivative (') | Set (=) | List ({...}) | NDSolve | Panel | Grid | Plot | Evaluate | ReplaceAll (/.) | Rule (->, ->) | ImageSize | PlotStyle | Thick | PlotLabel | Style | FontFamily | Bold | TicksStyle | Directive | AxesStyle | Arrowheads | AxesLabel | Map (/@) | Function (&) | Slot (#) | Italic | Times (*, ×) | Log10 | Abs | PlotPoints | Frame | All | Manipulate | Power (^) | E (e) | Sum (∑) | Factorial (!) | PlotRange | AspectRatio | PlotLegends | Placed | Above | WorkingPrecision | Appearance | Infinity | Simplify | Out (%) | Part ([[…]]) | SetDelayed (:=) | Pattern (:) | Blank (_) | BlankSequence (__) | OptionsPattern | False | Block | CompoundExpression (;) | Max | Cases | FullForm | RuleDelayed (:>, :->) | Table | D (∂) | DeleteDuplicates | Join | Solve | If | OptionValue | Sort | True | Accumulate | Automatic | RGBColor | Length | Blue | Cos | Gray | AbsoluteThickness | Orange | Initialization
Список имен используемых встроенных функций и символов в порядке их появления в коде:
DSolve | Equal (==) | Plus (+) | Derivative (') | Set (=) | List ({...}) | NDSolve | Panel | Grid | Plot | Evaluate | ReplaceAll (/.) | Rule (->, ->) | ImageSize | PlotStyle | Thick | PlotLabel | Style | FontFamily | Bold | TicksStyle | Directive | AxesStyle | Arrowheads | AxesLabel | Map (/@) | Function (&) | Slot (#) | Italic | Times (*, ×) | Log10 | Abs | PlotPoints | Frame | All | Manipulate | Power (^) | E (e) | Sum (∑) | Factorial (!) | PlotRange | AspectRatio | PlotLegends | Placed | Above | WorkingPrecision | Appearance | Infinity | Simplify | Out (%) | Part ([[…]]) | SetDelayed (:=) | Pattern (:) | Blank (_) | BlankSequence (__) | OptionsPattern | False | Block | CompoundExpression (;) | Max | Cases | FullForm | RuleDelayed (:>, :->) | Table | D (∂) | DeleteDuplicates | Join | Solve | If | OptionValue | Sort | True | Accumulate | Automatic | RGBColor | Length | Blue | Cos | Gray | AbsoluteThickness | Orange | Initialization
Рассмотрим некоторое обыкновенное дифференциальное уравнение (ОДУ), скажем y'+y=x. С помощью встроенной функции DSolve можно с легкостью найти его общее аналитическое решение:

закрыть

или решение задачи Коши:

закрыть

А с помощью функции NDSolve — численное решение задачи Коши:

закрыть

Можно визуализировать полученные решения — аналитическое и численное, а также сравнить их:

закрыть

Однако, не всегда хорошо иметь только численное решение, часто необходимо иметь аналитическое приближение к точному решению. В этом может помочь метод, заключающийся в поиске коэффициентов ряда Тейлора функции, которая является решением ОДУ. Продемонстрирую идею этого метода для рассматриваемого выше ОДУ.
Для него нам известно начальное условие y(0)=1. Подставив значение x=0 в уравнение, получим:
y'(0)+y(0)=0, откуда следует, что y'(0)=-y(0), т. е. y'(0)=-1.
Продифференцировав ОДУ по переменной x, получим:
y''(x)+y'(x)=1.
Подставив в это уравнение x=0, получим:
y''(0)+y'(0)=1, или y''(0)=1-y'(0), т. е. y''(0)=2.
Продолжая этот процесс, получим, что:
y'''(0)=-2, y''''(0)=2,
,
,




Это означает, что решение может быть записано в виде:


Полученный ряд является решением ОДУ, а также может служить аналитическим приближением к решению. Посмотрим, как ведет себя полученное аналитическое приближение:

закрыть
В Mathematica вы можете найти сумму ряда в правой части полученного аналитического приближения:

закрыть

И убедиться, что решение в виде ряда Тейлора (Маклорена в данном случае), сходится к точному решению:

закрыть

Теперь создадим функцию, которая проделывает все описанное выше:

закрыть
Можем применить ее к решению разнообразных ОДУ и посмотреть что она предоставляет нам, как в частном:

закрыть

так и в общем виде:

закрыть

Если есть желание, можно посмотреть на то, как последовательные аналитические приближения описывают решение:

закрыть


закрыть

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

закрыть


закрыть

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

закрыть
Блог принадлежит “Русскоязычной поддержке Wolfram Mathematica"©
При любом использовании материалов блога, ссылка на блог обязательна.
Создано с помощью Wolfram Mathematica 9
При любом использовании материалов блога, ссылка на блог обязательна.

Было бы отлично, если бы сайтов таких было бы побольше HH
ОтветитьУдалить