Похожие презентации:
спец1
1.
Пакет SymPy для решениядифференциальных уравнений
2.
3.
4.
• from sympy import symbols, Function• # Определяем независимую переменную
• x = symbols('x')
• # Определяем функцию
• y = Function('y')
5.
from sympy import Eq, dsolve, Derivative
# Уравнение
eq = Eq(Derivative(y(x), x), x**2)
# Решение
sol = dsolve(eq, y(x))
print(sol)
6.
• eq = Eq(Derivative(y(x), x) + y(x)**2, 0)• sol = dsolve(eq, y(x))
• print(sol)
7.
from sympy import dsolvex, y = symbols('x y', cls=Function)
t = symbols('t')
eq1 = Eq(x(t).diff(t), 3*x(t))
eq2 = Eq(y(t).diff(t), -2*y(t))
sol = dsolve([eq1, eq2])
print(sol)
8.
eq = Eq(Derivative(y(x), x), x)sol = dsolve(eq, y(x), ics={y(0): 1})
print(sol)
9.
Использование classify_ode(eq)• from sympy import symbols, Function, Eq, Derivative, classify_ode
• # Определяем переменные и функцию
• x = symbols('x')
• y = Function('y')
• # Уравнение
• eq = Eq(Derivative(y(x), x) + y(x), x**2)
# Определение доступных методов
methods = classify_ode(eq)
print("Доступные методы решения:")
print(methods)
10.
• Доступные методы решения:• ['1st_linear', 'Bernoulli', 'lie_group']
• 1st_linear: Метод решения линейных уравнений
первого порядка.
• Bernoulli: Метод Бернулли (для более сложных
нелинейных уравнений, сюда попадает как частный
случай).
• lie_group: Метод на основе групп Ли.
• После этого можно выбрать подходящий метод для
дальнейшего анализа.
11.
from sympy import symbols, Function, Eq, Derivative, checkodesol
# Определяем переменные и функцию
x = symbols('x')
y = Function('y')
# Уравнение
eq = Eq(Derivative(y(x), x) + 2*y(x), e**x)
# Решение
solution = Eq(y(x), (e**x)/2 + symbols('C1')*e**(-2*x))
# Проверка решения
is_correct = checkodesol(eq, solution)
print("Проверка решения:", is_correct)
12.
• Проверка решения: (True, 0)13.
• from sympy import symbols, Function, Eq, dsolve, sin• # Определяем переменные и функцию
• x = symbols('x')
• y = Function('y')
• # Уравнение
• eq = Eq(y(x).diff(x), y(x)**2 * sin(x) + x**2)
• # Попытка решить
• solution = dsolve(eq)
• print("Решение:", solution)
14.
выводNotImplementedError: No algorithms are
implemented to solve this equation;
consider solving it numerically.
15.
Разбор:SymPy не смог найти аналитическоерешение, так как уравнение не поддается
известным методам решения. В таких
случаях: Можно попробовать использовать
численные методы, например, с помощью
scipy.integrate.solve_ivp. Попробовать
упростить уравнение или рассмотреть
частные случаи, например, задать начальные
условия или ограничить диапазон функций.
16.
• Преимущества и ограничения SymPy• Преимущества:
• Аналитические решения.
• Простота использования.
• Гибкость (работа с системами и условиями).
• Ограничения:
• Не все сложные ДУ решаются аналитически.
• Для численных методов предпочтительнее
использовать SciPy.