找回密码
 欢迎注册
查看: 16914|回复: 22

[分享] 多项式转化为初等对称多项式表达式的算法

[复制链接]
发表于 2019-3-5 20:39:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
我觉得我发明了一个新算法,初步搜索没找到别人发表过。哪里能找到“很多结果”

另外我不明白下面的内容
https://reference.wolfram.com/la ... Polynomials.html.zh
当变量的顺序固定的时候,任意多项式f可以被唯一地表示为一个对称多项式p,称为f的对称部分,和一个不包含降幂单项式的余项q的和.

因为我的算法跟SymmetricReduction的结果不一致。而且以我的使用体验,我的结果更好。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-3-6 16:35:22 | 显示全部楼层
跟变量次序有关的Mathematica SymmetricReduction函数
  1. SymmetricReduction[5a^2+b^2,{a,b},{Subscript[s, 1] ,Subscript[s, 2]}]
  2. SymmetricReduction[5a^2+b^2,{b,a},{Subscript[s, 1] ,Subscript[s, 2]}]
  3. {SymmetricReduction[5a^2+b^2,{a,b},{Subscript[s, 1] ,Subscript[s, 2]}],
  4. SymmetricReduction[5a^2+b^2,{b,a},{Subscript[s, 1] ,Subscript[s, 2]}]}//Mean//Simplify
复制代码

究竟哪个才是正确/合理的?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-3-6 16:46:04 | 显示全部楼层
变量多了更麻烦
  1. Table[SymmetricReduction[
  2.   6 a^3 - 3 a^2 b - 9 a b^2 + 10 b^3 - 5 a^2 c - 5 a b c + 10 a c^2 +
  3.    b c^2 + 5 c^3, \[Sigma], {Subscript[s, 1] , Subscript[s, 2],
  4.    Subscript[s, 3]}], {\[Sigma], Permutations[{a, b, c}]}]
  5. Mean[%] // Simplify
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-3-7 14:58:10 | 显示全部楼层
SymmetricReduction希望对称部分满足f[a,b]=f[b,a]
或者f[a,b,c]=f[a,c,b]之类的
如果要对称部分,你要用Sum[f]/(n!)进行处理
大约就是这样的一个东西:
  1. n = 3(*f有3个变量*)
  2. f[a_, b_, c_] = a*100 + b*10 + c;
  3. Simplify[Plus @@ f @@@ Permutations[{a, b, c}]/n!]
复制代码
BTW,直接这样调用多好
  1. In[24]:= SymmetricReduction[5 a^2 + b^2, {a, b}]

  2. Out[24]= {-10 a b + 5 (a + b)^2, -4 b^2}
复制代码

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-3-7 16:58:00 | 显示全部楼层
.·.·. 发表于 2019-3-7 14:58
SymmetricReduction希望对称部分满足f[a,b]=f
或者f[a,b,c]=f[a,c,b]之类的
如果要对称部分,你要用Sum[f ...

Sum[f]/(n!)就是Mean/期望值,Permutations 已经包含n!了,我想知道的是期望值或者不同求算次序,哪个更“合理”,文献呐文献呐前人工作呐。

直接调用中间分析好看,下一步处理还是要换元的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-3-7 17:06:59 | 显示全部楼层
还有更多的转化算法
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-3-7 18:27:35 | 显示全部楼层
zeroieme 发表于 2019-3-7 16:58
Sum[f]/(n!)就是Mean/期望值,Permutations 已经包含n!了,我想知道的是期望值或者不同求算次序,哪个更 ...

我也不知道啊……
你不说“合理”的标准,我自然没办法告诉你什么是“合理”的了
毕竟,很多时候这种问题应该看使用场合的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-3-7 19:10:41 | 显示全部楼层
.·.·. 发表于 2019-3-7 18:27
我也不知道啊……
你不说“合理”的标准,我自然没办法告诉你什么是“合理”的了
毕竟,很多时候这种问 ...

“合理”要下引号,就是我不知道有什么前人订立标准。
本身是对称多项式的转化有唯一结果。对于非对称多项式, 依我看,要相关变量的全排列置换后求平均才是合理的,就是Sum[f]/(n!)。然而那是组合爆炸,有没有一种算法能直接得到这平均值结果呢?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-3-8 13:04:35 | 显示全部楼层
zeroieme 发表于 2019-3-7 19:10
“合理”要下引号,就是我不知道有什么前人订立标准。
本身是对称多项式的转化有唯一结果。对于非对称多 ...

为什么要组合数?
从最高次一次次往下迭代不就好了?
比如a^5+a^5b^3+b^4
首先选一个元素,比如a,将a^x替换成mean(...)^x=sum(...)^x/n!
然后选下一个元素,比如b,这时候,将b^x替换成mean(...)^x=sum(...)^x/n!,而如果这里存在b^x mean(...)^y,替换成mean(ab,...)^min(x,y)*sum(...)^|x-y|/n!
如果还有下一个,继续按照类似的方式进行替换
时间复杂度O(n^2*m)(n个变量,每一个变量出现m次)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-3-8 13:25:17 | 显示全部楼层
本帖最后由 zeroieme 于 2019-3-8 13:54 编辑
.·.·. 发表于 2019-3-8 13:04
为什么要组合数?
从最高次一次次往下迭代不就好了?
比如a^5+a^5b^3+b^4


明白!我昨天说的是最笨的办法!
你能帮忙找文献,有什么人定义过哪个结果合理么? 觉得有个方向再想算法能避免白费心思。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-3-29 04:31 , Processed in 0.044954 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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