Python实现多项式加减乘除

编程入门 行业动态 更新时间:2024-10-18 20:29:42

Python实现<a href=https://www.elefans.com/category/jswz/34/1766651.html style=多项式加减乘除"/>

Python实现多项式加减乘除

1、多项式的表达

如何在程序中表示多项式?在这里我们用 列表 这个数据结构来表示多项式。对于多项式的运算,我们关注的就是系数以及指数(也就是次数)的变化,所以只需要记录多项式的系数和次数就可以了。

2、如何用列表表达多项式

这里用的是列表从多项式低次项开始。列表按照次数依次递增记录每一项的系数,也就是说列表记录的系数是从零次项依次递增到高次项系数。列表的索引值代表的是多项式的次数,保存的元素表示该次项的系数,,若不存在该次项则系数为0。例如 可表示成 [0,5,1],可表示成[3,0,-2,-1]。这种表示方法自动完成了系数的对齐。

3、多项式加减法的运算

计算多项式加法时,首先同次项对齐,然后同次项的系数相加即可。列表从多项式低次项开始的表示方法自动完成了对齐,所以直接从零次项开始,列表下标相同的元素相加存到结果列表中,对于较长的列表剩余元素直接复制到结果列表。

多项式减法,减去一个数加上这个数的相反数。L1-L2时,只需要将L2中元素都乘以-1,然后直接求和即可。

4、多项式乘除法

多项式乘法:第一步,选择最高次项较小的多项式作为基准(假设最高次为n),依次从该多项式中选择一个单项式乘以另一个多项式的每一项,这样就得到了n+1个多项式,每一回多项式的次数要比前一次多1,所以系数列表前面要补一个0。第二步将这n+1个多项式用之前的多项式相加的函数累加起来即可。

多项式除法:

  1. 当被除数最高项指数小于除数最高项指数时,商为0,余数为被除数。
  2. 当被除数最高项指数大于除数最高项指数时,计算如下:

  • 计算出需要循环除的次数为d=len(L1)-len(L2)+1。因为当新的被除数与除数次数相同时也要循环除一次。如上d=4-3+1=2
  • 用被除数最高次系数除以除数最高次系数,结果为商R的一部分。并在商前面填补适当个数的0记为T1,用于和除数的相乘。如上,除以得到-x,补0之后T1=[0,-1]。补0的个数为d-i。
  • 然后用商T1乘以除数,得到结果为T2。如上的[0,-1]*[0,5,1]得到结果即[0,0,-5,-1]
  • 用被除数T减去T2,得到除一次后余下的多项式,除完之后被除数要少一次。用减去得到即是[1,0,4,0],然后去掉最低次,新的被除数就是[1,0,4]。

以下附上多项式加减乘除的Python代码;

def add_poly(L1,L2): #多项式加法,同次项系数相加R=[]if len(L1)>len(L2):#默认L2比较长L1,L2=L2,L1i=0while i<len(L1):R.append(L1[i]+L2[i])#从低次项开始对应相加i+=1R=R+L2[len(L1):len(L2)]#较长的多项式高次项直接复制return Rdef subtract_poly(L1,L2): #多项式减法L2=L2[:]#为了不改变传入的L2for i in range(len(L2)):L2[i]=-L2[i]return(add_poly(L1,L2))def multiply_poly(L1,L2):#多项式乘法if len(L1)>len(L2):L1,L2=L2,L1zero=[];R=[]for i in L1:T=zero[:]#存储中间产生的结果多项式,每次更新结果多项式的列表长度for j in L2:#一个单项式乘以多项式的每一项T.append(i*j)R=add_poly(R,T)zero=zero+[0]# 每一个新的多形式都要比前一个多项式次数高1,列表长度增加,所以多补一个0return Rdef divide_poly(L1,L2):if len(L1)<len(L2):return 0,L1#商为0的情况d=len(L1)-len(L2)#循环除的次数为d+1T=L1[:]#被除数R=[]#商for i in range(d+1):n=T[len(T)-1]/L2[len(L2)-1]#被除数的最高次项系数除以除数的最高次项的系数R=[n]+RT1=[0]*(d-i)+[n]#对得到的商补若干个0T2=multiply_poly(T1,L2)#商乘以除数结果为T2T=subtract_poly(T,T2)#被除数减去T2T=T[:len(T)-1]#切片,被除数减少一次方return R,Twhile True:L1=input("\n请输入一个多项式L1的系数,低次在前,空格隔开")L1=L1.split(" ")L1=[int(e) for e in L1]L2=input("请输入一个多项式L2的系数,低次在前,空格隔开")L2=L2.split(" ")L2=[int(e) for e in L2]print("L1+L2:",add_poly(L1,L2))print("L1-L2:",subtract_poly(L1,L2))print("L1*L2:", multiply_poly(L1,L2))print("L1/L2:",divide_poly(L1,L2))

 

更多推荐

Python实现多项式加减乘除

本文发布于:2024-03-10 21:08:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1729039.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多项式   加减乘除   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!