操纵多元多项式matlab的最佳方法

时间:2014-06-26 14:15:13

标签: matlab matrix symbolic-math polynomials

我正在寻找一种在Matlab中操纵多元多项式的好方法。这个问题的目的非常全球化。目前,我在MATLAB中操作一些多项式矩阵(目前有2个变量)。为简化此操作,我将每个矩阵拆分为四个新矩阵:

  • 一个用于定义系数:C
  • 一个用于定义指数:E(见下文)
  • 一个用于定义第一个变量X的力量:MX
  • 一个用于定义第二个变量Y的装腔作势:MY

因此,您可以通过这种方式评估多项式矩阵C./h^E.*X.^MX.*Y.^MY。由于某种原因,有时多项式矩阵的每个分量可以是一些单项式的和。在这种情况下,我使用了一些nD数组(和sum(.,3))。

对于我的工作,我还需要定义关于XY的多项式矩阵的导数。使用先前的公式,可以通过将1减去相关矩阵MXMY并将C乘以右矩阵MX或{{1 }}。

目前这种方法适用于较低的度数,但我还需要乘以一些多项式矩阵,这是这种方法的一个大问题。为了解决这个问题,我手动编写了完整的矩阵产品(使用Mathematica计算)。

我希望扩展我的代码以获得更高的度数并更容易地操作多项式矩阵。所以,如果你有任何想法这样做。

我可以在Matlab中使用任何工具箱,但最后我需要有矩阵MYMXMYE(我需要这个分隔的矩阵做一些特定的计算)。我尝试使用C,但是当多项式矩阵复杂时,似乎很难提取这四个矩阵。

示例:

Symbolic Toolbox

问题:计算 H=[ 1 0 Y/h 10*Y^2/h^2 5X*Y/h^2 0 0 1 -X/h X/h 50*X^2/h^2 60*X*Y/h^2 ] C=[ 1 0 1 10 5 0 0 1 -1 1 50 60 ] E=[ 0 0 1 2 2 0 0 1 1 1 2 2 ] MX=[ 0 0 0 0 1 0 0 0 1 1 2 1 ] MY=[ 0 0 1 2 1 0 0 0 0 0 0 1 ] 并提取H*D'CEMX(上面定义MY)和

H

1 个答案:

答案 0 :(得分:1)

最后我找到了一个解决方案。不幸的是(或不是)我使用Symbolic Toolbox。在我的例子中,我考虑7个符号变量,多项式的变量是XY。 matlab变量polystruct,其中包含字段pp是多项式的symfun矩阵。

对于输出参数,CEMXMY分别包含在polyOut.multpolyOut.exph,{{1}中}和polyOut.expoX

polyOut.expoY