说我想以g(x)= x ^ 2 * ........的形式打印方程g(x)
我该怎么办?这是我第一次使用python
import numpy as np
import matplotlib.pyplot as plt
import math
from sympy.mpmath import *
f = lambda x: ((x^2)*math.exp(-x))
dfdx = lambda x: diff(f,x)
d2fdx2 = lambda x: diff(dfdx,x)
g = lambda x: ((math.exp(x)/math.factorial(2))*d2fdx2)
print(g)
(编辑)输出即时取消
函数lambda在0x0671C198
答案 0 :(得分:4)
首先丢弃所有不必要的进口并坚持你真正需要的东西。符号数学是()
的作用,因此请查看文档。
您必须首先定义sympy
symbols
现在,您将使用符号import sympy
x = symbols('x')
使用x
模块中的内置运算符和函数构造表达式。请注意,sympy
是取幂,**
是逻辑xor。
^
当您在交互式解释器中编写f = x ** 2 * sympy.exp(-x)
dfdx = sympy.diff(f, x)
d2fdx2 = sympy.diff(f, x, x)
g = sympy.exp(x) / sympy.factorial(2) * d2fdx2
时,它将按您希望的方式编写表达式。不能在这里显示,但至少我可以这样做:
g
您无法使用>>> print(g)
x**2/2 - 2*x + 1
,math
和sympy.mpmath
模块执行您想要的数字评估 - 他们需要数字并为您提供数字。
如果您以后想要为numpy
的给定值评估表达式,则可以
x
其中val_at_point = g.evalf(subs={x: 1.5})
是字典。
或者你可以将subs
变成python lambda函数:
g
如果你为数学课做这个,你可能想要在翻译中工作,在这种情况下,你可以从写作开始
fun_g = sympy.lambdify(x, g)
val_at_point = fun_g(1.5)
这样您就可以跳过上述代码示例中的所有>>> from sympy import *
内容。我把它们留在那里只是为了显示符号的来源。