How to define a mathematical function in SymPy?
Question:
I’ve been trying this now for hours. I think I don’t understand a basic concept, that’s why I couldn’t answer this question to myself so far.
What I’m trying is to implement a simple mathematical function, like this:
f(x) = x**2 + 1
After that I want to derive that function.
I’ve defined the symbol and function with:
x = sympy.Symbol('x')
f = sympy.Function('f')(x)
Now I’m struggling with defining the equation to this function f(x)
. Something like f.exp("x**2 + 1")
is not working.
I also wonder how I could get a print out to the console of this function after it’s finally defined.
Answers:
Here’s your solution:
>>> import sympy
>>> x = sympy.symbols('x')
>>> f = x**2 + 1
>>> sympy.diff(f, x)
2*x
sympy.Function
is for undefined functions. Like if f = Function('f')
then f(x)
remains unevaluated in expressions.
If you want an actual function (like if you do f(1)
it evaluates x**2 + 1
at x=1
, you can use a Python function
def f(x):
return x**2 + 1
Then f(Symbol('x'))
will give a symbolic x**2 + 1
and f(1)
will give 2
.
Or you can assign the expression to a variable
f = x**2 + 1
and use that. If you want to substitute x
for a value, use subs
, like
f.subs(x, 1)
Another possibility (isympy
command prompt):
>>> type(x)
<class 'sympy.core.symbol.Symbol'>
>>> f = Lambda(x, x**2)
>>> f
2
x ↦ x
>>> f(3)
9
Calculating the derivative works like that:
>>> g = Lambda(x, diff(f(x), x))
>>> g
x ↦ 2x
>>> g(3)
6
Have a look to:
Sympy how to define variables for functions, integrals and polynomials
You can define it according to ways:
- a python function with def as describe above
- a python expression g=x**2 + 1
I recommended :
- first, define a symbolic variable
x = sympy.symbols('x')
- second, define a symbolic function
f = sympy.Function('f')(x)
- define a formula
f = x**x+1
if you have so many variable can use this function
def symbols_builder(arg):
globals()[arg]=sp.symbols(str(arg))
if you have so many functions can use this function
def func_build(name, *args):
globals()[name]=sp.Function(str(name))(args)
Creating a Undefined Function:
from sympy import *
f = symbols("f", cls=Function)
I’ve been trying this now for hours. I think I don’t understand a basic concept, that’s why I couldn’t answer this question to myself so far.
What I’m trying is to implement a simple mathematical function, like this:
f(x) = x**2 + 1
After that I want to derive that function.
I’ve defined the symbol and function with:
x = sympy.Symbol('x')
f = sympy.Function('f')(x)
Now I’m struggling with defining the equation to this function f(x)
. Something like f.exp("x**2 + 1")
is not working.
I also wonder how I could get a print out to the console of this function after it’s finally defined.
Here’s your solution:
>>> import sympy
>>> x = sympy.symbols('x')
>>> f = x**2 + 1
>>> sympy.diff(f, x)
2*x
sympy.Function
is for undefined functions. Like if f = Function('f')
then f(x)
remains unevaluated in expressions.
If you want an actual function (like if you do f(1)
it evaluates x**2 + 1
at x=1
, you can use a Python function
def f(x):
return x**2 + 1
Then f(Symbol('x'))
will give a symbolic x**2 + 1
and f(1)
will give 2
.
Or you can assign the expression to a variable
f = x**2 + 1
and use that. If you want to substitute x
for a value, use subs
, like
f.subs(x, 1)
Another possibility (isympy
command prompt):
>>> type(x)
<class 'sympy.core.symbol.Symbol'>
>>> f = Lambda(x, x**2)
>>> f
2
x ↦ x
>>> f(3)
9
Calculating the derivative works like that:
>>> g = Lambda(x, diff(f(x), x))
>>> g
x ↦ 2x
>>> g(3)
6
Have a look to:
Sympy how to define variables for functions, integrals and polynomials
You can define it according to ways:
- a python function with def as describe above
- a python expression g=x**2 + 1
I recommended :
- first, define a symbolic variable
x = sympy.symbols('x')
- second, define a symbolic function
f = sympy.Function('f')(x)
- define a formula
f = x**x+1
if you have so many variable can use this function
def symbols_builder(arg):
globals()[arg]=sp.symbols(str(arg))
if you have so many functions can use this function
def func_build(name, *args):
globals()[name]=sp.Function(str(name))(args)
Creating a Undefined Function:
from sympy import *
f = symbols("f", cls=Function)