前言
在matlab中可以使用syms定义符号变量,方便数学公式推导;在python中也有类似的功能,SymPy是Python强大的数学符号计算库。
在下面的例子中,我们定义函数
MATLAB符号变量
>> syms x y; % 定义符号变量>> f = x^2 + 2*y;>> f f = x^2 + 2*y
分别对x 和y 求导
>> diff(f, x) ans = 2*x >> diff(f, y) ans = 2
将具体值赋予指定变量时
>> subs(f, {x, y}, {2, 1}) ans = 6 >> subs(f, {x}, {3}) ans = 2*y + 9 >>
求函数,例如对求极值点时非常有用
>> f = x + 1 f = x + 1 >> solve(f, x) ans = -1
Python符号变量
>>> from sympy import *>>> x, y = symbols('x y')>>> f = x**2 + 2*y>>> print fx**2 + 2*y
分别对x 和y 求导
>>> print diff(f, x)2*x>>> print diff(f, y)2
将具体值赋予指定变量时
>>> print f.evalf(subs = {x:2, y:1}) # 求表达式的浮点数-evalf()函数6.00000000000000>>> print f.subs({x:2, y:1})6>>> print f.subs(x, 3)2*y + 9
同样,求解函数时的x 值
>>> f = x + 1>>> print fx + 1>>> print solve(f, x)[-1]
一个例子
from sympy import *apples = []letters = [chr(i) for i in range(97,123)]str = ''for i in range(0,4): apples.append(symbols(letters[i]))func = 0for i in range(0, 4): for j in range(0, 4): if i != j: func = func + apples[i] * apples[j]func = func / 2print func
Reference