zeroieme 发表于 2019-3-5 20:39:42

多项式转化为初等对称多项式表达式的算法

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

另外我不明白下面的内容
https://reference.wolfram.com/language/tutorial/SymmetricPolynomials.html.zh

当变量的顺序固定的时候,任意多项式f可以被唯一地表示为一个对称多项式p,称为f的对称部分,和一个不包含降幂单项式的余项q的和.
因为我的算法跟SymmetricReduction的结果不一致。而且以我的使用体验,我的结果更好。

zeroieme 发表于 2019-3-6 16:35:22

跟变量次序有关的Mathematica SymmetricReduction函数
SymmetricReduction ,Subscript}]
SymmetricReduction ,Subscript}]
{SymmetricReduction ,Subscript}],
SymmetricReduction ,Subscript}]}//Mean//Simplify
究竟哪个才是正确/合理的?

zeroieme 发表于 2019-3-6 16:46:04

变量多了更麻烦
Table[SymmetricReduction[
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 +
   b c^2 + 5 c^3, \, {Subscript , Subscript,
   Subscript}], {\, Permutations[{a, b, c}]}]
Mean[%] // Simplify

.·.·. 发表于 2019-3-7 14:58:10

SymmetricReduction希望对称部分满足f=f
或者f=f之类的
如果要对称部分,你要用Sum/(n!)进行处理
大约就是这样的一个东西:n = 3(*f有3个变量*)
f = a*100 + b*10 + c;
Simplify/n!]BTW,直接这样调用多好In:= SymmetricReduction

Out= {-10 a b + 5 (a + b)^2, -4 b^2}

zeroieme 发表于 2019-3-7 16:58:00

.·.·. 发表于 2019-3-7 14:58
SymmetricReduction希望对称部分满足f=f
或者f=f之类的
如果要对称部分,你要用Sum

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

直接调用中间分析好看,下一步处理还是要换元的:handshake

zeroieme 发表于 2019-3-7 17:06:59

还有更多的转化算法

.·.·. 发表于 2019-3-7 18:27:35

zeroieme 发表于 2019-3-7 16:58
Sum/(n!)就是Mean/期望值,Permutations 已经包含n!了,我想知道的是期望值或者不同求算次序,哪个更 ...

我也不知道啊……
你不说“合理”的标准,我自然没办法告诉你什么是“合理”的了
毕竟,很多时候这种问题应该看使用场合的

zeroieme 发表于 2019-3-7 19:10:41

.·.·. 发表于 2019-3-7 18:27
我也不知道啊……
你不说“合理”的标准,我自然没办法告诉你什么是“合理”的了
毕竟,很多时候这种问 ...

“合理”要下引号,就是我不知道有什么前人订立标准。
本身是对称多项式的转化有唯一结果。对于非对称多项式, 依我看,要相关变量的全排列置换后求平均才是合理的,就是Sum/(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次)

zeroieme 发表于 2019-3-8 13:25:17

本帖最后由 zeroieme 于 2019-3-8 13:54 编辑

.·.·. 发表于 2019-3-8 13:04
为什么要组合数?
从最高次一次次往下迭代不就好了?
比如a^5+a^5b^3+b^4


明白!我昨天说的是最笨的办法!:lol
你能帮忙找文献,有什么人定义过哪个结果合理么? 觉得有个方向再想算法能避免白费心思。
页: [1] 2
查看完整版本: 多项式转化为初等对称多项式表达式的算法