Как определить математическую функцию в SymPy?
SymPy — это библиотека Python, которая делает возможным «символьное вычисление» в Python.
Математические функции с использованием SymPy
Мы можем определить математические функции, используя SymPy в Python. Есть два типа функций, которые мы можем определить с помощью SymPy: «Неопределенные функции» и «Пользовательские функции» .
Неопределенные функции:
Программист может создавать «неопределенные функции», когда он/она не хочет оценивать результат и оставлять результат неоцененным. Эти функции не имеют математических свойств, определенных для них. Это означает, что любой аргумент, переданный в неопределенную функцию, останется невычисленным, и функция никогда не даст никакого результата.
Пользовательские функции:
С помощью «Пользовательских функций» программист может придать определенной функции математическое свойство. В пользовательских функциях математическое свойство применяется к аргументу, результат оценивается и выводится на экран.
Метод класса eval():
Метод класса eval() автоматически оценивает результат. Он используется в функции подкласса для возврата значения путем выполнения вычислений с аргументами или возврата None. Это означает, что eval() всегда будет возвращать оцениваемый результат или возвращает None.
Определить математическую функцию в SymPy
Неопределенные функции:
Прежде всего, чтобы определить неопределенную функцию в Python, нам нужно импортировать SymPy. После импорта SymPy нам просто нужно объявить переменную и определить в ней функцию.
Пример 1: определение неопределенной функции с помощью переменной SymPy
Python3
# importing SymPy Library import sympy # creating undefined function "f" f = sympy.Function( "f" ) # creating SymPy variable "x" x = sympy.Symbol( "x" ) # calling function "f" with variable "x" as its argument f(x) |
Выход:
f(x)
Пример 2: определение неопределенной функции с целым числом
Python3
# importing SymPy Library import sympy # creating undefined function "f" f = sympy.Function( "f" ) # calling the function "f" with an integer as its argument f( 0 ) |
Выход:
f(0)
Пример 3. Определение неопределенной функции, которая является невызываемым объектом
Python
# importing SymPy Library import sympy # creating a SymPy variable "x" x = sympy.Symbol( "x" ) # creating non-callable function f = sympy.Function( "f" )(x) # calling the function "f" f |
Выход:
f(x)
Если мы вызовем здесь функцию 'f' с каким-либо аргументом, она выдаст ошибку.
Python3
# importing SymPy Library import sympy # creating a SymPy variable "x" x = sympy.Symbol( "x" ) #creating another SymPy variable "y" y = sympy.Symbol( "y" ) # creating non-callable function f = sympy.Function( "f" )(x) # calling the function "f" with an argument f(y) |
Выход:
Пример 4. Выполнение дифференцирования неопределенной функции
Python3
# importing SymPy Library import sympy # creating undefined function "f" f = sympy.Function( "f" ) # creating SymPy variable "x" x = sympy.Symbol( "x" ) # performing differentiation on the function "f" f(x).diff(x) |
Выход:
d/dx {f(x)}
Пользовательские функции:
В пользовательской функции результат оценивается полностью. Для этой цели мы определим класс, а внутри него, для определения математического свойства этой функции, мы определим функцию подкласса.
Пример 1: Функция для получения квадрата числа
В этом примере мы собираемся определить функцию, которая будет возвращать квадрат переданного аргумента.
Python3
# importing SymPy Library import sympy # creating class square class square(sympy.Function): @classmethod # defining subclass function with "eval()" class method def eval ( cls , x): print (x * * 2 ) # calling the eval() subclass # function with integer 4 as its argument square. eval ( 4 ) |
Выход:
16
Если мы просто вызовем класс, то результата у нас не будет. Вместо этого у нас будет имя функции, а в качестве ее аргумента — это число.
Python3
# importing SymPy Library import sympy # creating class "square" class square(sympy.Function): @classmethod # defining subclass function with "eval()" class method def eval ( cls , x): print (x * * 2 ) # calling class square( 4 ) |
Выход:
square(4)
2. Функция для получения куба числа
Python3
# importing SymPy Library import sympy # creating class class cube(sympy.Function): @classmethod # defining subclass function with "eval()" class method def eval ( cls , x): print (x * * 3 ) # calling the function cube( 9 ) |
Выход:
cube(9)
Вызов функции подкласса eval().
Python3
# importing SymPy Library import sympy # creating class class cube(sympy.Function): @classmethod # defining subclass function with "eval()" class method def eval ( cls , x): print (x * * 3 ) # calling the subclass function cube. eval ( 9 ) |
Выход:
729