前言
在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