ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3257|回复: 14

[求助] 有多项式展开计算程序吗

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-7-6 00:22 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
类似((M0+P0)^2+(M1+P1)^2+(M2+P2)^2)(M0-P0)(P0-C)
这种类型,甚至更复杂的,求能够一键展开成多项式的程序,或者给我指条路,是不是方方盒子有直接提供类似功能?
感觉程序应该不算太复杂才对。

TA的精华主题

TA的得分主题

发表于 2018-7-6 06:17 | 显示全部楼层
“感觉程序应该不算太复杂” ?

有明确值的变量计算,对电脑不是问题,但对于全是无值的变量的不固定的多项式的展开,本人暂时想不出

TA的精华主题

TA的得分主题

发表于 2018-7-6 07:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
看看逆波兰表达式是否能满足的要求,

TA的精华主题

TA的得分主题

发表于 2018-7-6 08:39 | 显示全部楼层
lipton 发表于 2018-7-6 07:36
看看逆波兰表达式是否能满足的要求,

不是逆波兰表达式能解决的问题。

楼主的要求,是平方的多项式展开。以及复合算式的展开。

如果只是平方计算,应该不太复杂。
用递归算法应该可以得到多项式的展开表达式。

如果是n次方多项式的展开,理论上也能行,但是可能很复杂。
还需要进行多项式同类合并处理吧(可以用字典,但需要先对变量排序。)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-7-6 09:02 | 显示全部楼层
香川群子 发表于 2018-7-6 08:39
不是逆波兰表达式能解决的问题。

楼主的要求,是平方的多项式展开。以及复合算式的展开。

数学是弱项,都还给老师了.

TA的精华主题

TA的得分主题

发表于 2018-7-6 10:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
多项式乘法 ,最后再合并

5551.JPG

book123.zip (13.82 KB, 下载次数: 3)

TA的精华主题

TA的得分主题

发表于 2018-7-6 14:41 | 显示全部楼层
你这个式子,看上去还算简单,但分解结果已经是36项了:
-C*M0^3-2*C*M0^2*P0-C*M0*M1^2-2*C*M0*M1*P1-C*M0*M2^2-2*C*M0*M2*P2-C*M0*P0^2-C*M0*P1^2-C*M0*P2^2-M0^2*P0^2-2*M0*P0^3-M1^2*P0^2-2*M1*P0^2*P1-M2^2*P0^2-2*M2*P0^2*P2-P0^4-P0^2*P1^2-P0^2*P2^2+C*M0^2*P0+2*C*M0*P0^2+C*M1^2*P0+2*C*M1*P0*P1+C*M2^2*P0+2*C*M2*P0*P2+C*P0^3+C*P0*P1^2+C*P0*P2^2+M0^3*P0+2*M0^2*P0^2+M0*M1^2*P0+2*M0*M1*P0*P1+M0*M2^2*P0+2*M0*M2*P0*P2+M0*P0^3+M0*P0*P1^2+M0*P0*P2^2

TA的精华主题

TA的得分主题

发表于 2018-7-6 14:57 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-7-6 16:32 | 显示全部楼层
多项式分解自定义函数的限制要求说明:
1.原始表达式只包含+-*^四种运算。(不能有除法,出现除法请自行用y=(1/x)变量代替)
2.幂乘只允许a^m或(a+b)^m的形式,且m必须为正整数。
3.变量只允许英文字母或字母加数字后缀的形式,如:a、A、a1、a101等,不允许p2p这种中间夹杂数字的形式。也不允许使用其它符号。如下划线
4.允许变量前带数值常数形式。 函数会自动补上乘号* 如:2a → 2*a , 3p1 → 3*p1
5.允许使用括号()区分计算顺序,函数会自动补上乘号,如:(a+b)(c+d) → (a+b)*(c+d)
6.允许使用全角括号(),但不允许使用全角的加号减号+-,只允许只用半角的+-

功能/算法说明:
1.首先把a^m展开为a*a*a……形式,便于简单数组编程计算。(如果直接计算a^m,遇到a^m*a^n=a^(m=n)形式时,人脑简单,但计算机处理就要多写更多的处理代码)
2.其次,优先计算(a+b)^m形式
3.接着计算(a+b)*(c+d)=a*c+a*d+b*c+b*d 的多项式展开
4.全部计算完成后,得到各个乘数项的加总表达式(上述计算过程都会随时进行排序,以便合并同类项)
5.对加总表达式结果进行合并同类项处理。(同一乘数项也进行相同变量的幂加总处理,即a*a*a=a^m)
6.过程中还需对系数的正负进行处理。(主要是多项式展开计算时,以及合并时的处理)

最后写了135行代码完成本次计算。

TA的精华主题

TA的得分主题

发表于 2018-7-6 16:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
算了一下(a+b+c+d+e+f+g)^5

展开式已经是5千多字符串了:
10*a^2*b^3+10*a^2*c^3+10*a^2*d^3+10*a^2*e^3+10*a^2*f^3+10*a^2*g^3+10*a^3*b^2+10*a^3*c^2+10*a^3*d^2+10*a^3*e^2+10*a^3*f^2+10*a^3*g^2+10*b^2*c^3+10*b^2*d^3+10*b^2*e^3+10*b^2*f^3+10*b^2*g^3+10*b^3*c^2+10*b^3*d^2+10*b^3*e^2+10*b^3*f^2+10*b^3*g^2+10*c^2*d^3+10*c^2*e^3+10*c^2*f^3+10*c^2*g^3+10*c^3*d^2+10*c^3*e^2+10*c^3*f^2+10*c^3*g^2+10*d^2*e^3+10*d^2*f^3+10*d^2*g^3+10*d^3*e^2+10*d^3*f^2+10*d^3*g^2+10*e^2*f^3+10*e^2*g^3+10*e^3*f^2+10*e^3*g^2+10*f^2*g^3+10*f^3*g^2+120*a*b*c*d*e+120*a*b*c*d*f+120*a*b*c*d*g+120*a*b*c*e*f+120*a*b*c*e*g+120*a*b*c*f*g+120*a*b*d*e*f+120*a*b*d*e*g+120*a*b*d*f*g+120*a*b*e*f*g+120*a*c*d*e*f+120*a*c*d*e*g+120*a*c*d*f*g+120*a*c*e*f*g+120*a*d*e*f*g+120*b*c*d*e*f+120*b*c*d*e*g+120*b*c*d*f*g+120*b*c*e*f*g+120*b*d*e*f*g+120*c*d*e*f*g+20*a*b*c^3+20*a*b*d^3+20*a*b*e^3+20*a*b*f^3+20*a*b*g^3+20*a*b^3*c+20*a*b^3*d+20*a*b^3*e+20*a*b^3*f+20*a*b^3*g+20*a*c*d^3+20*a*c*e^3+20*a*c*f^3+20*a*c*g^3+20*a*c^3*d+20*a*c^3*e+20*a*c^3*f+20*a*c^3*g+20*a*d*e^3+20*a*d*f^3+20*a*d*g^3+20*a*d^3*e+20*a*d^3*f+20*a*d^3*g+20*a*e*f^3+20*a*e*g^3+20*a*e^3*f+20*a*e^3*g+20*a*f*g^3+20*a*f^3*g+20*a^3*b*c+20*a^3*b*d+20*a^3*b*e+20*a^3*b*f+20*a^3*b*g+20*a^3*c*d+20*a^3*c*e+20*a^3*c*f+20*a^3*c*g+20*a^3*d*e+20*a^3*d*f+20*a^3*d*g+20*a^3*e*f+20*a^3*e*g+20*a^3*f*g+20*b*c*d^3+20*b*c*e^3+20*b*c*f^3+20*b*c*g^3+20*b*c^3*d+20*b*c^3*e+20*b*c^3*f+20*b*c^3*g+20*b*d*e^3+20*b*d*f^3+20*b*d*g^3+20*b*d^3*e+20*b*d^3*f+20*b*d^3*g+20*b*e*f^3+20*b*e*g^3+20*b*e^3*f+20*b*e^3*g+20*b*f*g^3+20*b*f^3*g+20*b^3*c*d+20*b^3*c*e+20*b^3*c*f+20*b^3*c*g+20*b^3*d*e+20*b^3*d*f+20*b^3*d*g+20*b^3*e*f+20*b^3*e*g+20*b^3*f*g+20*c*d*e^3+20*c*d*f^3+20*c*d*g^3+20*c*d^3*e+20*c*d^3*f+20*c*d^3*g+20*c*e*f^3+20*c*e*g^3+20*c*e^3*f+20*c*e^3*g+20*c*f*g^3+20*c*f^3*g+20*c^3*d*e+20*c^3*d*f+20*c^3*d*g+20*c^3*e*f+20*c^3*e*g+20*c^3*f*g+20*d*e*f^3+20*d*e*g^3+20*d*e^3*f+20*d*e^3*g+20*d*f*g^3+20*d*f^3*g+20*d^3*e*f+20*d^3*e*g+20*d^3*f*g+20*e*f*g^3+20*e*f^3*g+20*e^3*f*g+30*a*b^2*c^2+30*a*b^2*d^2+30*a*b^2*e^2+30*a*b^2*f^2+30*a*b^2*g^2+30*a*c^2*d^2+30*a*c^2*e^2+30*a*c^2*f^2+30*a*c^2*g^2+30*a*d^2*e^2+30*a*d^2*f^2+30*a*d^2*g^2+30*a*e^2*f^2+30*a*e^2*g^2+30*a*f^2*g^2+30*a^2*b*c^2+30*a^2*b*d^2+30*a^2*b*e^2+30*a^2*b*f^2+30*a^2*b*g^2+30*a^2*b^2*c+30*a^2*b^2*d+30*a^2*b^2*e+30*a^2*b^2*f+30*a^2*b^2*g+30*a^2*c*d^2+30*a^2*c*e^2+30*a^2*c*f^2+30*a^2*c*g^2+30*a^2*c^2*d+30*a^2*c^2*e+30*a^2*c^2*f+30*a^2*c^2*g+30*a^2*d*e^2+30*a^2*d*f^2+30*a^2*d*g^2+30*a^2*d^2*e+30*a^2*d^2*f+30*a^2*d^2*g+30*a^2*e*f^2+30*a^2*e*g^2+30*a^2*e^2*f+30*a^2*e^2*g+30*a^2*f*g^2+30*a^2*f^2*g+30*b*c^2*d^2+30*b*c^2*e^2+30*b*c^2*f^2+30*b*c^2*g^2+30*b*d^2*e^2+30*b*d^2*f^2+30*b*d^2*g^2+30*b*e^2*f^2+30*b*e^2*g^2+30*b*f^2*g^2+30*b^2*c*d^2+30*b^2*c*e^2+30*b^2*c*f^2+30*b^2*c*g^2+30*b^2*c^2*d+30*b^2*c^2*e+30*b^2*c^2*f+30*b^2*c^2*g+30*b^2*d*e^2+30*b^2*d*f^2+30*b^2*d*g^2+30*b^2*d^2*e+30*b^2*d^2*f+30*b^2*d^2*g+30*b^2*e*f^2+30*b^2*e*g^2+30*b^2*e^2*f+30*b^2*e^2*g+30*b^2*f*g^2+30*b^2*f^2*g+30*c*d^2*e^2+30*c*d^2*f^2+30*c*d^2*g^2+30*c*e^2*f^2+30*c*e^2*g^2+30*c*f^2*g^2+30*c^2*d*e^2+30*c^2*d*f^2+30*c^2*d*g^2+30*c^2*d^2*e+30*c^2*d^2*f+30*c^2*d^2*g+30*c^2*e*f^2+30*c^2*e*g^2+30*c^2*e^2*f+30*c^2*e^2*g+30*c^2*f*g^2+30*c^2*f^2*g+30*d*e^2*f^2+30*d*e^2*g^2+30*d*f^2*g^2+30*d^2*e*f^2+30*d^2*e*g^2+30*d^2*e^2*f+30*d^2*e^2*g+30*d^2*f*g^2+30*d^2*f^2*g+30*e*f^2*g^2+30*e^2*f*g^2+30*e^2*f^2*g+5*a*b^4+5*a*c^4+5*a*d^4+5*a*e^4+5*a*f^4+5*a*g^4+5*a^4*b+5*a^4*c+5*a^4*d+5*a^4*e+5*a^4*f+5*a^4*g+5*b*c^4+5*b*d^4+5*b*e^4+5*b*f^4+5*b*g^4+5*b^4*c+5*b^4*d+5*b^4*e+5*b^4*f+5*b^4*g+5*c*d^4+5*c*e^4+5*c*f^4+5*c*g^4+5*c^4*d+5*c^4*e+5*c^4*f+5*c^4*g+5*d*e^4+5*d*f^4+5*d*g^4+5*d^4*e+5*d^4*f+5*d^4*g+5*e*f^4+5*e*g^4+5*e^4*f+5*e^4*g+5*f*g^4+5*f^4*g+60*a*b*c*d^2+60*a*b*c*e^2+60*a*b*c*f^2+60*a*b*c*g^2+60*a*b*c^2*d+60*a*b*c^2*e+60*a*b*c^2*f+60*a*b*c^2*g+60*a*b*d*e^2+60*a*b*d*f^2+60*a*b*d*g^2+60*a*b*d^2*e+60*a*b*d^2*f+60*a*b*d^2*g+60*a*b*e*f^2+60*a*b*e*g^2+60*a*b*e^2*f+60*a*b*e^2*g+60*a*b*f*g^2+60*a*b*f^2*g+60*a*b^2*c*d+60*a*b^2*c*e+60*a*b^2*c*f+60*a*b^2*c*g+60*a*b^2*d*e+60*a*b^2*d*f+60*a*b^2*d*g+60*a*b^2*e*f+60*a*b^2*e*g+60*a*b^2*f*g+60*a*c*d*e^2+60*a*c*d*f^2+60*a*c*d*g^2+60*a*c*d^2*e+60*a*c*d^2*f+60*a*c*d^2*g+60*a*c*e*f^2+60*a*c*e*g^2+60*a*c*e^2*f+60*a*c*e^2*g+60*a*c*f*g^2+60*a*c*f^2*g+60*a*c^2*d*e+60*a*c^2*d*f+60*a*c^2*d*g+60*a*c^2*e*f+60*a*c^2*e*g+60*a*c^2*f*g+60*a*d*e*f^2+60*a*d*e*g^2+60*a*d*e^2*f+60*a*d*e^2*g+60*a*d*f*g^2+60*a*d*f^2*g+60*a*d^2*e*f+60*a*d^2*e*g+60*a*d^2*f*g+60*a*e*f*g^2+60*a*e*f^2*g+60*a*e^2*f*g+60*a^2*b*c*d+60*a^2*b*c*e+60*a^2*b*c*f+60*a^2*b*c*g+60*a^2*b*d*e+60*a^2*b*d*f+60*a^2*b*d*g+60*a^2*b*e*f+60*a^2*b*e*g+60*a^2*b*f*g+60*a^2*c*d*e+60*a^2*c*d*f+60*a^2*c*d*g+60*a^2*c*e*f+60*a^2*c*e*g+60*a^2*c*f*g+60*a^2*d*e*f+60*a^2*d*e*g+60*a^2*d*f*g+60*a^2*e*f*g+60*b*c*d*e^2+60*b*c*d*f^2+60*b*c*d*g^2+60*b*c*d^2*e+60*b*c*d^2*f+60*b*c*d^2*g+60*b*c*e*f^2+60*b*c*e*g^2+60*b*c*e^2*f+60*b*c*e^2*g+60*b*c*f*g^2+60*b*c*f^2*g+60*b*c^2*d*e+60*b*c^2*d*f+60*b*c^2*d*g+60*b*c^2*e*f+60*b*c^2*e*g+60*b*c^2*f*g+60*b*d*e*f^2+60*b*d*e*g^2+60*b*d*e^2*f+60*b*d*e^2*g+60*b*d*f*g^2+60*b*d*f^2*g+60*b*d^2*e*f+60*b*d^2*e*g+60*b*d^2*f*g+60*b*e*f*g^2+60*b*e*f^2*g+60*b*e^2*f*g+60*b^2*c*d*e+60*b^2*c*d*f+60*b^2*c*d*g+60*b^2*c*e*f+60*b^2*c*e*g+60*b^2*c*f*g+60*b^2*d*e*f+60*b^2*d*e*g+60*b^2*d*f*g+60*b^2*e*f*g+60*c*d*e*f^2+60*c*d*e*g^2+60*c*d*e^2*f+60*c*d*e^2*g+60*c*d*f*g^2+60*c*d*f^2*g+60*c*d^2*e*f+60*c*d^2*e*g+60*c*d^2*f*g+60*c*e*f*g^2+60*c*e*f^2*g+60*c*e^2*f*g+60*c^2*d*e*f+60*c^2*d*e*g+60*c^2*d*f*g+60*c^2*e*f*g+60*d*e*f*g^2+60*d*e*f^2*g+60*d*e^2*f*g+60*d^2*e*f*g+a^5+b^5+c^5+d^5+e^5+f^5+g^5
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-6 14:55 , Processed in 0.029271 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表