三元多项式表示如下:
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; //区分原子节点or3 int exp; //指数域 4 union{5 float coef; //指向系数域6 struct MPNode *hp; //表节点的表头指针7 };8 struct MPNode *tp; //相当于线性链表的next,指向下一个元素的结点9 }* MPList;
相关链接:
数据结构28:广义表及m元多项式: