用matlab和python实现符号运算

 

前言

在matlab中可以使用syms定义符号变量方便数学公式推导;在python中也有类似的功能,SymPy是Python强大的数学符号计算库。

在下面的例子中,我们定义函数

MATLAB符号变量

>> syms x y;  % 定义符号变量
>> f = x^2 + 2*y;
>> f
 
f =
 
x^2 + 2*y

分别对xy 求导

>> 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

分别对xy 求导

>>> 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

SymPy-符号运算好帮手

用SymPy简化神经网络的求导(微分)

[python科学计算]sympy求方程数值解的方法

SymPy库常用函数

 

转载于:https://my.oschina.net/keyven/blog/818412

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值