用python完成多项式拟合曲线
用python完成多项式拟合需要用到的库有numpy和matplotlib
曲线拟合的函数在numpy库中:
polyfit(x,y,n)
- x 为源数据点对应的横坐标,可为行向量、矩阵
- y 为源数据点对应的纵坐标,可为行向量、矩阵
- n 为你要拟合的阶数
- 返回值为多项式系数
poly1d(an)
- an为一个数组,即多项式系数
- 只传入一个参数情况下,则生成一个多项式
例如
import numpy as npx = np.arange(-1.5, 1.6, 0.5)
y = [-4.45, -0.45, 0.55, 0.05, -0.44, 0.54, 4.55]
an = np.polyfit(x, y, 3)
print(an)
p1 = np.poly1d(an)
print(p1)
结果如下:
polyval(an,x)
- an 为多项式系数
- x 为源数据点对应的横坐标,可为行向量、矩阵
- 返回值为通过多项式计算后的源数据点的纵坐标
画曲线
最后利用matplotlib库中的pyplot完成绘制曲线
import matplotlib.pyplot as plt
import numpy as npplt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False# 源数据点的x,y坐标
x = np.arange(-1.5, 1.6, 0.5)
y = [-4.45, -0.45, 0.55, 0.05, -0.44, 0.54, 4.55]an = np.polyfit(x, y, 3) # 用3次多项式拟合
# 如果源数据点不够要自己扩充,否则直接使用源数据点即可
x1 = np.arange(-1.5, 1.6, 0.1) # 画曲线用的数据点
yvals = np.polyval(an, x1) # 根据多项式系数计算拟合后的值# 画图
plt.plot(x, y, '*', label='原数据点')
plt.plot(x1, yvals, 'r', label='拟合后')
plt.xlabel('x 轴')
plt.ylabel('y 轴')
plt.legend(loc=4) # 指定legend的位置
plt.title('曲线拟合')
plt.show()
运行结果
注意
如果用于多项式拟合源数据的点数量过少,会画成折线。如下图:
扩充数据点的x坐标要与源数据点的区间相同,步长取小即可。
用python完成多项式拟合曲线相关推荐
- python numpy 多项式函数 求导求根
python numpy 多项式函数 求导求根 """求出多项式的 导函数与根 """import numpy as np import m ...
- 【Python】——多项式
"""Python求解多项式""" from sympy import symbols, factor, expand, cancel, a ...
- 基于Python实现多项式拟合正弦函数
1. 实验目的 掌握最小二乘法求解(无惩罚项的损失函数).掌握加惩罚项(2 范数)的损失函数优化.梯度下降法.共轭梯度法.理解过拟合.克服过拟合的方法(如加惩罚项.增加样本) 2. 实验要求 生成数据 ...
- 最小二乘法-多项式拟合曲线
如果你有一批散点图,像以下,(图都是从百度找的) 想要画出这些散点图的拟合曲线,也可以说是趋势曲线,我想,本文可教你,详情请耐心往下看. 方法一:np.polyfit np.polyfit也是利用最小 ...
- python散点图拟合曲线-使用python通过点拟合曲线
大家好,我正在尝试使用python拟合点的曲线,但是我还没有成功,我是使用python的初学者,我发现它没有帮助我. 我有一组数据,我想分析哪条线最能描述它(不同阶的多项式). 在numpy中,对于多 ...
- numpy np.polyfit()(最小二乘多项式拟合曲线)(有待进一步研究)
from numpy\lib\polynomial.py @array_function_dispatch(_polyfit_dispatcher) def polyfit(x, y, deg, rc ...
- python hist直方图拟合曲线_详解用Python为直方图绘制拟合曲线的两种方法
直方图是用于展示数据的分组分布状态的一种图形,用矩形的宽度和高度表示频数分布,通过直方图,用户可以很直观的看出数据分布的形状.中心位置以及数据的离散程度等. 在python中一般采用matplotli ...
- python计算多项式的方法
1.秦九韶算法 秦九韶算法是巧妙地利用了结合律,这样就简化了多项式计算 python代码 import time def func(a, x):"""秦九韶算法计算n次多 ...
- python定义多项式除法_快速多项式除法的fft除法
下面是一个快速多项式除法算法的直接实现,在这些lecture notes中找到.在 除法是基于除数的倒数与被除数的快速/FFT相乘.我下面的实现严格遵循了被证明具有O(n*log(n))时间复杂度的算 ...
最新文章
- 在数据科学人才教育中不断前行: 《大数据系统基础A、B》课程实践项目中期答辩顺利举行...
- zoj 1670 Jewels from Heaven
- 疯狂软件2月3日Android就业班课程详细
- 对现有的所能找到的DDOS代码(攻击模块)做出一次分析----GET篇
- MySQL成勒索新目标,数据服务基线安全问题迫在眉睫
- 十一届蓝桥杯国赛 本质上升序列-dp
- Java 8 Friday Goodies:Lambda和SQL
- SpringBoot如何切换Redis默认库
- tensorflow2 目标检测_一文了解YOLO-v4目标检测
- cin指定输入截止符
- 硬盘格式化了的数据找到方案
- php反序列化漏洞实验,PHP反序列化漏洞简介及相关技巧小结
- Gulp学习笔记(黑马教程)
- Python灰帽子黑客与逆向工程师的Python编程之道
- 备份微信聊天记录为 txt 格式保存(免 root)
- opencv去除照片红眼
- Effie:沉浸写作,创造价值
- hahabet05-com:终于有人把云计算,大数据,人工智能讲明白了--哈哈电竞
- 在Java中计算一元线性回归
- C语言入门:华氏温度转换为摄氏温度