python关于多项式乘积展开应该怎么写

yiqigo0215 2013-04-18 09:02:52
比如(2x+3y)(0.5+3x)(0.4+x)...( )这个多项式乘积 怎么展开
...全文
1344 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chyanog 2013-04-25
  • 打赏
  • 举报
回复
我用Mathematica试了下,1000项的话只需0.1s,Maple应该也很快。这种事情还是专业的工具更好,如果非要用python的话,前面已经说过了sagemath
http://aleph.sagemath.org/

Mathematica代码:

Product[3 x + i, {i, 0, 1000}] // Expand // Timing


angel_su 2013-04-24
  • 打赏
  • 举报
回复
每数都很大,项次又多,一般电脑不咋顶用...
yiqigo0215 2013-04-24
  • 打赏
  • 举报
回复
浮点数 好像也是很慢的 并且内存算到200项就不足了 有什么好的办法么。谢谢
angel_su 2013-04-24
  • 打赏
  • 举报
回复
可能在算大整数所以慢,可以的话系数改用浮点吧...
yiqigo0215 2013-04-24
  • 打赏
  • 举报
回复
如果我的多项式有500项或者 更多项 展开的话 from sympy import * x=Symbol('x') z=1 for i in xrange(1000): z=z*(3*x+i) expand(z) 这样 电脑的内存和运行时间会非常多 应该怎么办呢
angel_su 2013-04-21
  • 打赏
  • 举报
回复
前面说的是一元的,二元的,试试用字典表示...
ws0308 2013-04-21
  • 打赏
  • 举报
回复
yiqigo0215 2013-04-19
  • 打赏
  • 举报
回复
谢谢,系数对应的指数能返回么,含有xy的情况下
angel_su 2013-04-19
  • 打赏
  • 举报
回复
有不少第三方模块,用现成模块不好? >>> from numpy.polynomial.polynomial import Polynomial >>> p1 = Polynomial((0.5, 3)) # 0.5 + 3x >>> p2 = Polynomial((0.4, 1)) # 0.4 + x >>> p = p1*p2 # (0.5 + 3x)(0.4 + x) >>> list(p.coef) [0.20000000000000001, 1.7000000000000002, 3.0] >>> 写个简单的,如上一样用序列表示,下标当指数,元素值为系数: >>> def polymul(p1, p2): p = [0] * (len(p1) + len(p2) - 1) for e1, c1 in enumerate(p1): for e2, c2 in enumerate(p2): p[e1+e2] += c1 * c2 return p >>> polymul((0.5,3), (0.4, 1)) [0.2, 1.7000000000000002, 3] >>>
yiqigo0215 2013-04-19
  • 打赏
  • 举报
回复
我是想把这个多项式乘积展开,然后提取每一项的系数,应该怎么写呢
chyanog 2013-04-18
  • 打赏
  • 举报
回复
如果只是用的话,用sympy就行,或者sagemath

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧