编写之初

由于利用留数定理分解分式多项式的计算麻烦,所以决定用python做一个利用留数定理分解分式多项式程序,实现只要输入多项式就可以得到各种中间参数和最终拆分结果的目的。从本程序可以得到:分解后每项多项式分子值、计算分解后每项多项式分子值的过程展示、最终分解结果展示。

算数实现

利用留数定理分解分式多项式计算过程以下图为例所示

对于算数运算形象的理解:以该式为例,分解后各项分母为原多项式分母中的各项(s、(s+2)、(s+3)²)加上这些项中高次幂项去掉次幂为分母的项((s+3));分解后各项分子为原多项式分母依次去掉各项后求极限所得值(-4、1/3、3)以及n(n>1)次幂项去掉该项后的n阶微分式求极限所得值(-10/3)。也依据这个思路编写程序。

依赖的包

1.sympy模块
sympy模块,可以进行符号计算,可以定义符号变量,进行代数运算,以及微分运算、积分运算等。

pip install sympy

2.re正则化模块
re模块是python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的。

pip install re

完整代码及注释

import sympy as sp
import res = sp.symbols('s')     # 创建符号变量print('以 6*(s+1)/(s*(s+2)*(s+3)**2) 形式为例')
Y = input('请输入待分解多项式:')   # 复制 例 6*(s+1)/(s*(s+2)*(s+3)**2)# denominator = y.split('/')[0]   # 分子项
molecule = Y.split('/')[1]      # 分母项moleculelist = molecule.strip('()').split('*')  # 分母每项
# print(moleculelist)reg = re.compile(r"(?<=\*)\d+")     # 获取分式中的幂数
match=reg.search(Y)
pow = match.group(0)molecule_number = 0     # 初始化分母项索引
# 计算拆分后各项值
while molecule_number < len(moleculelist):try:if moleculelist[molecule_number] != '':if moleculelist[molecule_number + 1] != '':y = Y.replace(moleculelist[molecule_number]+'*', '')    # 得到用来计算 该项分子值 的多项式if moleculelist[molecule_number] == 's':value = sp.limit(y, s, 0)               # 求极限计算 该项分子值print('\n计算分母为' + str(moleculelist[molecule_number]) +'项的分子:limit——>0 ', y)print('计算得;', value)else:limit_value = -int(re.findall('(\d+)', moleculelist[molecule_number])[0])   # 获取求极限时的 极限参数value = sp.limit(y, s, limit_value)         # 求极限计算 该项分子值print('计算分母为' + str(moleculelist[molecule_number]) +'项的分子:limit——>' + str(limit_value), y)print('计算得:', value)else:y = Y.replace('*' + moleculelist[molecule_number] + '**' + pow, '')     # 得到用来计算 该项分子值 的多项式limit_value = -int(re.findall('(\d+)', moleculelist[molecule_number])[0])       # 获取求极限时的 极限参数value = sp.limit(y, s, limit_value)         # 求极限计算 该项分子值print('计算分母为' + str(moleculelist[molecule_number]) + '**' + pow + '项的分子:limit——>' + str(limit_value), y)print('计算得:', value)y_diff = sp.together(sp.diff(y, s, int(pow)-1))      # 求解 除n次幂项外分式 n阶导数limit_value = -int(re.findall('(\d+)', moleculelist[molecule_number])[0])       # 获取求极限时的 极限参数value = sp.limit(y_diff, s, limit_value)        # 求极限计算 该项分子值print('计算分母为' + str(moleculelist[molecule_number]) + '项的'+ str(int(pow)-1) + '阶导数的分子:limit——>' + str(limit_value), y_diff)print('计算得:', value)except: passmolecule_number += 1# print(molecule+'\n'+molecule)
print('分解结果为:',sp.apart(Y, s))      # 拆分结果

运行结果

运行代码,首先以例示形式输入待分解多项式,得到分解过程及结果

感悟与不足

本来打算纯手写一个留数定理分解分式多项式的程序,但是由于其中涉及到极限与微分的计算,而这两个模块编写起来又要一定时间,于是借助了sympy模块辅助编程,但是我意外地发现,sympy模块居然自带多项式分解函数 sympy.apart()因此我也在呈现分解结果时用到了这个函数,免去了字符串处理当中的一系列麻烦。因此如果大家对多项式分解的过程不在意,只想得到分解结果,只需执行sympy.apart()函数即可,至于它其中的运算原理我也不得而知。

python实现利用留数定理分解分式多项式相关推荐

  1. python多项分式求和计算_python实现利用留数定理分解分式多项式

    编写之初 由于利用留数定理分解分式多项式的计算麻烦,所以决定用python做一个利用留数定理分解分式多项式程序,实现只要输入多项式就可以得到各种中间参数和最终拆分结果的目的.从本程序可以得到:分解后每 ...

  2. 分式求和python_python实现利用留数定理分解分式多项式

    编写之初 由于利用留数定理分解分式多项式的计算麻烦,所以决定用python做一个利用留数定理分解分式多项式程序,实现只要输入多项式就可以得到各种中间参数和最终拆分结果的目的.从本程序可以得到:分解后每 ...

  3. 幂级数展开求积分_[干货]---如何利用留数定理计算积分

    留下来的都是精华. 留数理论的一个重要应用就是用来计算实函数的积分,我们先从复变函数的孤立奇点的分类将起: 定义: 是一个全纯函数: 当存在一个半径 时,有 时.这时称 为复变函数 的一个孤立奇点.现 ...

  4. 利用留数定理计算傅立叶变换积分

    第一题:

  5. 利用留数定理计算实积分

    理论上一切的0到2pi的三角积分都可以用这个方法解决.

  6. 利用留数定理计算实积分进阶例子

  7. 数学物理方法 05 留数定理

    第五章留数定理 \color{blue}{第五章 留数定理} §5.1留数定理 \color{blue}{\S 5.1 留数定理} 5.1.1留数定理 \color{blue}{5.1.1 留数定理} ...

  8. pythonchar中的拟合方法_在python中利用numpy求解多项式以及多项式拟合的方法

    构建一个二阶多项式:x^2 - 4x + 3 多项式求解 >>> p = np.poly1d([1,-4,3]) #二阶多项式系数 >>> p(0) #自变量为0时 ...

  9. 【机器学习|数学基础】Mathematics for Machine Learning系列之矩阵理论(13):Hamliton-Cayley定理、最小多项式

    目录 前言 往期文章 3.4 Hamliton-Cayley定理.最小多项式 定义3.19 Hamliton-Cayley定理 定义3.20 定理3.4.1 定理3.4.2 定理3.4.3 定理3.4 ...

最新文章

  1. python 函数参数 (必选参数、默认参数、可选参数、关键字参数)
  2. OpenGL多光源Multiple lights
  3. 四元素的真面目..........简单粗暴
  4. 海量结构化数据存储技术揭秘:Tablestore存储和索引引擎详解
  5. 用php web编程作业,用PHP进行Web编程.ppt
  6. Java嵌入式数据库H2学习总结(一)——H2数据库入门
  7. 交换机和路由器的区别_秒懂交换机和路由器的功用区别 拷贝
  8. Java设计模式05:常用设计模式之原型模式(创建型模式)
  9. 用python写一个hello world程序
  10. c#构造器的一点理解(三)
  11. 如何救队友_PS4《高达EXVSMBON》:如何违抗拥有巴力的他?
  12. Redis学习笔记(四)——数据结构之List
  13. 代码整洁读书笔记---序,前言,代码猴子
  14. C语言俄罗斯方块代码(成功版)
  15. Python高级教程
  16. 机器学习-凸优化理论-课堂笔记
  17. 51单片机——外部中断
  18. linux下删除一个环境变量,Linux 添加环境变量和删除环境变量
  19. 永久删除的文件如何恢复?
  20. RGB图像-像素、分辨率、相关概念

热门文章

  1. 软件版本各阶段英文名称
  2. c语言矩阵的逆的程序,C语言求矩阵的逆矩阵
  3. 简单易懂读《重构》 - Feature Envy (依恋情结)
  4. websphere 实用_将WebSphere Cast Iron Studio PGP活动与外部PGP实用程序一起使用
  5. JavaCV开发详解之3:通用拉流器实现,从流媒体服务器拉流rtsp/rtmp录制成视频文件
  6. mcafee 8.5杀毒软件下载
  7. 拳皇2000 全出招表 (ARC)
  8. 线扫相机DALSA-Image Format(读图格式设置)
  9. 构造器(有参、无参)
  10. GraphX与GraphLab、Pregel的对比