【Python】Numpy处理多项式类Polynomial

news2025/1/13 3:11:30

文章目录

    • 构造函数
    • 求导和积分
    • 求根和反演
    • 采样与拟合
    • 其他方法

构造函数

Numpy中提供了多项式模块,里面封装了一些用以快速解决多项式问题的类和函数,其中最重要类的自然是Polynomial,其构造函数为

class numpy.polynomial.polynomial.Polynomial(coef, domain=None, window=None, symbol='x')

其中coef为多项式的系数,例如 4 + 3 x + 2 x 2 + x 3 4+3x+2x^2+x^3 4+3x+2x2+x3可写为

from numpy.polynomial import polynomial as poly
p3 = poly.Polynomial(coef=[4,3,2,1])
print(p3)
# 输出为4.0 + 3.0 x**1 + 2.0 x**2 + 1.0 x**3

domian x x x的定义域,window为定义域的放缩因子;symbol为多项式的自变量符号,默认为x

求导和积分

Polynomial支持简单的符号计算,比如可通过deriv(n)求多项式的n阶导数;通过integ(n)可求n阶积分。

>>> p3.deriv(1)
Polynomial([3., 4., 3.], domain=[-1.,  1.], window=[-1.,  1.])
>>> p3.deriv(3)     # 3阶导数为6
Polynomial([6.], domain=[-1.,  1.], window=[-1.,  1.])
>>> p3.integ(2)
Polynomial([0.        , 0.        , 2.        , 0.5       , 0.16666667,  0.05      ], domain=[-1.,  1.], window=[-1.,  1.])

求根和反演

roots可用于求根,而fromroot可根据根来生成多项式

rs = p3.roots()
print(rs)
# [-1.65062919+0.j  
# -0.1746854 -1.54686889j 
# -0.1746854 +1.54686889j]
pNew = p3.fromroots(rs)
print(pNew)
#(4.000000000000001-1.1102230246251565e-16j) +
#(3.0000000000000018+0j) x**1 + (1.9999999999999991+0j) x**2 + (1+0j) x**3

由于浮点计算会引入误差,所以fromroot并不是严格意义上root的逆过程,但这个误差是极小的。

采样与拟合

通过linspace可以在定义域范围内对多项式进行采样,

import matplotlib.pyplot as plt
xs, ys = p3.linspace()
plt.plot(xs, ys)
plt.show()

效果为

在这里插入图片描述

linspace有一个参数n,表示在定义域范围内等间隔生成n x , y x,y x,y,默认为100。

Polynomial类中最强大的函数非fit莫属,其功能是基于最小二乘法的多项式拟合,构造函数为

Polynomial.fit(x, y, deg, domain=None, rcond=None, full=False, w=None, window=None, symbol='x')

其中domain, window, symbol不必赘述,其中x,y为待拟合多项式;deg为多项式的阶数。rcond表示截止误差。fullFalse时,只返回拟合系数,否则还返回拟合的标准差等。

>>> p3.fit(xs, ys, 3)
Polynomial([4., 3., 2., 1.], domain=[-1.,  1.], window=[-1.,  1.])
>>> p3.fit(xs, ys, 4)
Polynomial([ 4.0000000e+00,  3.0000000e+00,  2.0000000e+00,  1.0000000e+00,
       -9.6550042e-15], domain=[-1.,  1.], window=[-1.,  1.])

其他方法

degree返回多项式的最高项次数,cutdeg可以对多项式的次数做阶段,例如

>>> p3.degree()
3
>>> p3.cutdeg(2)
Polynomial([4., 3., 2.], domain=[-1.,  1.], window=[-1.,  1.])

Polynomial类提供了一些用于比较的函数,相当于是运算符重载的补充,包括

  • has_samecoef
  • has_samedomain
  • has_sametype
  • has_samewindow

其命名很直观,不必多言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/145742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

list容器的底层结构(详述insert()与erase())

目录 一、带头结点的双向循环链表(list) 二、贯穿list容器的insert与erase接口​编辑 一、带头结点的双向循环链表(list) 二、贯穿list容器的insert与erase接口 通过在指定位置的元素之前插入新元素来扩展容器。 这有效地增加了…

520页(17万字)集团大数据平台整体解决方案-v1.0

【版权声明】本资料来源网络,知识分享,仅供个人学习,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间删除!完整资料领取见文末,部分资料内容: 1.1.1 系统总体逻辑结构 4-14系…

Golang 面试题总结

一.基础部分 go语言的值类型和引用类型? 值类型:int、float、bool、string和数组这些类型都属于值类型。 值类型的变量直接指向存在内存中的值,值类型的变量的值存储在栈中。当使用 将一个变量的值赋给另一个变量时,如 j i ,实…

九、k8s 安全认证

文章目录1 访问控制概述2 认证管理3 授权管理4 准入控制1 访问控制概述 Kubernetes作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。所谓的安全性其实就是保证对Kubernetes的各种客户端进行认证和鉴权操作。 客户端 在Kubernetes集群中&#…

MySQL调优-深入理解MVCC机制

目录 MySQL调优-深入理解MVCC机制 MVCC多版本并发控制机制 undo日志版本链与read view机制详解 根据图2和图3对应画出下图的undo日志版本链: 版本链比对规则: 注意: 举例1:分析一下下图select1的read_view以及各个select语句…

Cadence PCB仿真使用Allegro PCB SI导入其他板卡的层叠结构的方法图文教程

⏪《上一篇》   🏡《总目录》   ⏩《下一篇》 目录 1,概述2,导入方法3,总结1,概述 本文详细介绍使用Allegro PCB SI PCB仿真软件导入其他电路板层叠结构的方法。 2,导入方法 第1步:打开待仿真的PCB文件,并确认软件为Allegro PCB SI 如果,打开软件不是Allegro PC…

STL-vector的接口使用及模拟实现

文章目录vector类的介绍vector类的常用接口介绍 构造相关 无参构造迭代器区间构造拷贝构造 容量相关的接口 sizereserveresizecapacityempty 数据访问及遍历相关的接口 operator[]begin endrbegin rend 修改数据相关的接口 push_backpop_backinserterase vector类的模拟实现…

excel统计函数:应用广泛的动态统计之王OFFSET 下篇

【前言】在上篇文章中,我们了解了OFFSET函数的运算原理和各个参数的作用,并且我们也通过一些OFFSET的案例,了解了它的用途。那么本篇我们继续来看看,OFFSET函数在实际工作中所能起到的强大效果吧。一、高阶应用的思路(…

vector使用指南

目录 引言 空间配置器 vector 与 string的一些差异 vector容器与string容器的一些差异 接口介绍——reserve resize接口 shrink_to_fit 接口 operator[ ] 和 at 接口 assign接口 增删查改接口 swap接口 例题讲解 引言 vector实质上就是数据结构的顺序表&#xff0…

数据结构:栈和队列(详细讲解)

🎇🎇🎇作者: 小鱼不会骑车 🎆🎆🎆专栏: 《数据结构》 🎓🎓🎓个人简介: 一名专科大一在读的小比特,努力学习编程是我唯一…

(8)Qt中的自定义信号

目录 自定义信号需要遵循的规则 信号的发送 自定义信号的基本实现 使用一个父子窗口切换的小案例 Qt框架提供的信号在某些特定场景下是无法满足我们的项目需求的,因此我们还设计自己需要的的信号,同样还是使用connect()对自定义的信号槽进行连接。 自…

制造业ERP管理系统解决方案之销售管理

在企业的生存发展中,销售管理起到了重要的作用,它决定着企业发展的提速和效益的提升。做好销售管理工作,不仅可以推动企业资金有效运转,还可以使企业在稳定中高效发展,使企业价值最大化。而在制造企业销售管理中&#…

Leetcode.1658 将 x 减到 0 的最小操作数

题目链接 Leetcode.1658 将 x 减到 0 的最小操作数 题目描述 给你一个整数数组 nums 和一个整数 x 。每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值。请注意,需要 修改 数组以供接下来的操作使用。 如…

SHELL脚本学习 --- 第八次作业(安全脚本)

SHELL脚本学习 — 第八次作业 题目要求: 将密码输入错误超过4次的IP地址通过firewalld防火墙阻止访问 思路: 首先需要找到ssh密码输入错误超过四次的IP地址,需要到日志文件中找。 该日志文件为/var/log/secure。 找到之后通过正则匹配到密码输…

JavaEE高阶---SpringBoot 统⼀功能处理

一:什么是SpringBoot 统⼀功能处理 SpringBoot统一功能处理是AOP的实战环节。我们主要学习三方面内容: 统一用户登录权限验证;统一数据格式返回;统一异常处理。 二:统一用户登录权限验证 Spring 中提供了具体的实现…

通过后端代理实现Web搜索功能

大家好,才是真的好。 前面我们都在说使用Domino自带的视图搜索功能,这一篇也是,不过不是视图搜索,而是整个Notes数据库搜索,然后再将结果返回给浏览器网页呈现。 前提和前面两篇都是一样的,即Notes应用需…

Java 如何不使用 volatile 和锁实现共享变量的同步操作

前言 熟悉 Java 并发编程的都知道,JMM(Java 内存模型) 中的 happen-before(简称 hb)规则,该规则定义了 Java 多线程操作的有序性和可见性,防止了编译器重排序对程序结果的影响。 按照官方的说法: 当一个变量被多个线程读取并且至…

「数据密集型系统搭建」原理篇|数据类型不怕精挑细选

本篇围绕MySQL数据库的底层存储模型、列类型来聊聊数据库表设计及建模中要注意的事项,剖析最根源的底层物理存储文件,用最真实的数据剖析来证明和解答开发过程中的疑惑。 在一些技术谈资、面试沟通过程中,MySQL特别是我们常用的Innodb存储引擎…

JavaScript 作用域

文章目录JavaScript 作用域JavaScript 作用域JavaScript 局部作用域JavaScript 全局变量JavaScript 变量生命周期函数参数HTML 中的全局变量你知道吗?JavaScript 作用域 作用域可访问变量的集合。 JavaScript 作用域 在 JavaScript 中, 对象和函数同样也是变量。 在 JavaScr…

ONES X 海银财富|以敏捷流程管理,创新金融服务平台

近日,ONES 签约财富管理行业领跑者——海银财富,助力海银财富落地敏捷流程管理,打造从需求到交付的一体化平台,快速接受业务方的反馈,进行金融平台的迭代与优化。海银财富管理有限公司(以下简称海银财富&am…