前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python使用scipy进行多项式计算与符号计算

Python使用scipy进行多项式计算与符号计算

作者头像
Python小屋屋主
发布2018-04-16 17:13:43
3K0
发布2018-04-16 17:13:43
举报
文章被收录于专栏:Python小屋

在扩展库numpy和scipy中都有poly1d,用法一样,实际上是同一个库,scipy是基于numpy的。有图为证

本文代码主要演示如何使用poly1d进行多项式计算和符号计算。

>>> from scipy import poly1d

>>> p1 = poly1d([1,2,3,4]) # 输出结果中,第一行的数字为第二行对应位置项中x的指数 >>> print(p1) 3 2 1 x + 2 x + 3 x + 4

# 等价于p2=(x-1)(x-2)(x-3)(x-4) >>> p2 = poly1d([1,2,3,4], True) >>> print(p2) 4 3 2 1 x - 10 x + 35 x - 50 x + 24

# 使用z作为变量,这只是个形式,并不影响计算 >>> p3 = poly1d([1,2,3,4], variable='z') >>> print(p3) 3 2 1 z + 2 z + 3 z + 4

# 把多项式中的变量替换为指定的值

# 多项式求值 >>> p1(0) 4 >>> p1(1) 10

# 计算多项式对应方程的根 >>> p1.r array([-1.65062919+0.j , -0.17468540+1.54686889j, -0.17468540-1.54686889j]) # 把根带入多项式验证一下

>>> p1(p1.r[0]) (-8.8817841970012523e-16+0j)

# 查看和修改多项式的系数 >>> p1.c array([1, 2, 3, 4]) >>> print(p3) 3 2 1 z + 2 z + 3 z + 4 >>> p3.c[0] = 5 >>> print(p3) 3 2 5 z + 2 z + 3 z + 4

# 查看多项式最高阶 >>> p1.order 3

# 查看指定指数对应的项的系数 # 例如,在p1多项式中,指数为3的项的系数为1 >>> p1[3] 1 >>> p1[0] 4

# 加、减、乘、除、幂运算 >>> print(p1) 3 2 1 x + 2 x + 3 x + 4 >>> print(-p1) 3 2 -1 x - 2 x - 3 x - 4

>>> print(p2) 4 3 2 1 x - 10 x + 35 x - 50 x + 24 >>> print(p1 + 3) 3 2 1 x + 2 x + 3 x + 7 >>> print(p1 + p2) 4 3 2 1 x - 9 x + 37 x - 47 x + 28 >>> print(p1 - 5) 3 2 1 x + 2 x + 3 x - 1 >>> print(p2 - p1) 4 3 2 1 x - 11 x + 33 x - 53 x + 20 >>> print(p1 * 3) 3 2 3 x + 6 x + 9 x + 12 >>> print(p1 * p2) 7 6 5 4 3 2 1 x - 8 x + 18 x - 6 x - 11 x + 38 x - 128 x + 96 >>> p1 * p2 poly1d([ 1., -8., 18., -6., -11., 38., -128., 96.]) # 除法返回商多项式和余多项式

>>> print(p1*p2 / p2) (poly1d([ 1., 2., 3., 4.]), poly1d([ 0.])) >>> print(p2/p1) (poly1d([ 1., -12.]), poly1d([ 56., -18., 72.]))

# 多项式的幂运算 >>> print(p1 ** 2) 6 5 4 3 2 1 x + 4 x + 10 x + 20 x + 25 x + 24 x + 16 >>> print(p1 * p1) 6 5 4 3 2 1 x + 4 x + 10 x + 20 x + 25 x + 24 x + 16

# 一阶导数 >>> print(p1.deriv()) 2 3 x + 4 x + 3 # 二阶导数 >>> print(p1.deriv(2)) 6 x + 4

# 当x=1时二阶导数多项式的值

>>> print(p1.deriv(2)(1)) 10

# 多项式的不定积分 # 一重不定积分,设常数项为0 >>> print(p1.integ(m=1, k=0)) 4 3 2 0.25 x + 0.6667 x + 1.5 x + 4 x # 二重不定积分,设常数项为3 >>> print(p1.integ(m=2, k=3)) 5 4 3 2 0.05 x + 0.1667 x + 0.5 x + 2 x + 3 x + 3

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档