githubEdit

3.1 基本操作

3.1.1 替换

使用数学表达式最常见的一种方法是替换。替换将表达式中某物的所有实例替换为另一物。这是使用symbols对象的subs方法完成的。

普通替换

例:替换cos(x)+sin(pi/2)cos(x)+sin(pi/2)中的xxπ2\frac{\pi}{2}

[]:expr=cos(x)+sin(pi/2)

expr.subs(x, pi/2)

[]:

循环替换

例:对表达式1/(1+x)1/(1+x),执行5次将xx替换为11+x\frac{1}{1+x}的循环替换

[]:expr=1/(1+x)

for i in range(5): expr=expr.subs(x, 1/(1+x))

expr

[]:

3.1.2 字符串转为SymPy表达式

使用simpify函数,可以将字符串类型的表达式转为SymPy表达式 例:将字符串类型表达式"x**2+2*x+1"转为SymPy表达式:

[]:

3.1.3 表达式求值

使用exalf(precision)可以对数值表达式求值,precision为小数保留位数,precision默认为15。

例:对表达式13\sqrt{13}求值:

[]:

3.1.4 使用NumPy和SciPy计算

尽管subs和evalf可以很好的帮助我们进行计算,但是如果我们希望同时代入大量参数到一个公式进行计算,那么这时候你可能就忍受不了SymPy的运行效率了。

另外SymPy在计算精度上不如NumPy和SciPy,如果对机器精度有较高的要求的话,应该使用NumPy或SciPy这样的库。

将一个SymPy符号表达式转换成一个数值计算表达式最简单的方法是使用lambdify函数。lambdify的作用类似于lambda函数,只不过它将SymPy名称转换为特定数值库的名称,通常是NumPy。(?)

lambdify()函数用于转换表达式进行数值计算时需要指定三个参数,分别是变量,表达式和数值库。

例 将符号表达sinx+cosx\sin x + cos x 转为函数,并分别将0~9十个整数代入计算。

Last updated

Was this helpful?