假如一个多项式:
一个多项式如果使用数组结构存储在计算机中,有以下两种表示法:
(1).使用一个 n+2长度的一维数组来存放,数组的第一个位置存储最大指数n项的系数,其他位置按照指数n递减,按序存储对应项的系数:
使用这种表示法的优点就是在计算机运行过程中,对于多项式的各种运算的设计比较方便。不过,在多项式的系数多半为0,例如
x^100+1
就太浪费内存空间
(2)只存储多项式的非零项。如果有m项非零项,就使用2m+1的数组来存储每一个非零项的指数和系数,数组的第一个元素则是此多项式非零项的个数。
优点:节省不必要的内存空间
缺点:在设计多项式各种运算时较为复杂
#设计一个Python程序,进行两个多项式的加法运算:
'''
计算3x^4+7x^3+6x+2与x^4+5x^3+2x^2+9的和
'''
#将两个最高次方相等的多项式相加后输出结果
ITEMS=6
def PrintPoly(Poly,items):
MaxExp=Poly[0] #记录n次多项式
for i in range(1,Poly[0]+2):#从an~a0
MaxExp=MaxExp-1
if Poly[i]!=0:
if (MaxExp+1)!=0:
print('%dx^%d'%(Poly[i],MaxExp+1),end=' ')
else:
print('%d' %Poly[i],end=' ')
if MaxExp>=0:
print('%c' %'+',end=' ')
print()
def PolySum(Poly1,Poly2):
result=[None]*ITEMS
result[0]=Poly1[0]
for i in range(1,Poly1[0]+2):
result[i]=Poly1[i]+Poly2[i] #等幂次的系数相加
PrintPoly(result,ITEMS)
PolyA=[4,3,7,0,6,2] #声明多项式A
PolyB=[4,1,5,2,0,9] #声明多项式B
print('多项式A',end=' ')
PrintPoly(PolyA,ITEMS)
print('多项式B',end=' ')
PrintPoly(PolyB,ITEMS)
print('A+B=',end=' ')
PolySum(PolyA,PolyB)
运算结果: