Mathematica一种实现多项式合并化简的方法
问题描述
当符号计算多项式涉及叠波、频谱分析等的时候,对如下多项式的简化
mathematica的Simplify或factor函数实现的形式并不是我们想要的,因为在计算机并不能识别你输入的公式符号变量的权重,它对所有变量一视同仁,导致最后的结果只是形式上的整理。实际上我们需要将多项式相同指数项选择性的合并操作,例如
而实际情况下在涉及复杂多项式的对应简化,人工手动选择逐一合并是不现实的,所以本文提出一个解决的方案。
解决方案
核心的函数是PotionIndex和映射定义1。
首先将多项式逐项展开成列表形式:
1 |
|
有了以上的逐项展开式,我们可以分别对多项式的子项进行操作,由此,可以调用FirstCase函数并创建映射关系,提取列表的每一项的系数和指数信息,并将指数转换成系数矩阵的形式:
1 |
|
由于实际的多项式指数部分的可能只有常系数,所以转换来的系数矩阵可能是空集,因此我们需要把这部分空集去掉。
这里一开始要确定空集的位置:
1 |
|
由此获得coefflist去除空集后的列表,进而得到去除空集的元素位置::
1 |
|
这里使用List结构和循环结构,分别计算系数项,e指数项以及常数项:
系数项:
1 |
|
指数项:
1 |
|
常数项:
1 |
|
最后只需要
1 |
|
即可得到最后的归并形式。
参考
1. 这是小憩片刻的思路
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!