Начнем пожалуй с того, что решать дифференциальные уравнения вручную может быть не совсем просто.
На данном ресурсе http://mathprofi.ru/differencialnye_uravnenija_primery_reshenii.html есть шпоры как это делать вручную, там есть множество подсказок по различным разделам высшей математики, например мне это пригодилось, потому что помнить все и вся не всегда представляется возможным.
Конкретно в данном посте я попытаюсь прорешать 10 примеров из первой темы данного предмета.
Дифференциальные уравнения первого порядка. Примеры решений.Дифференциальные уравнения с разделяющимися переменными
Учитывая что на mathprofi уже есть решения и ответы к этим 10 примерам, я предложу дополнить её решениями данных уравнений с помощью персонального компьютера, а конкретно с помощью языка программирования Python и библиотеки символьного вычисления и решения уравнений SymPy.
Пример 1:
Предложу решить этот пример с помощью Python
import sympy print("#Дифференциальные уравнения первого порядка.") print("#Дифференциальные уравнения с разделяющимися переменными") print("#Пример 1") x = sympy.symbols('x')#Независимая переменная y = sympy.Function('y')#Зависимая переменная equation = sympy.Eq(x*y(x).diff(x), y(x))#Условие задачи выражение print("Условие:") print(equation) solution = sympy.dsolve(equation)#Метод решения диф. уравнения print("Общее решение:") print(solution) print("Ответ сошелся") print("-----------------------------------------------------------------")
Результатом работы данного скрипта будет такой вывод:
#Дифференциальные уравнения первого порядка. #Дифференциальные уравнения с разделяющимися переменными #Пример 1 Условие: Eq(x*Derivative(y(x), x), y(x)) Общее решение: Eq(y(x), C1*x) Ответ сошелся
Смотрим ответ на mathprofi:
В точности то, что написано в 7 строке вывода.
Пример 2:
Это задача с условием, поэтому код немного усложнится.
print("#Дифференциальные уравнения первого порядка.") print("#Дифференциальные уравнения с разделяющимися переменными") print("#Пример 2") x = sympy.symbols('x') y = sympy.Function('y') equation = sympy.Eq(y(x).diff(x), -2*y(x)) print("Условие:") print(equation) solution = sympy.dsolve(equation) print("Общее решение:") print(solution) C1=sympy.solve(solution.subs(x,0).subs(y(0),2),'C1')[0]#Подставляем условия z=solution.subs('C1',C1) print("Частное решение:") print(z) print("Ответ сошелся")
Смотрим вывод работы скрипта:
#Дифференциальные уравнения первого порядка. #Дифференциальные уравнения с разделяющимися переменными #Пример 2 Условие: Eq(Derivative(y(x), x), -2*y(x)) Общее решение: Eq(y(x), C1*exp(-2*x)) Частное решение: Eq(y(x), 2*exp(-2*x)) Ответ сошелся
Сравним 7 и 9 строки вывода работы скрипта с общим и частным решением на сайте соответственно:
Пример 3:
print("#Дифференциальные уравнения первого порядка.") print("#Дифференциальные уравнения с разделяющимися переменными") print("#Пример 3") x = sympy.symbols('x') y = sympy.Function('y') equation = sympy.Eq(y(x).diff(x)+(2*y(x)+1)*sympy.cot(x),0) print("Условие:") print(equation) solution = sympy.dsolve(equation) print("Общее решение:") print(solution) print("Ответ сошелся")
Выхлоп:
#Дифференциальные уравнения первого порядка. #Дифференциальные уравнения с разделяющимися переменными #Пример 3 Условие: Eq((2*y(x) + 1)*cot(x) + Derivative(y(x), x), 0) Общее решение: Eq(y(x), C1/sin(x)**2 - 1/2) Ответ сошелся
Ответ:
Пример 4:
Код:
print("#Дифференциальные уравнения первого порядка.") print("#Дифференциальные уравнения с разделяющимися переменными") print("#Пример 4") x = sympy.symbols('x') y = sympy.Function('y') equation = sympy.Eq(y(x)*sympy.ln(y(x))+x*y(x).diff(x),0) print("Условие:") print(equation) solution = sympy.dsolve(equation) print("Общее решение:") print(solution) C1=sympy.solve(solution.subs(x,1).subs(y(1),sympy.exp(1)),'C1')[0] z=solution.subs('C1',C1) print("Частное решение:") print(z) print("Ответ сошелся")
Выхлоп:
#Дифференциальные уравнения первого порядка. #Дифференциальные уравнения с разделяющимися переменными #Пример 4 Условие: Eq(x*Derivative(y(x), x) + y(x)*log(y(x)), 0) Общее решение: Eq(y(x), exp(C1/x)) Частное решение: Eq(y(x), exp(1/x)) Ответ сошелся
Ответ:
Пример 5:
Код
print("#Дифференциальные уравнения первого порядка.") print("#Дифференциальные уравнения с разделяющимися переменными") print("#Пример 5") x = sympy.symbols('x') y = sympy.Function('y') equation = sympy.Eq(y(x).diff(x)*sympy.exp(y(x)-x*x)-2*x,0) print("Условие:") print(equation) solution = sympy.dsolve(equation) print("Общее решение:") print(solution) C1=sympy.solve(solution.subs(x,0).subs(y(0),sympy.ln(2)),'C1')[0] z=solution.subs('C1',C1) print("Частное решение:") print(z) print("Ответ сошелся")
Выхлоп:
#Дифференциальные уравнения первого порядка. #Дифференциальные уравнения с разделяющимися переменными #Пример 5 Условие: Eq(-2*x + exp(-x**2 + y(x))*Derivative(y(x), x), 0) Общее решение: Eq(y(x), log(C1 + exp(x**2))) Частное решение: Eq(y(x), log(exp(x**2) + 1)) Ответ сошелся
Ответ:
Пример 6:
Код:
print("#Дифференциальные уравнения первого порядка.") print("#Дифференциальные уравнения с разделяющимися переменными") print("#Пример 6") x = sympy.symbols('x') y = sympy.Function('y') equation = sympy.Eq((y(x).diff(x))*y(x)*sympy.sqrt(1-x*x)-sympy.sqrt(3+y(x)*y(x)),0) print("Условие:") print(equation) solution = sympy.dsolve(equation) print("Общее решение:") print(solution) print("Ответ неизвестен правилен ли")
Выхлоп:
#Дифференциальные уравнения первого порядка. #Дифференциальные уравнения с разделяющимися переменными #Пример 6 Условие: Eq(sqrt(1 - x**2)*y(x)*Derivative(y(x), x) - sqrt(y(x)**2 + 3), 0) Общее решение: [Eq(y(x), -sqrt(C1**2 + 2*C1*asin(x) + asin(x)**2 - 3)), Eq(y(x), sqrt(C1**2 + 2*C1*asin(x) + asin(x)**2 - 3))] Ответ неизвестен правилен ли
Ответ:
В данном примере 6 на сайте надо было выразить через функцию выше ответ, а код решает сложный диффур и выражает его через зависимую переменную y. Оставим данное уравнение и ответ потомкам.
Пример 7:
Код:
print("#Дифференциальные уравнения первого порядка.") print("#Дифференциальные уравнения с разделяющимися переменными") print("#Пример 7") x = sympy.symbols('x') y = sympy.Function('y') equation = sympy.Eq((y(x).diff(x))*2*(y(x)*x+y(x))+x*(y(x)**4+1),0) print("Условие:") print(equation) solution = sympy.dsolve(equation) print("Общее решение:") print(solution) print("Ответ неизвестен правилен ли")
Выхлоп:
#Дифференциальные уравнения первого порядка. #Дифференциальные уравнения с разделяющимися переменными #Пример 7 Условие: Eq(x*(y(x)**4 + 1) + 2*(x*y(x) + y(x))*Derivative(y(x), x), 0) Общее решение: [Eq(y(x), -sqrt(tan(C1 - x + log(x + 1)))), Eq(y(x), sqrt(tan(C1 - x + log(x + 1))))] Ответ неизвестен правилен ли
Ответ:
Данный ответ 7 автор сайта называет общим интегралом и делает проверку дифференцируя этот ответ, а код решает сложный диффур и выражает его через y.
Пример 8:
Код:
print("#Дифференциальные уравнения первого порядка.") print("#Дифференциальные уравнения с разделяющимися переменными") print("#Пример 8") x = sympy.symbols('x') y = sympy.Function('y') equation = sympy.Eq(2*y(x).diff(x)*sympy.sin(y(x))*sympy.cos(y(x))*sympy.sin(x)**2+sympy.cos(x),0) print("Условие:") print(equation) solution = sympy.dsolve(equation) print("Общее решение:") print(solution) print("Ответ неизвестен правилен ли") for sol in solution: C1=sympy.solve(sol.subs(x,sympy.pi*0.5).subs(y(sympy.pi*0.5),0),'C1') if C1==[] or C1==[-1]: continue z=sol.subs('C1',C1) print("Частное решение:") print(z)
Выхлоп:
#Дифференциальные уравнения первого порядка. #Дифференциальные уравнения с разделяющимися переменными #Пример 8 Условие: Eq(2*sin(x)**2*sin(y(x))*cos(y(x))*Derivative(y(x), x) + cos(x), 0) Общее решение: [Eq(y(x), pi - asin(sqrt(C1 + 1/sin(x)))), Eq(y(x), asin(sqrt(C1 + 1/sin(x))) + pi), Eq(y(x), -asin(sqrt(C1 + 1/sin(x)))), Eq(y(x), asin(sqrt(C1 + 1/sin(x))))] Ответ неизвестен правилен ли
Ответ:
Данный пример 8 я не смог решить с условием, у кого будут идеи где я ошибся, прошу в комментарии.
Пример 9:
Код:
print("# Дифференциальные уравнения первого порядка.") print("# Дифференциальные уравнения с разделяющимися переменными") print("# Пример 9") x = sympy.symbols('x') y = sympy.Function('y') equation = sympy.Eq(y(x).diff(x) * y(x) *(1+sympy.exp(x)) - sympy.exp(y(x)), 0) print("Условие:") print(equation) solution = sympy.dsolve(equation) print("Общее решение:") print(solution) print("Ответ неизвестен правилен ли")
Выхлоп:
# Дифференциальные уравнения первого порядка. # Дифференциальные уравнения с разделяющимися переменными # Пример 9 Условие: Eq((exp(x) + 1)*y(x)*Derivative(y(x), x) - exp(y(x)), 0) Общее решение: Eq(y(x), -LambertW(C1 + x*exp(-1) - exp(-1)*log(exp(x) + 1)) - 1) Ответ неизвестен правилен ли
Ответ:
В 9 примере в ответе опять общий интеграл.
Пример 10:
Код:
print("# Дифференциальные уравнения первого порядка.") print("# Дифференциальные уравнения с разделяющимися переменными") print("# Пример 10") x = sympy.symbols('x') y = sympy.Function('y') print("Условие:") equation = sympy.Eq(y(x).diff(x) * (x+3*x*x) -y(x)+3, 0) print(equation) solution = sympy.dsolve(equation) print("Общее решение:") print(solution) print("Ответ сошелся")
Выхлоп:
# Дифференциальные уравнения первого порядка. # Дифференциальные уравнения с разделяющимися переменными # Пример 10 Условие: Eq((3*x**2 + x)*Derivative(y(x), x) - y(x) + 3, 0) Общее решение: Eq(y(x), 3*(C1*x + 3*x + 1)/(3*x + 1)) Ответ сошелся
Ответ:
Итог
Очень полезная библиотека этот SymPy – упрощает жизнь и решения сложных дифференциальных уравнений.