Python数值计算(10)

news2024/11/13 9:26:58

继续说多项式的数值及拟合,这次主要讨论关于多项式拟合的函数fit。定义如下:

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

Polynomial类下面有一个函数fit,官方是这么介绍的:

Least squares fit to data.

Return a series instance that is the least squares fit to the data y sampled at x. The domain of the returned instance can be specified and this will often result in a superior fit with less chance of ill conditioning.

 简单来说,就是通过最小二乘拟合曲线,还是以前面的函数为例:

f(x)=3x^3-2x+1

测试该函数,我们可以先通过原函数,生成系列的对应点,然后利用这些点进行数据的拟合:

import numpy as np
import matplotlib.pyplot as plt
from numpy.polynomial import Polynomial as P

np.polynomial.set_default_printstyle("unicode")

a=P([1,-2,0,3])
x=np.linspace(-2,2,100)
y0=a(x)

#通过[x,y0]点对,拟合多项式b
b=P.fit(x,y0,3,domain=a.domain)
print(b) # 1.0 - 2.0·x + (9.3447833e-15)·x² + 3.0·x³

# 绘制拟合多项式的图形
y1=b(x)
plt.plot(x,y0,'r')
plt.plot(x,y1,'b--')
plt.grid()
plt.show()

运行结果如下:

可以看到,两个图形几乎完全重叠,但是,得到的多项式b的表达式为:

g(x)=1-2x + 9.3447833e^{-15}*x^2 + x^3

抛开x的平方项,得到的是:

g(x)=1-2x + 3x^3

和原来的多项式相同。

注意,在拟合的时候,除了需要提供拟合的度,该值的取值要根据数据的特性选择合适的值,例如如果将度指定为2,其结果是线性最小二乘法:

还要指定其域(domain),该值通常应该设定为[-1,1]。

以上用了三个篇幅,算是将现有的轮子做了一个概述,通常情况下我们是可以直接拿来用的,不过在使用之前,一定要知道其使用范围,不能机械化的套用就完事了。

此外,这个函数在一些场合可能也满足不了我们的需求。首先,一个良好的拟合,需要依据数据的特点选择合适的拟合函数,多项式拟合并不一定是最好的选择,可能还有其他的函数关系;其次,即使是多项式拟合,也不是度越高越好,否则,容易产生所谓的过拟合现象,例如著名的龙格现象(Runge's Phenomenon):

import numpy as np
import matplotlib.pyplot as plt
from numpy.polynomial import Polynomial as P
np.polynomial.set_default_printstyle("unicode")

def f(x):
    return 1/(1+x*x)

x=np.linspace(-10,10,100)
fh=np.vectorize(f)
y=fh(x)
g=P.fit(x,y,5,domain=[-1,1])
y1=g(x)
h=P.fit(x,y,10,domain=[-1,1])
y2=h(x)
fig0,=plt.plot(x,y,'r')
fig1,=plt.plot(x,y1,'g--')
fig2,=plt.plot(x,y2,'b--')
plt.title("Runge's Phenomenon")
plt.legend([fig0,fig1,fig2],['base','Degree=3','Degree=5'],loc='upper right')
plt.grid()
plt.show()

其结果如下:

常见的插值(拟合)方法有拉格朗日法,Neville迭代法,牛顿差商法等,还有特定场合下的Hermite插值、三次样条插值等,将在后续逐步展开介绍。

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

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

相关文章

弄懂这5条深层逻辑,你也将通透豁达

01 如果正面解决不了问题,不妨试试从侧面或者反面进行解决。 比如,食堂的锅破了一个洞,如果你多次反映都没能解决破洞的问题,那不妨直接把锅捅穿,让锅没有办法使用,进而升级问题,把做饭不方便…

深入源码:解析SpotBugs (3) Detector

文章目录 OpcodeStackDetector常用套路调用栈visit code类检测方法检测代码行检测 前面的博客也提到过,Spotbugs 里面 Detector2 与 Detector,FindBugs2 与 FindBugs,GUI2与GUI,可以视为 Spotbugs 与 FindBugs 新老技术的碰撞&…

基于微信小程序+SpringBoot+Vue的网络安全科普系统(带1w+文档)

基于微信小程序SpringBootVue的网络安全科普系统(带1w文档) 基于微信小程序SpringBootVue的网络安全科普系统(带1w文档) 优质的网络安全科普系统不仅可以单纯的满足工作人员管理的日常工作需求,还可以满足用户的需求。可以降低工作人员的工作压力,提高效…

课程制作及教学体验革命,AI视频生成工具如何落地教育行业?

“大力发展数字教育”,这是2024年政府工作报告中提到的教育任务之一。同时,“人工智能”行动首次写入政府工作报告,意味着各行各业均有新的发展空间。那么,数字教育应该怎么做?此前,2024年全国教育工作会议…

MySQL查询执行(三):显示随机消息

假设有如下表结构&#xff1a; -- 创建表words CREATE TABLE words (id int(11) NOT NULL AUTO_INCREMENT,word varchar(64) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB;--数据生成存储过程 delimiter ;; create procedure idata() begindeclare i int;set i0;while i<…

计算机毕业设计选题推荐-财会信息管理系统-Java项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

算法通关:011:分隔链表

文章目录 题目思路代码 leetcode 86 题目 思路 左边一个往进插数字 &#xff0c;右边一个往进插数字 &#xff0c;整个队列都完了以后让左边的尾指针指向右边的头指针&#xff0c;将两个链表连起来再返回即可。代码 /*** Definition for singly-linked list.* public class L…

STM32_RTOS学习笔记——1(列表与列表项)

总体RTOS笔记目录 一&#xff0c;列表与列表项&#xff08;本文&#xff09; 二&#xff0c;待定 视频参考&#xff1a;B站野火 一&#xff0c;C语言列表概念 列表就是C语言中的链表&#xff0c;链表就如同下面的衣架一样&#xff0c;需要的各种内容可以参考 C语言链表可…

软件测试必备 - 14个接口与自动化测试练习网站

随着互联网和移动应用的快速发展,接口和自动化测试的重要性日益凸显。越来越多的企业开始重视API测试,因为它不仅能提升开发效率,还能确保系统的稳定性和安全性。这些练习网站为测试人员提供了宝贵的资源,帮助他们掌握必要的技能,应对日益复杂的测试需求。 在软件测试的世…

非关系型数据库MongoDB的基础操作

MongoDB优点: 1.MongoDB的提供了一个面向文档存储&#xff0c;操作起来比较简单和容易。 2.如果负载的增加&#xff0c;它可以分布在计算机网络中的其他节点上这就是所 谓的分片。 3. MongoDB支持各种编程语言:RUBY&#xff0c;PYTHON&#xff0c;JAVA&#xff0c;C&#xf…

昇思25天学习打卡营第11天|xiaoyushao

今天分享ResNet50迁移学习。 在实际应用场景中&#xff0c;由于训练数据集不足&#xff0c;所以很少有人会从头开始训练整个网络。普遍的做法是&#xff0c;在一个非常大的基础数据集上训练得到一个预训练模型&#xff0c;然后使用该模型来初始化网络的权重参数或作为固定特征提…

git 推送时出现错误 Locking support detected on remote “origin“

背景&#xff1a;代码托管是局域网搭建的gitlab 按照提示配置 lfs.locksverify true 还是没有用。 网上搜索了一番&#xff0c;其中有人提到可能时服务器磁盘满了&#xff0c;连到服务器上 df -h 查看&#xff0c; 发现根目录已经写满了&#xff1a; 使用命令行&#xff1a; d…

手持式无人机报警器技术详解

随着无人机技术的迅速发展和普及&#xff0c;无人机在各个领域的应用越来越广泛。然而&#xff0c;无人机的不当使用也可能带来一系列安全隐患&#xff0c;如侵犯隐私、干扰航空安全等。因此&#xff0c;手持式无人机报警器应运而生&#xff0c;成为一种有效的无人机监测和报警…

SAPUI5基础知识21 - 碎片回调函数(Fragments Callbacks)

1. 背景 在上一篇博客中&#xff0c;我们通过创建fragment的方式&#xff0c;实现了一个可以复用的对话框&#xff0c;并将其集成在我们的应用程序中。 在本篇博客中&#xff0c;让我们进一步增强一下这个程序&#xff0c;为弹出的对话框添加一个按钮&#xff0c;以实现对话框…

使用eclipse在新建的java项目中编辑xml文件时Unhandled event loop exception No more handles

处理方法&#xff1a;更换xml编辑器 Window ——》Preferences ——》General ——》Editors ——》File Associations 如果File types里面没有*.xml&#xff0c;则点击Add进行新增 选中*.xml&#xff0c;然后在Associated editors 选中想用的编辑器&#xff0c;设置为defaul…

pandas安装以及导入CSV

安装pandas pip install pandas速度慢可以切换国内镜像源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas执行导入csv操作 import pandas as pd# 读取csv文件 data pd.read_csv(yourPath)输入data查看数据 导入成功&#xff01;

【Redis 初阶】初识 Redis

一、了解 Redis Redis 官网&#xff1a;Redis - The Real-time Data Platform Redis 是一种基于键值对&#xff08;key-value&#xff09;的 NoSQL 数据库。与很多键值对数据库不同的是&#xff0c;Redis 中的 key 都是 string&#xff08;字符串&#xff09;&#xff0c;值&a…

手写模拟Spring底层原理-简易实现版

通过手写模拟Spring 了解Spring的底层源码启动过程了解BeanDefinition、BeanPostProcessor的概念了解Spring解析配置类等底层源码工作流程了解依赖注入&#xff0c;Aware回调等底层源码工作流程了解Spring AOP的底层源码工作流程 这里实现一个简化版的 Spring 框架的核心功能&a…

2024源代码加密软件评测丨五款企业源代码加密软件推荐

“李明&#xff0c;最近黑客攻击事件频发&#xff0c;咱们的代码库安全真的让人捏把汗啊。”张伟眉头紧锁&#xff0c;语气中带着几分忧虑。 “是啊&#xff0c;我听说现在市面上有不少源代码加密软件&#xff0c;但种类繁多&#xff0c;不知道该选哪个好。”李明回应道&#…

cocos creator 3学习记录01——如何替换图片

一、动态加载本地图片 1、通过将图片关联到CCClass属性上来进行代码切换。 1、这种方法&#xff0c;需要提前在脚本文件中声明好代表图片的CCClass属性。 2、然后拖动图片资源&#xff0c;到脚本内声明好的属性上以进行关联。 3、然后通过程序&#xff0c;来进行切换展示。…