如何在SymPy中定义数学函数?

Rob*_*bin 21 python sympy

我一直在尝试这几个小时.我想我不明白一个基本概念,这就是为什么到目前为止我无法回答这个问题.

我正在尝试的是实现一个简单的数学函数,如下所示:

f(x) = x**2 + 1
Run Code Online (Sandbox Code Playgroud)

之后我想得到那个功能.

我已经定义了符号和函数:

x = sympy.Symbol('x')
f = sympy.Function('f')(x)
Run Code Online (Sandbox Code Playgroud)

现在我正在努力为这个函数定义方程f(x).有点像f.exp("x**2 + 1")不起作用.

我也想知道在最终定义之后我怎么能打印出这个函数的控制台.

asm*_*rer 29

sympy.Function用于未定义的函数.就像f = Function('f')那时f(x)在表达式中仍然没有评估.

如果你想要一个实际的功能(比如,如果你做的f(1)是评估x**2 + 1x=1,你可以使用Python函数

def f(x):
    return x**2 + 1
Run Code Online (Sandbox Code Playgroud)

然后f(Symbol('x'))会给出一个象征性的x**2 + 1并且f(1)会给予2.

或者您可以将表达式分配给变量

f = x**2 + 1
Run Code Online (Sandbox Code Playgroud)

并使用它.如果要替换x值,请使用subs,如

f.subs(x, 1)
Run Code Online (Sandbox Code Playgroud)

  • @Bill `def f(...)` 将变量 `f` 设置为 def 定义的 Python 函数。如果你执行 `f = Function('f')`,它将覆盖变量 `f` 成为 SymPy 对象 `Function('f')`。我在这里显示的两个选项根本不使用“Function”。仅当您想要完全未评估的东西时才如此。另请参阅 [SymPy 教程](https://docs.sympy.org/latest/tutorial/gotchas.html#symbols) 中有关符号的部分。 (2认同)

ene*_*dil 9

这是你的解决方案:

>>> import sympy
>>> x = sympy.symbols('x')
>>> f = x**2 + 1
>>> sympy.diff(f, x)
2*x
Run Code Online (Sandbox Code Playgroud)


hoc*_*chl 5

另一种可能性(isympy命令提示符):

>>> type(x)
<class 'sympy.core.symbol.Symbol'>
>>> f = Lambda(x, x**2)
>>> f
     2
x ? x 
>>> f(3)
9
Run Code Online (Sandbox Code Playgroud)

计算导数的工作方式如下:

>>> g = Lambda(x, diff(f(x), x))
>>> g
x ? 2x
>>> g(3)
6
Run Code Online (Sandbox Code Playgroud)