Что такое SymPy ? Это библиотека символьной математики языка Python. Она является реальной альтернативой таким математическим пакетам как Mathematica или Maple и обладает очень простым и легко расширяемым кодом. SymPy написана исключительно на языке Python и не требует никаких сторонних библиотек.
Документацию и исходный код этой библиотеки можно найти на ее официальной странице.
Первые шаги с SymPy
Используем SymPy как обычный калькулятор
В библиотеке SymPy есть три встроенных численных типа данных: Real , Rational и Integer . С Real и Integer все понятно, а класс Rational представляет рациональное число как пару чисел: числитель и знаменатель рациональной дроби. Таким образом, Rational(1, 2) представляет собой 1/2 , а, например, Rational(5, 2) — соответственно 5/2 .
import sympy as sym a = sym.Rational(1, 2) # дает 1/2 a * 2 # дает 1
Библиотека SymPy использует библиотеку mpmath , что позволяет производить вычисления с произвольной точностью. Таким образом, ряд констант (например, пи, e), которые в данной библиотеке рассматриваются как символы, могут быть вычислены с любой точностью.
34 Задача: Найти корни квадратного уравнения при помощи Python
sym.pi**2 # результат pi**2 sym.pi.evalf() # результат 3.14159265358979 (sym.pi + sym.exp(1)).evalf() # результат 5.85987448204884
Как можно заметить, функция evalf() дает на выходе число с плавающей точкой.
В SymPy есть также класс, представляющий такое понятие в математике, как бесконечность. Он обозначается следующим образом: oo .
sym.oo > 99999 # результат True sym.oo + 1 # результат oo
Символы
В отличие от ряда других систем компьютерной алгебры, в SymPy можно в явном виде задавать символьные переменные. Это происходит следующим образом:
x = sym.Symbol(‘x’) y = sym.Symbol(‘y’)
После их задания, с ними можно производить различные манипуляции.
x + y + x — y # результат 2*x (x + y) ** 2 # результат (x + y)**2
С символами можно производить преобразования с использованием некоторых операторов языка Python. А именно, арифметических ( + , -` , «* , ** ) и логических ( 0 , то надо написать limit(f(x), x, 0) .
sym.limit(sym.sin(x) / x, x, 0) # результат 1
Также можно вычислять пределы, которые стремятся к бесконечности.
sym.limit(x, x, sym.oo) # результат oo sym.limit(1 / x, x, sym.oo) # результат 0 sym.limit(x ** x, x, 0) # результат 1
Дифференцирование
Для дифференцирования выражений в SymPy есть функция diff(func, var) . Ниже даны примеры ее работы.
sym.diff(sym.sin(x), x) # результат cos(?) sym.diff(sym.sin(2 * x), x) # результат 2cos(2?) sym.diff(sym.tan(x), x)
Проверим результат последней функции при помощи определения производной через предел.
sym.limit((sym.tan(x + y) — sym.tan(x)) / y, y, 0)
tan 2 (?)+1 Результат тот же.
Также при помощи этой же функции могут быть вычислены производные более высоких порядков. Синтаксис функции будет следующим: diff(func, var, n) . Ниже приведено несколько примеров.
sym.diff(sym.sin(2 * x), x, 1) # результат 2cos(2?) sym.diff(sym.sin(2 * x), x, 2) # результат −4sin(2?) sym.diff(sym.sin(2 * x), x, 3) # результат −8cos(2?)
Разложение в ряд
Для разложения выражения в ряд Тейлора используется следующий синтаксис: series(expr, var) .
Python для самых маленьких. Линейные уравнения. Решение задач
sym.series(sym.cos(x), x)
sym.series(1/sym.cos(x), x)
Интегрирование
В SymPy реализована поддержка определенных и неопределенных интегралов при помощи функции integrate() . Интегрировать можно элементарные, трансцендентные и специальные функции. Интегрирование осуществляется с помощью расширенного алгоритма Риша-Нормана.
Также используются различные эвристики и шаблоны. Вот примеры интегрирования элементарных функций:
sym.integrate(sym.sin(x), x) # результат −cos(?) sym.integrate(sym.log(x), x) # результат ?log(?)−?
Также несложно посчитать интеграл и от специальных функций. Возьмем, например, функцию Гаусса:
sym.integrate(sym.exp(-x ** 2) * sym.erf(x), x)
Результат вычисления можете посмотреть сами. Вот примеры вычисления определенных интегралов.
sym.integrate(x**3, (x, -1, 1)) # результат 0 sym.integrate(sym.sin(x), (x, 0, sym.pi / 2)) # результат 1 sym.integrate(sym.cos(x), (x, -sym.pi / 2, sym.pi / 2)) # результат 2
Также можно вычислять определенные интегралы с бесконечными пределами интегрирования (несобственные интегралы).
sym.integrate(sym.exp(-x), (x, 0, sym.oo)) # результат 1
Решение уравнений
При помощи SymPy можно решать алгебраические уравнения с одной или несколькими переменными. Для этого используется функция solveset() .
sym.solveset(x ** 4 — 1, x) # результат
Как можно заметить, первое выражение функции solveset() приравнивается к 0 и решается относительно х . Также возможно решать некоторые уравнения с трансцендентными функциями.
sym.solveset(sym.exp(x) + 1, x) # результат
Системы линейных уравнений
SymPy способна решать широкий класс полиномиальных уравнений. Также при помощи данной библиотеки можно решать и системы уравнений. При этом переменные, относительно которых должна быть разрешена система, передаются в виде кортежа во втором аргументе функции solve() , которая используется для таких задач.
solution = sym.solve((x + 5 * y — 2, -3 * x + 6 * y — 15), (x, y)) solution[x], solution[y] # результат (-3, 1)
Факторизация
Другим мощным методом исследования полиномиальных уравнений является факторизация многочленов (то есть представление многочлена в виде произведения многочленов меньших степеней). Для этого в SymPy предусмотрена функция factor() , которая способна производить факторизацию очень широкого класса полиномов.
f = x ** 4 — 3 * x ** 2 + 1 sym.factor(f)
sym.factor(f, modulus=5)
Булевы уравнения
Также в SymPy реализована возможность решения булевых уравнений, что по сути означает проверку булевого выражения на истинность. Для этого используется функция satisfiable() .
sym.satisfiable(x y) будет истинным тогда и только тогда, когда x и y истинны. Если выражение не может быть истинным ни при каких значениях переменных, то функция вернет результат False .
sym.satisfiable(x https://pythonist.ru/biblioteka-sympy-simvolnye-vychisleniya-v-python/» target=»_blank»]pythonist.ru[/mask_link]
Решение линейного уравнения в python
В данной статье мы разберем программу на python для решения линейного уравнения Программа решает уравнение вида ax = b. Коэффициенты a и b задаются пользователем с клавиатуры. Программа находит решение и выводит его на экран. Если решений бесконечное количество или их нет, то программа оповещает об этом.
Все возможные решения линейного уравнения можно описать так
Если a = 0 и b = 0, то решений бесконечное количество.
Если a = 0 и b ≠ 0, то решений нет.
Если a ≠ 0, то единственное решение будет равно b / a.
Для задания коэффициентов с клавиатуры в Python используется функция ввода вещественного числа float(input()). Подробно о вводе информации с клавиатуры в python
a = float(input(«Введите коэффициент a «))
b = float(input(«Введите коэффициент b «))
В Python, чтобы проверить равенство двух объектов, используется ==, для проверки неравенства объектов используется !=. Для проверки двух условий одновременно используется оператор and. Подробно об условиях в python
Программа на Python для решения линейного уравнения
a = float(input(«Введите коэффициент a «))
b = float(input(«Введите коэффициент b «))
if (a == 0 and b == 0):
print(«Бесконечное количество решений.»)
if (a == 0 and b != 0):
print(«Решений нет.»)
if (a != 0):
print(b/a))
Полезно почитать по теме условия в Python примеры
Пример анкеты, опроса на Python
Комментарии ( 0 )
Нет комментариев. Ваш будет первым!
Источник: itrobo.ru
Решение квадратного уравнения на Python
x^2 и x подразумеваются по умолчанию, поэтому достаточно задать a, b и c — и сразу станет понятно как выглядит квадратное уравнение.
Пример решения
Первым делом проверим, что a, b и c это числа
from math import sqrt def quadratic_solve (a ,b, c): if not all ( map ( lambda p: isinstance (p, ( int , float )), (a, b, c) ) ): raise TypeError ( «Not valid argument type» ) print ( «Types are OK» ) if a == 0 : if b == 0 : # a и b 0: решения нет return None , None return -c / b, None d = b ** 2 — 4 * a * c if d < 0 : return None , None d_root = sqrt(d) divider = 2 * a x1 = (-b + d_root) / divider x2 = (-b — d_root) / divider if d == 0 : x2 = None elif x2 > x1: x1, x2 = x2, x1 return x1, x2
Использованные функции
Здесь я использовал функции: all() , map() и лямбда функцию
Если что-то неясно — перейдите по ссылкам на функции либо посетите раздел «Функции»
Примеры уравнений их корни
Для проверки можно использовать следущие уравнения:
x^2 — 2x + 1
a = 1, b = -2, c = 1
Корни: 1, None
5x^2 + 7x
a = 5, b = 7, c = 0
Корни: 0, None
С двумя корнями
x^2 + x -6
a = 1, b = 1, c = -6
Корни: -3, 2
x^2 + x + 9
a = 1, b = 1, c = +9
Корни: None, None
Источник: www.andreyolegovich.ru