您当前的位置:首页 > 计算机 > 编程开发 > Python

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

时间:12-24来源:作者:点击数:

本文代码主要演示如何使用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

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门