数据结构5.4_m元多项式的表示

 

三元多项式表示如下:

P(x,y,z) = x10y3z2 + 2x6y3z2 + 3x5y2z2 + x4y4z + 6x3y4z + 2yz + 15

然后对式子进行变形:

P(x,y,z)=((x10+2x6)y3+3x5y2)z2+((x4+6x3)y4+2y)z+15

上面的三元多项式可以看成是z的一元多项式。即P(x,y,z)=Az2+Bz1+Cz0

其中A=((x10+2x6)y3+3x5y2)、B=((x4+6x3)y4+2y)、C=15;

然后二元多项式A(x,y)又可以看成是关于y的一元多项式;B也如此;

A(x,y)=((x10+2x6)y3+3x5y2)=Cy3+Dy2

其中C=x10+2x6、D=3x5

分解到此处可以看出C、D是关于x的一元多项式;

这种嵌套结构把m元多项式层层分解;很好地表示了一元多项式。

 

任何一个m元多项式可以分解出一个主变元,随后再分解出第二个变元等等;

 接下来可以用广义表的数据结构来表示m元多项式;

1 typedef struct MPNode{
2         ElemTag    tag;  //区分原子节点or
3         int             exp;  //指数域  
4         union{
5                 float    coef;  //指向系数域
6                struct   MPNode   *hp;  //表节点的表头指针
7         };
8         struct MPNode    *tp; //相当于线性链表的next,指向下一个元素的结点
9 }* MPList;

 

相关链接:

数据结构28:广义表及m元多项式:https://www.cnblogs.com/ciyeer/p/9040516.html

posted @ 2019-02-18 22:50  Grooovvve  阅读(626)  评论(0编辑  收藏  举报