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

news2025/2/22 10:20:43

1.方程

求e^x-派(3.14)的解

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

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

import numpy as np

def f(x):
    return np.e**x-np.pi

resolution=0.00000001
global x
x=0
def search_x(x1,x2):
    x0=(x1+x2)/2
    if 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 mpl

mpl.rcParams['font.sans-serif']=['SimHei']#仅有这俩行 可以显示中文  但是减号为定义
mpl.rcParams['axes.unicode_minus']=False



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]
# 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 a

time0=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.coloradmin.cn/o/1901169.html

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

相关文章

CentOS 7安装Elasticsearch7.7.0和Kibana

一. 准备安装包 elasticsearch和kibana&#xff1a;官网历史版本找到并下载&#xff08;https://www.elastic.co/cn/downloads/past-releases#elasticsearch&#xff09;ik分词器&#xff1a;GitHub下载&#xff08;https://github.com/infinilabs/analysis-ik/releases/tag/v…

3.js - 裁剪平面(clipIntersection:交集、并集)

看图 代码 // ts-nocheck// 引入three.js import * as THREE from three// 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls// 导入lil.gui import { GUI } from three/examples/jsm/libs/lil-gui.module.min.js// 导入tween import …

Interpretability 与 Explainability 机器学习

「AI秘籍」系列课程&#xff1a; 人工智能应用数学基础人工智能Python基础人工智能基础核心知识人工智能BI核心知识人工智能CV核心知识 Interpretability 模型和 Explainability 模型之间的区别以及为什么它可能不那么重要 当你第一次深入可解释机器学习领域时&#xff0c;你会…

WEB编程-了解Tomcat服务器

第⼀章⽹络编程 1.1 概述 计算机⽹络&#xff1a;是指将地理位置不同的具有独⽴功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在⽹络 操作系统、⽹络管理软件及⽹络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统。 …

cs224n作业3 代码及运行结果

代码里要求用pytorch1.0.0版本&#xff0c;其实不用也可以的。 【删掉run.py里的assert(torch.version “1.0.0”)即可】 代码里面也有提示让你实现什么&#xff0c;弄懂代码什么意思基本就可以了&#xff0c;看多了感觉大框架都大差不差。多看多练慢慢来&#xff0c;加油&am…

前端位置布局汇总

1、位置&#xff1a;绝对位置和相对位置 绝对位置 style"position: absolute;left: 218px;top: 0%;" style"position: absolute;bottom:5px;right:5px ;" 相对位置 :margin外边距 padding内边距 style"border:1px solid black;width:200px;text-ali…

vue事件处理v-on或@

事件处理v-on或 我们可以使用v-on指令&#xff08;简写&#xff09;来监听DOM事件&#xff0c;并在事件触发时执行对应的Javascript。用法&#xff1a;v-on:click"methodName"或click"hander" 事件处理器的值可以是&#xff1a; 内敛事件处理器&#xff1…

Yolo v7网络实现细节(一)

Yolo v7网络实现细节 YOLO v7网络架构的整体介绍 不同GPU和对应模型&#xff1a; ​​​​​​​边缘GPU&#xff1a;YOLOv7-tiny普通GPU&#xff1a;YOLOv7​​​​​​​云GPU的基本模型&#xff1a; YOLOv7-W6 激活函数&#xff1a; YOLOv7 tiny&#xff1a; leaky ReLU其…

南方健康2024米思会:科普患教赋能医药增长闭环,千亿蓝海市场大爆发!

2024年6月25日-28日&#xff0c;在中国•南太湖举办的2024米思会如约而至&#xff0c;顺利落下帷幕&#xff0c;本次大会以“韧进启新局”为主题&#xff0c;以不懈进取的“韧劲”&#xff0c;立身破局&#xff0c;迎变启新。通过4天3夜的思想碰撞和互动交流&#xff0c;引领行…

使用shell脚本实现DM8开机自动启动

编写shell脚本 #!/bin/bashsu -dmdba >>EOF cd /home/dmdba/dmdbms/bin ./DmServiceDMTEST start echo "dm start ... " EOF注意&#xff1a;DmServiceDMTEST每个服务器设置的不一样&#xff0c;根据实际进行更换 授权脚本可执行权限 chmod -x /dmdata/dmse…

策略为王股票软件源代码-----如何修改为自己软件61----资讯菜单修改-----举例---------调用同花顺网页------

http://stock.sina.com.cn 将原来的新浪行情,修改为同花顺, 搜索 stock.sina.com.cn... StkUI\View\InfoView.cpp(58):char

【C++:默认成员函数初始化列表】

构造函数 特点 没有返回值支持函数重载对象实例化时&#xff0c;编译器自动调用作用不是构造&#xff0c;而是初始化函数名与类名相同无参函数和全缺省的函数&#xff0c;不用传参就能调用的函数叫做默认构造函数 构造函数是一个特殊的成员函数 注&#xff1a;无参构造函数在实…

Lock4j简单的支持不同方案的高性能分布式锁实现及源码解析

文章目录 1.Lock4j是什么?1.1简介1.2项目地址1.3 我之前手写的分布式锁和限流的实现 2.特性3.如何使用3.1引入相关依赖3.2 配置redis或zookeeper3.3 使用方式3.3.1 注解式自动式3.3.2 手动式 4.源码解析4.1项目目录4.2实现思路 5.总结 1.Lock4j是什么? 1.1简介 lock4j是苞米…

平均102天 Accept的国产医学顶刊,影响因子4连涨,还免版面费!

《Asian Journal of Pharmaceutical Sciences》 (亚洲药物制剂科学) 是由沈阳药科大学主办、Elsevier合作出版的全英文药剂学学术期刊&#xff0c;是“中国科技期刊卓越行动计划”资助期刊&#xff0c;现已被SCIE、PubMed Central、Scopus和DOAJ等国际著名检索系统收录&#xf…

【已解决】“import ... =“ 只能在 TypeScript 文件中使用

现象 在使用 import 语法的时候&#xff0c;代码报红&#xff0c;提示&#xff1a;“import ... “ 只能在 TypeScript 文件中使用 原因 代码被 VSCode 解析成 TypeScript 语法 解决方案&#xff1a; 关闭 JavaScript 的验证启用即可。 mac 快捷方式&#xff1a;comman s…

25.【C语言】循环结构之for 上

1.基本使用 类比while 在while循环中&#xff0c;有三个不可或缺的部分&#xff1a;初始化&#xff0c;判断部分&#xff0c;调整部分 int i 0;//初始化 while (i < 10)//判断部分 {……i;//调整部分 }三个部分太分散&#xff0c;用for循环可集为一体&#xff0c;简洁 …

【海贼王的数据航海】ST表——RMQ问题

目录 1 -> RMQ问题 1.1 -> 定义 1.2 -> 解决策略 2 -> ST表 2.1 -> 定义 2.2 什么是可重复贡献问题 2.3 -> 预处理ST表 2.4 -> 处理查询 2.5 -> 实际问题 1 -> RMQ问题 1.1 -> 定义 RMQ (Range Minimum/Maximum Query)即区间最值查询…

印度第二大移动提供商 3.75 亿数据待售

一个名为“xenZen”的威胁行为者已在 BreachForums 上出售 Airtel 的数据库。 该列表包含来自 3.75 亿客户的数据。 数据详情&#xff1a; 手机号码 名 出生日期 父亲的名字 地址 电子邮件ID 类型 国籍 阿达尔 带照片的身份证明详细信息 地址详细信息证明等 鉴于…

【反悔堆 优先队列 临项交换 决策包容性】630. 课程表 III

本文涉及知识点 贪心 反悔堆 优先队列 临项交换 Leetcode630. 课程表 III 这里有 n 门不同的在线课程&#xff0c;按从 1 到 n 编号。给你一个数组 courses &#xff0c;其中 courses[i] [durationi, lastDayi] 表示第 i 门课将会 持续 上 durationi 天课&#xff0c;并且必…

应用信息查看器更新至1.5.0

https://download.csdn.net/download/zzmzzff/89518318