Получение аналитического приближенного решения обыкновенного дифференциального уравнения в виде частичной суммы ряда Тейлора функции решения
Общее количество использованных в посте встроенных функций или символов: 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
При любом использовании материалов блога, ссылка на блог обязательна.
Создано с помощью Wolfram Mathematica 9
Было бы отлично, если бы сайтов таких было бы побольше HH
ОтветитьУдалить