前言
在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 f
x**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 f
x + 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 = 0
for i in range(0, 4):
for j in range(0, 4):
if i != j:
func = func + apples[i] * apples[j]
func = func / 2
print func
Reference