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.

Asked By: Robin

||

Answers:

Here’s your solution:

>>> import sympy
>>> x = sympy.symbols('x')
>>> f = x**2 + 1
>>> sympy.diff(f, x)
2*x
Answered By: enedil

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)
Answered By: asmeurer

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
Answered By: hochl

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
Answered By: Nadir SOUALEM

I recommended :

  1. first, define a symbolic variable
x = sympy.symbols('x')
  1. second, define a symbolic function
f = sympy.Function('f')(x)
  1. 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)
Answered By: amir khatami

Creating a Undefined Function:

from sympy import *
f = symbols("f", cls=Function)

Answered By: Felipe Morelli
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.