楼主: 698348
3514 0

[其他] Python使用scipy进行多项式计算与符号计算 [推广有奖]

已卖:51份资源

副教授

37%

还不是VIP/贵宾

-

威望
0
论坛币
51 个
通用积分
6.9682
学术水平
67 点
热心指数
82 点
信用等级
30 点
经验
8628 点
帖子
450
精华
1
在线时间
163 小时
注册时间
2017-2-7
最后登录
2025-8-11

楼主
698348 在职认证  发表于 2017-9-22 21:51:48 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

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



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

QQ截图20170922214330.png

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





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python SCI CIP 多项式 Variable Python使用 scipy Python符号计算 scipy多项式计算

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 00:21