Python实战训练(方程与拟合曲线)

1.方程

求e^x-派(3.14)的解

用二分法来求解,先简单算出解所在的区间,然后用迭代法求逼近解,一般不能得到精准的解,所以设置一个能满足自己进度的标准来判断解是否满足

这里打印出解x0是因为在递归过程中没有变量去接收返回值,所以返回x0,再打印x0得到的是None,再用numpy自带的log(pi)就查看解的相似度

import numpy as npdef f(x):return np.e**x-np.piresolution=0.00000001
global x
x=0
def search_x(x1,x2):x0=(x1+x2)/2if np.abs(f(x0)-0)<=resolution:print(x0)elif f(x1)*f(x0)<0:search_x(x0,x1)elif f(x2)*f(x0)<0:search_x(x0,x2)search_x(0,10)
print("方程的解",np.log(np.pi))

2.拟合曲线 

有俩组数据,通过这俩组数据可以得到一个图像

import matplotlib.pyplot as plt
import numpy as np
from numpy import polyfit
from matplotlib.pylab import mplmpl.rcParams['font.sans-serif']=['SimHei']#仅有这俩行 可以显示中文  但是减号为定义
mpl.rcParams['axes.unicode_minus']=Falsetime=[0.25, 0.5, 0.75, 1 ,1.5 , 2 ,2.5 ,3 ,3.5 ,4 ,4.5 ,5,6,7,8,9,10,11,12,13,14,15,16]
alcohol=[30,68,75,82,82,77,68,68,58,51,50,41,38,35,28,25,18,15,12,10,7,7,4]
# print(len(time),len(alcohol))
plt.scatter(time,alcohol)
plt.title("project")
plt.xlabel("x")
plt.ylabel("y")
plt.show()

 

接下来就是对数据进行操作,是线性关系明显

time=[0.25, 0.5, 0.75, 1 ,1.5 , 2 ,2.5 ,3 ,3.5 ,4 ,4.5 ,5,6,7,8,9,10,11,12,13,14,15,16]
alcohol=[30,68,75,82,82,77,68,68,58,51,50,41,38,35,28,25,18,15,12,10,7,7,4]
y=[np.log(a) for a in alcohol]#把alcohol里面的数据取对数  根据原数据对象做出操作
# print(len(time),len(alcohol))
plt.scatter(time,y)
plt.title("project")
plt.xlabel("x")
plt.ylabel("y")
plt.show()

这个代码执行的是把alcohol的每个数据取出来在取对数,最后赋给y 

 

y=[np.log(a) for a in alcohol]

图像可以知道存在峰值,而峰值后的数据关系联系强,而峰值前的数据也同样,所以可以分段函数的办法来表现图像关系

.index 可以得到里面数据的索引

.max 可以得到数据中最大值

[alcohol.index(max(alcohol)):] 表示从最大值开始到最后一个数据

alcohol_tup=alcohol[alcohol.index(max(alcohol)):]

 polyfit(x,y,z)  x与y是俩个数据集  z表示是几次的函数 这里是y=kx+b 为一次,所以z=1

这里会返回俩个值,一个是k,一个是b

from numpy import polyfit
k,b=polyfit(time_tup,y_tup,1)#1表示次数为1次  2为2次

 

把数据都进行分段 

time=[0.25, 0.5, 0.75, 1 ,1.5 , 2 ,2.5 ,3 ,3.5 ,4 ,4.5 ,5,6,7,8,9,10,11,12,13,14,15,16]
alcohol=[30,68,75,82,82,77,68,68,58,51,50,41,38,35,28,25,18,15,12,10,7,7,4]
y=[np.log(a) for a in alcohol]#把alcohol里面的数据取对数  根据原数据对象做出操作
alcohol_tup=alcohol[alcohol.index(max(alcohol)):]#找到alcohol的最大数并返回索引  把最大值以及从最大值后面的数据索引 重新改造数据
time_tup=time[alcohol.index(max(alcohol)):]
y_tup=y[alcohol.index(max(alcohol)):]
k,b=polyfit(time_tup,y_tup,1)#1表示次数为1次  2为2次
#1次  是y=kx+b
print(k,b)

建立一个model函数来进行拟合

predy是在拟合函数中得到的y值 

time=[0.25, 0.5, 0.75, 1 ,1.5 , 2 ,2.5 ,3 ,3.5 ,4 ,4.5 ,5,6,7,8,9,10,11,12,13,14,15,16]
alcohol=[30,68,75,82,82,77,68,68,58,51,50,41,38,35,28,25,18,15,12,10,7,7,4]
y=[np.log(a) for a in alcohol]#把alcohol里面的数据取对数  根据原数据对象做出操作
alcohol_tup=alcohol[alcohol.index(max(alcohol)):]#找到alcohol的最大数并返回索引  把最大值以及从最大值后面的数据索引 重新改造数据
time_tup=time[alcohol.index(max(alcohol)):]
y_tup=y[alcohol.index(max(alcohol)):]
k,b=polyfit(time_tup,y_tup,1)#1表示次数为1次  2为2次
#1次  是y=kx+b
print(k,b)def model(t):a=np.e**(k*t+b)return atime0=np.linspace(time_tup[0],16,1000)
predy=model(time0)
plt.scatter(time,alcohol,label="原曲线")
plt.plot(time0,predy,label="拟合曲线")
plt.title("result")
plt.xlabel("alcohol")
plt.ylabel("time[h]")
plt.legend()
plt.show()

 可以看到峰值后的拟合曲线基本贴合原数据

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

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

相关文章

什么是PPG(光电容积描记)传感器?

PPG&#xff08;光电容积描记&#xff09;传感器是一种用于测量血液容量变化的设备。PPG传感器利用光学技术&#xff0c;通过检测皮肤下血液的反射光量变化来获取心率、血氧饱和度和其他生理参数。以下是PPG传感器的工作原理和应用&#xff1a;

python语句性能分析

1、for语句性能优于while import timeif __name__ __main__:start_time time.time()for i in range(10 ** 8):passend_time time.time()run_time end_time - start_timeprint(run_time)i 0start_time time.time()while i < 10 ** 8:i 1end_time time.time()run_tim…

强化学习的数学原理:时序差分算法

概述 之前第五次课时学习的 蒙特卡洛 的方法是全课程当中第一次介绍的第一种 model-free 的方法&#xff0c;而本次课的 Temporal-Difference Learning 简称 TD learning &#xff08;时序差分算法&#xff09;就是第二种 model-free 的方法。而对于 蒙特卡洛方法其是一种 non…

IntelliJ IDEA 同时多行同时编辑操作快捷键

首先 点击要编辑的地方,长按鼠标左键不放,同时按住 Ctrl Shift Alt,然后就可以进行多行编辑了

Android项目中,查看项目依赖树的多种方式

1.使用预设的Task来进行查看 1.1 命令行 查看某个模块的所有依赖树&#xff1a; gradlew [模块名称]:dependencies 例如&#xff1a;gradlew app:dependencies查看某个模块的某功能的依赖树&#xff1a; gradlew [模块名称]:dependencies --configuration [功能名称] 例如&…

k8s学习之cobra命令库学习

1.前言 打开k8s代码的时候&#xff0c;我发现基本上那几个核心服务都是使用cobra库作为命令行处理的能力。因此&#xff0c;为了对代码之后的代码学习的有比较深入的理解&#xff0c;因此先基于这个库写个demo&#xff0c;加深对这个库的一些理解吧 2.cobra库的基本简介 Git…

前端JS特效第22波:jQuery滑动手风琴内容切换特效

jQuery滑动手风琴内容切换特效&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xm…

linux RTC时钟时间出现了明显的偏移

RTC时钟时间出现了明显的偏移 1、开发环境2、问题阐述3、验证问题3.1、首先去排查了硬件电路和芯片电压不稳定的问题。3.2、晶振的问题。3.3、芯片本身3.4、芯片寄存器 4、代码修改 1、开发环境 平台&#xff1a;imx6ul kernel版本&#xff1a;linux4.1.5 RTC芯片&#xff1a;…

机械键盘有哪些分类

机械键盘是一种比传统的薄膜键盘更耐用、更快捷、更具有手感的键盘。它的键帽和按键是独立的&#xff0c;能够提供更好的反应速度和操作感。机械键盘在现代化生活中得到了广泛的应用。根据其特性和使用场景&#xff0c;机械键盘可以分为以下几类&#xff1a; 1.轴体分类 机械…

设计模式探索:建造者模式

1. 什么是建造者模式 建造者模式 (Builder Pattern)&#xff0c;也被称为生成器模式&#xff0c;是一种创建型设计模式。 定义&#xff1a;将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 建造者模式要解决的问题&#xff1a; 建造者模…

誉天教育7月开班计划:为梦想插上腾飞的翅膀!

随着夏日的脚步渐近&#xff0c;誉天教育也迎来了新一轮的学习热潮。在这个充满活力和希望的季节里&#xff0c;我们精心策划了7月的开班计划&#xff0c;旨在为广大学子提供一个优质、高效的学习平台&#xff0c;助力他们追逐梦想&#xff0c;实现自我价值。 本月 Linux云计算…

探讨3D沉浸式在线会议系统的研发 - Meta演示的元宇宙虚拟化身多人对话场景,Web端现在也可以实现了 !

要实现一个元宇宙多人会议系统&#xff0c;关键技术有&#xff1a; 1. 3D虚拟空间的构建&#xff08;含光影特效、虚拟现实和增强现实&#xff09; 2. 3D虚拟化身的构建&#xff08;含动画、表情、语音&#xff09; 3. 多人角色管理 4. 会话控制和信息同步 5. 语音合成 6…

目标检测2--yolov1中相关基础知识(边框回归、交并比、nms)介绍

文章目录 前言回归介绍基本概念线性回归非线性回归边框回归 交并比介绍定义程序实现 NMS介绍定义与原理工作原理代码实现 前言 在上篇博客目标检测1–Pytorch目标检测之yolov1中介绍了yolov1的原理&#xff0c;里面提到几个知识点现在详细介绍一下。 回归介绍 在上篇博客中提…

【Qt】Qt开发环境搭建

目录 一. Qt SDK的下载&安装 二. Qt相关工具介绍 Qt的常用开发工具有&#xff1a; Qt CreatorVisual StudioEclipse 一. Qt SDK的下载&安装 Qt 下载官网&#xff1a; http://download.qt.io/archive/qt/ 国内清华源: https://mirrors.tuna.tsinghua.edu.cn/qt/arc…

实战某大型连锁企业域渗透

点击星标&#xff0c;即时接收最新推文 本文选自《内网安全攻防&#xff1a;红队之路》 扫描二维码五折购书 实战域渗透测试流程 对黑客来说&#xff0c;拿下域控制器是终极目标。然而攻击者空间是如何通过采取信息收集、权限提升、横向移动等一系列手段&#xff0c;从而一步步…

《基于 defineProperty 实现前端运行时变量检测》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; 近期刚转战 CSDN&#xff0c;会严格把控文章质量&#xff0c;绝不滥竽充数&#xff0c;欢迎多多交流~ &am…

STM32CubeMX实现4X5矩阵按键(HAL库实现)

为了实现计算器键盘&#xff0c;需要使用4X5矩阵按键&#xff0c;因此&#xff0c;我在4X4矩阵键盘上重新设计了一个4X5矩阵按键。原理图如下&#xff1a; 原理描述&#xff1a; 4X5矩阵按键&#xff0c;可以设置4个引脚为输出&#xff0c;5个引脚为输入模式&#xff0c;4个引…

【云原生】Prometheus监控Docker指标并接入Grafana

目录 一、前言 二、docker监控概述 2.1 docker常用监控指标 2.2 docker常用监控工具 三、CAdvisor概述 3.1 CAdvisor是什么 3.2 CAdvisor功能特点 3.3 CAdvisor使用场景 四、CAdvisor对接Prometheus与Grafana 4.1 环境准备 4.2 docker部署CAdvisor 4.2.2 docker部署…

【Java探索之旅】初识多态_概念_实现条件

文章目录 &#x1f4d1;前言一、多态1.1 概念1.2 多态的实现条件 &#x1f324;️全篇总结 &#x1f4d1;前言 多态作为面向对象编程中的重要概念&#xff0c;为我们提供了一种灵活而强大的编程方式。通过多态&#xff0c;同一种操作可以应用于不同的对象&#xff0c;并根据对象…

el-table 树形数据与懒加载 二级数据不展示

返回的数据中 children和hasChildren只能有一个&#xff0c;不能同时存在&#xff0c;否则加载数据会失败