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

Содержание
  1. Численные методы: практическое применение Python
  2. May 14, 2019
  3. Основы языка Python
  4. Решение систем линейных уравнений
  5. Задачи на собственные значения и собственные вектора матриц
  6. Нелинейные уравнения и системы
  7. Задача Коши для обыкновенных дифференциальных уравнений
  8. Численные методы решения краевых задач для ОДУ
  9. Нестационарные задачи математической физики
  10. Предупреждение
  11. Численное решение обыкновенных дифференциальных уравнений (ОДУ) в Python
  12. Краткое описание модуля scipy.integrate
  13. Решение одного ОДУ
  14. Решение системы ОДУ
  15. Библиотека Sympy: символьные вычисления в Python
  16. Первые шаги с SymPy
  17. Используем SymPy как обычный калькулятор
  18. Символы
  19. Алгебраические преобразования
  20. Раскрытие скобок
  21. Упрощение выражений
  22. Вычисления
  23. Вычисления пределов
  24. Дифференцирование
  25. Разложение в ряд
  26. Интегрирование
  27. Решение уравнений
  28. Системы линейных уравнений
  29. Факторизация
  30. Булевы уравнения
  31. Линейная алгебра
  32. Матрицы
  33. Дифференциальные уравнения
  34. Английский для программистов

Видео:Python - численное решение дифференциального уравнения 1го порядка и вывод графикаСкачать

Python - численное решение дифференциального уравнения 1го порядка и вывод графика

Численные методы: практическое применение Python

С. Лемешевский (sergey.lemeshevsky at gmail.com)

Институт математики НАН Беларуси

May 14, 2019

Видео:Линейные дифференциальные уравнения в частных производныхСкачать

Линейные дифференциальные уравнения в частных производных

Основы языка Python

  • LaTeX PDF: Для печати на A4, Для чтения на экране
  • HTML: Стиль FlatUI, Стиль Journal

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

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

Решение систем линейных уравнений

  • LaTeX PDF: Для печати на A4, Для чтения на экране
  • HTML: Стиль FlatUI, Стиль Journal

Видео:01.02. Модель SIR. Численное решение системы дифференциальных уравнений с помощью SciPyСкачать

01.02. Модель SIR. Численное решение системы дифференциальных уравнений с помощью SciPy

Задачи на собственные значения и собственные вектора матриц

  • LaTeX PDF: Для печати на A4, Для чтения на экране
  • HTML: Стиль FlatUI, Стиль Journal

Видео:Дифференциальное уравнение в частных производныхСкачать

Дифференциальное уравнение в частных производных

Нелинейные уравнения и системы

  • LaTeX PDF: Для печати на A4, Для чтения на экране
  • HTML: Стиль FlatUI, Стиль Journal

Видео:Решение дифференциальных уравнений в Python. Задача о четырех жуках.Скачать

Решение дифференциальных уравнений в Python. Задача о четырех жуках.

Задача Коши для обыкновенных дифференциальных уравнений

  • LaTeX PDF: Для печати на A4, Для чтения на экране
  • HTML: Стиль FlatUI, Стиль Journal

Видео:Решение ОДУ 2 порядка в PythonСкачать

Решение  ОДУ  2 порядка  в Python

Численные методы решения краевых задач для ОДУ

  • LaTeX PDF: Для печати на A4, Для чтения на экране
  • HTML: Стиль FlatUI, Стиль Journal

Видео:Простейшие уравнения в частных производныхСкачать

Простейшие уравнения в частных производных

Нестационарные задачи математической физики

  • LaTeX PDF: Для печати на A4, Для чтения на экране
  • HTML: Стиль FlatUI, Стиль Journal

Предупреждение

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

Видео:Решение ОДУ в PythonСкачать

Решение  ОДУ в Python

Численное решение обыкновенных дифференциальных уравнений (ОДУ) в Python

Рассмотрены приемы решения обыкновенных дифференциальных уравнений (ОДУ) с помощью модуля scipy.integrate языка Python

Видео:5 Численное решение дифференциальных уравнений Part 1Скачать

5  Численное решение дифференциальных уравнений Part 1

Краткое описание модуля scipy.integrate

Модуль scipy.integrate имеет две функции ode() и odeint(), которые предназначены для решения систем обыкновенных дифференциальных уравнений (ОДУ) первого порядка с начальными условиями в одной точке (т.е. задача Коши).

Функция ode() более универсальная, а функция odeint() (ODE integrator) имеет более простой интерфейс и хорошо решает большинство задач.

Функция odeint() имеет три обязательных аргумента и много опций. Она имеет следующий формат

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

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

Решение одного ОДУ

Допустим надо решить диф. уравнение 1-го порядка

Получилось что-то такое:

Видео:Численное решение задачи Коши методом ЭйлераСкачать

Численное решение задачи Коши методом Эйлера

Решение системы ОДУ

Пусть теперь мы хотим решить (автономную) систему диф. уравнений 1-го порядка

Выходной массив w состоит из двух столбцов — y1(t) и y2(t).

Также без труда можно построить фазовые траектории:

Видео:Найти общее решение уравнения в частных производных первого порядка.Скачать

Найти общее решение уравнения в частных производных первого порядка.

Библиотека Sympy: символьные вычисления в Python

Что такое SymPy ? Это библиотека символьной математики языка Python. Она является реальной альтернативой таким математическим пакетам как Mathematica или Maple и обладает очень простым и легко расширяемым кодом. SymPy написана исключительно на языке Python и не требует никаких сторонних библиотек.

Документацию и исходный код этой библиотеки можно найти на ее официальной странице.

Видео:8 Дифференциальные уравнения в частных производных MathcadСкачать

8 Дифференциальные уравнения в частных производных Mathcad

Первые шаги с SymPy

Используем SymPy как обычный калькулятор

В библиотеке SymPy есть три встроенных численных типа данных: Real , Rational и Integer . С Real и Integer все понятно, а класс Rational представляет рациональное число как пару чисел: числитель и знаменатель рациональной дроби. Таким образом, Rational(1, 2) представляет собой 1/2 , а, например, Rational(5, 2) — соответственно 5/2 .

Библиотека SymPy использует библиотеку mpmath , что позволяет производить вычисления с произвольной точностью. Таким образом, ряд констант (например, пи, e), которые в данной библиотеке рассматриваются как символы, могут быть вычислены с любой точностью.

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

В SymPy есть также класс, представляющий такое понятие в математике, как бесконечность. Он обозначается следующим образом: oo .

Символы

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

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

С символами можно производить преобразования с использованием некоторых операторов языка Python. А именно, арифметических ( + , -` , «* , ** ) и логических ( & , | ,

Библиотека SymPy позволяет задавать форму вывода результатов на экран. Обычно мы используем формат такого вида:

Видео:Python - поле направлений дифференциального уравненияСкачать

Python - поле направлений дифференциального уравнения

Алгебраические преобразования

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

Раскрытие скобок

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

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

Упрощение выражений

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

Также надо сказать, что для определенных видов математических функций существуют альтернативные, более конкретные функции для упрощения выражений. Так, для упрощения степенных функций есть функция powsimp , для тригонометрических — trigsimp , а для логарифмических — logcombine , radsimp .

Видео:Решение системы ОДУ в PythonСкачать

Решение  системы ОДУ в Python

Вычисления

Вычисления пределов

Для вычисления пределов в SymPy предусмотрен очень простой синтаксис, а именно limit(function, variable, point) . Например, если вы хотите вычислить предел функции f(x) , где x -> 0 , то надо написать limit(f(x), x, 0) .

Также можно вычислять пределы, которые стремятся к бесконечности.

Дифференцирование

Для дифференцирования выражений в SymPy есть функция diff(func, var) . Ниже даны примеры ее работы.

Проверим результат последней функции при помощи определения производной через предел.

tan 2 (?)+1 Результат тот же.

Также при помощи этой же функции могут быть вычислены производные более высоких порядков. Синтаксис функции будет следующим: diff(func, var, n) . Ниже приведено несколько примеров.

Разложение в ряд

Для разложения выражения в ряд Тейлора используется следующий синтаксис: series(expr, var) .

Интегрирование

В SymPy реализована поддержка определенных и неопределенных интегралов при помощи функции integrate() . Интегрировать можно элементарные, трансцендентные и специальные функции. Интегрирование осуществляется с помощью расширенного алгоритма Риша-Нормана. Также используются различные эвристики и шаблоны. Вот примеры интегрирования элементарных функций:

Также несложно посчитать интеграл и от специальных функций. Возьмем, например, функцию Гаусса:

Результат вычисления можете посмотреть сами. Вот примеры вычисления определенных интегралов.

Также можно вычислять определенные интегралы с бесконечными пределами интегрирования (несобственные интегралы).

Решение уравнений

При помощи SymPy можно решать алгебраические уравнения с одной или несколькими переменными. Для этого используется функция solveset() .

Как можно заметить, первое выражение функции solveset() приравнивается к 0 и решается относительно х . Также возможно решать некоторые уравнения с трансцендентными функциями.

Системы линейных уравнений

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

Факторизация

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

Булевы уравнения

Также в SymPy реализована возможность решения булевых уравнений, что по сути означает проверку булевого выражения на истинность. Для этого используется функция satisfiable() .

Данный результат говорит нам о том, что выражение (x & y) будет истинным тогда и только тогда, когда x и y истинны. Если выражение не может быть истинным ни при каких значениях переменных, то функция вернет результат False .

Видео:Уравнения в частных производных первого порядка| poporyadku.schoolСкачать

Уравнения в частных производных первого порядка| poporyadku.school

Линейная алгебра

Матрицы

Матрицы в SymPy создаются как экземпляры класса Matrix :

В отличие от NumPy , мы можем использовать в матрицах символьные переменные:

И производить с ними разные манипуляции:

Дифференциальные уравнения

При помощи библиотеки SymPy можно решать некоторые обыкновенные дифференциальные уравнения. Для этого используется функция dsolve() . Для начала нам надо задать неопределенную функцию. Это можно сделать, передав параметр cls=Function в функцию symbols() .

Теперь f и g заданы как неопределенные функции. мы можем в этом убедиться, просто вызвав f(x) .

Теперь решим следующее дифференциальное уравнение:

Чтобы улучшить решаемость и помочь этой функции в поиске решения, можно передавать в нее определенные ключевые аргументы. Например, если мы видим, что это уравнение с разделяемыми переменными, то мы можем передать в функцию аргумент hint=’separable’ .

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

Английский для программистов

Наш телеграм канал с тестами по английскому языку для программистов. Английский это часть карьеры программиста. Поэтому полезно заняться им уже сейчас

Поделиться или сохранить к себе: