python中运算符号 |
您所在的位置:网站首页 › python符号计算库 › python中运算符号 |
Python中的sympy库 前几天因为要实现数学公式的代码,里面含有字符运算,因为matlab不支持从零开始查找矩阵,所以用了python中的sympy库。 一、安装sympy 1:在cmd中安装 因为大部分包的安装都差不多所以参考 文章转载自:https://www.cnblogs.com/wuwen19940508/p/6925191.html 2:在pycharm中安装
点击右面的 ‘+’号
接下就等待安装就行 二、方法 1:定义数学符号 让我们定义一个符号表达式代表数学表达式 。首先我们要注意到python中的变量必须赋值才能使用,所以无法表达该数学表达式。所以这里一定要引入特殊的符号,这里有两种方法
#_*_coding:utf-8_*_ from sympy import * #第一种方法Symbol(赋值单个字符) x1 = Symbol('x1') y1 = Symbol('y1') sum1= x1+2*y1 print(sum1) #第二种方法symbols(同时赋值多个字符) x2,y2 = symbols('x2 y2') sum2 = x2+2*y2 print(sum2) 2: 展开与折叠 展开:expand 例如:from sympy import * x,y = symbols('x y') d = 3*x*(5*x+4*y)**2 expand(d) 合并:factor #_*_coding:utf-8_*_ from sympy import * x,y = symbols('x y') d = 6*x**3+3*x**3 factor(d) 3:简化表达式 普通的: from sympy import simplify from sympy.abc import x simplify((x**3 + x**2 - x - 1)/(x**2 + 2*x + 1)) x – 1 三角化简 from sympy import trigsimp,sin,cos from sympy.abc import x,y y = sin(x)/cos(x)
trigsimp(y) tan(x) 指数化简 from sympy import * x,y,a,b = symbols('x y a b') sum = x**a*x**b powsimp(sum) x**(a+b) 4:解方程 注意在python中=是赋值的意思,==虽然表示等于,但是会有很大的问题。在sympy中,我们使用Eq(x,y)表示x=y from sympy import * x,y,a,b = symbols('x y a b') solve(Eq(2*6*x+8,20)) x=1 使用linsolve([方程1,方程2,...],(变量1,变量2,...)) #对多个方程求解,使用linsolve。方程的解为x=-1,y=3 linsolve([x+2*y-5,2*x+y-1], (x,y)) 5:赋值运算 from sympy import * x,y,a,b = symbols('x y a b') sum = 5*x**5+2*3*y sum = sum.subs(x,1) 6:求导数 from sympy import * x,y,a,b = symbols('x y a b') sum = 5*x**5+2*3*y sum1 = diff(sum,x) 7:积分 from sympy.abc import pi,x from sympy import integrate,sin
integrate(sin(x), (x,0,pi)) 答案:-cos(pi) + 1 8:极限 from sympy.abc import x from sympy import limit limit(1/x, x, 0, '+') 答案:oo 9:log运算 from sympy import log,expand_log from sympy.abc import x,y,e #expand_log为展开log,但需要将force=True,展开才能发生 expand_log(log(x**3), force=True) 3*log(x) #expand_log为展开log,但需要将force=True,展开才能发生 expand_log(log(x**3)) log(x**3) expand_log(log(e**x), force=True) x*log(e) 三、创建字符矩阵 在我用代码实现数学公式后。发现了一个如果随机创建矩阵,是数字矩阵的话就没办法运行,后来想到了创建符号矩阵。 符号矩阵采用了list[]在套一个list[]让它生成类似于矩阵。 [[Symbol('m') for w in range(5)] for w1 in range(5)] 通过这个办法就可以创建个符号矩阵。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |