python实现matlab中的diff,用matlab和python实现符号运算

前言

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

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

b4e770174174ccd519bdaa37fb1e75d7.png

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

>>

求函数

a7b7a31925f18d27200f90f067fbd5f3.png,例如对求极值点时非常有用

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

同样,求解函数

a7b7a31925f18d27200f90f067fbd5f3.png时的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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值