当前位置: 首页 > news >正文

由实验数据进行函数拟合的python实现

0.引言

已知公式求参的过程,对工程而言,一般是一个线性拟合或者非线性拟合的过程。我们现在来以代码片段为例,来描述如何求参。一般这个过程会涉及超定方程的计算。这个过程,原本需要使用matlab,现在python照样可以做到。

1. 示例1,问题描述

假定我们有一个确定的方程,比如

y = k*x1 + g*x2 /v(x1+x2)

1.1首先我们构建公式本身:

def func(x, k, g, v):(x1, x2) = xseg1 = k*x1;seg2 = g*x2/v*(x1+x2);y = seg1 + seg2;return y;

1.2 然后进行实验,采集相关参数:

三个参数,原本三组数据就可以出结果,这就是超定方程的含义。数据点比需要的更多。

#data.csv

14,1 ,3

20,5 ,9

11,7,13

100,9,4

120,8,10

1.3 求解

注意这里的x1,x2组合成一个x参数的过程。它涉及多参数求解的处理。

def CalcParamsOfFun(file_name):# 设置初始参数猜测initial_guess = (1,1,1);# 准备数据filename = "data.csv"  # 文件名y = load_csv_data(filename, 0); #yx1 = load_csv_data(filename, 1);  #x1x2 = load_csv_data(filename, 2); #x2y_ar = [];for item in y:y_ar.append(item);y = y_ar;x1_data = x1;x2_data = x2;data = (x1_data, x2_data)# 使用curve_fit函数进行拟合popt, pcov = curve_fit(func, data, y_ar, p0=initial_guess)# 显示拟合参数和拟合误差print(popt)print(pcov)return popt;

1.4 求解结果识读:

最终popt就是求解出的参数,而剩余的部分pcov是一个协方差矩阵,它反映了整个运算出的参数的不确定度:

[[ 1.55391864e-01 4.35894622e-04 -1.01903114e-03]

 [ 4.35894622e-04 4.97531727e-06 2.31409704e-05]

 [-1.01903114e-03 2.31409704e-05 3.43718230e-04]]

它的对角线的每一个值,是验算出的参数的可能误差。这里计算出的k的误差有15.5%这是一个比较大的误差,可能对运算精度产生较大影响。矩阵中对角线以外的元素是元素之间的关联关系,较大的值表示两个元素之间可能存在相关性。这里可以看出它们各自的相关性是很小的。

注意,这里的协方差具体数值与公式不符,因为我没有实际制作一笔数据和公式精确匹配。只是用来举例说明。

1.5校验

你可以直观看出公式计算得到的量和实际的数据之间的误差。

def ReCalcCurr_inByCalc(file_name, params):# 准备数据filename = "data.csv"  # 文件名y = load_csv_data(filename, 0); #yx1 = load_csv_data(filename, 1);  #x1x2 = load_csv_data(filename, 2); #x2y_ar = [];for item in y:y_ar.append(item);y = y_ar;x1_data = x1;x2_data = x2;data = (x1_data, x2_data)for i in np.arange(len(x1_data)):data = (x1_data[i], x2_data[i]);print(func(data, params[0], params[1], params[2]), y[i])

相关文章:

由实验数据进行函数拟合的python实现

0.引言 已知公式求参的过程,对工程而言,一般是一个线性拟合或者非线性拟合的过程。我们现在来以代码片段为例,来描述如何求参。一般这个过程会涉及超定方程的计算。这个过程,原本需要使用matlab,现在python照样可以做…...

<JavaEE> 基于 UDP 的 Socket 通信模型

目录 一、认识相关API 1)DatagramSocket 2)DatagramPacket 3)InetSocketAddress 二、UDP数据报套接字通信模型概述 三、回显客户端-服务器通信 1)服务器代码 2)客户端代码 一、认识相关API 1)Data…...

Golang 链表的基础知识

文章目录 链表链表基础知识部分链表的存储方式链表的定义链表的操作性能分析 链表 更多有关于go链表的内容可以见这篇文章链表的创建和读取 链表基础知识部分 什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,…...

webpack 常见面试题

1、什么是webpack(必会) webpack是一个打包模块化javascript的工具,在webpack里一切文件皆模块,通过loader转换文件,通过plugin注入钩子,最后输出由多个模块组合成的文件,webpack专注构建模块化…...

three.js实战模拟VR全景视图

文章中使用到的案例图片都来源于&#xff1a;Humus - Textures 里面有很多免费的资源&#xff0c;可以直接下载&#xff0c;每个资源里面都提供6个不同方位的图片&#xff0c;我们通过threejs稍微处理一下&#xff0c;就能实现以下3D效果的场景了。 <template><div …...

聊聊Spring Boot配置文件:优先级顺序、bootstrap.yml与application.yml区别详解

Spring Boot 配置文件 优先级顺序 在Spring Boot中&#xff0c;配置文件的优先级顺序是&#xff1a;bootstrap.yml > application.yml > application-{profile}.yml&#xff0c;其中 {profile} 表示不同的环境配置&#xff0c;如 dev、test、prod 等。当存在相同名称的…...

Milvus向量数据库基础用法及注意细节

1、Milvus数据类型与python对应的数据类型 Milvus Python DataType.INT64 numpy.int64 DataType.INT32 numpy.int32 DataType.INT16 numpy.int16 DataType.BOOL Boolean DataType.FLOAT numpy.float32 DataType.DOUBLE numpy.double DataType.ARRAY list DataT…...

虚拟机多开怎么设置不同IP?虚拟机设置独立IP的技巧

随着虚拟化技术的不断发展&#xff0c;虚拟机已经成为了许多人的必备工具。在虚拟机中&#xff0c;我们可以轻松地创建多个虚拟机&#xff0c;并在每个虚拟机中设置不同的IP地址。下面&#xff0c;我们将介绍如何在虚拟机中设置独立IP地址的方法。 一、虚拟机多开设置不同IP的方…...

使用Docker-镜像命令

镜像名称一般分两部分组成:[repository]:[tag] 在没有指定tag时&#xff0c;默认是latest&#xff0c;代表最新版本的镜像 目录 案例一&#xff1a;从DockerHub中拉取一个nginx镜像并查看 1.1. 首先去镜像仓库搜索nginx镜像&#xff0c;比如DockerHub ​编辑 1.2.操作拉取n…...

4.3 C++对象模型和this指针

4.3 C对象模型和this指针 4.3.1 成员变量和成员函数分开存储 在C中&#xff0c;类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 #include <iostream>class Person { public:Person() {mA 0;} //非静态成员变量占对象空间int mA;//静态成员变量…...

计算机网络——计算机网络的概述(一)

前言&#xff1a; 面对马上的期末考试&#xff0c;也为了以后找工作&#xff0c;需要掌握更多的知识&#xff0c;而且我们现实生活中也已经离不开计算机&#xff0c;更离不开计算机网络&#xff0c;今天开始我们就对计算机网络的知识进行一个简单的学习与记录。 目录 一、什么…...

基于多反应堆的高并发服务器【C/C++/Reactor】(中)ChannelMap 模块的实现

&#xff08;三&#xff09;ChannelMap 模块的实现 这个模块其实就是为Channel来服务的&#xff0c;前面讲了Channel这个结构体里边它封装了文件描述符。假如说我们得到了某一个文件描述符&#xff0c;需要基于这个文件描述符进行它对应的事件处理&#xff0c;那怎么办呢&…...

微信小程序实现一个音乐播放器的功能

微信小程序实现一个音乐播放器的功能 要求代码实现wxml 文件wxss 文件js文件 解析 要求 1.页面包含一个音乐列表&#xff0c;点击列表中的音乐可以播放对应的音乐。 2.播放中的音乐在列表中有标识&#xff0c;并且可以暂停或继续播放。 3.显示当前音乐的播放进度和总时长&#…...

算法基础之表达整数的奇怪方式

表达整数的奇怪方式 中国剩余定理: 求M 所有m之积 然后Mi M / mi x 如下图 满足要求 扩展中国剩余定理 找到x **使得x mod mi ai**成立 对于每两个式子 都可以推出①式 即 用扩展欧几里得算法 可以算出k1,-k2和m2–m1 判无解 : 若**(m2–m1) % d ! 0** 说明该等式无解 …...

WEB 3D技术 three.js 设置图像随窗口大小变化而变化

本文 我们来讲讲我们图层适应窗口变化的效果 可能这样说有点笼统 那么 自适应应该大家更熟悉 就是 当我们窗口发生变化说 做一些界面调整比例 例如 我们这样一个i项目界面 我们打开 F12 明显有一部分被挡住了 那么 我们可以刷新 这样是正常了 但是 我们将F12关掉 给F12的…...

实战案例:缓存不一致问题的解决(redis+本地缓存caffine)

一.问题引入 目前在写项目的时候&#xff0c;在B端查看文章&#xff0c;A端修改文章。为了增加效率&#xff0c;以及防止堆内存溢出&#xff0c;在B端选择本地缓存文章的方案。但是目前出现了A端对文章修改之后&#xff0c;B端读的还是旧数据&#xff0c;出现了缓存不一致的问…...

【开源CDP】市场增长未来的探索,开源CDP带来的技术崛起与变革

数字化趋势之下&#xff0c;数据成了企业竞争的核心资源&#xff0c;不管是公域还是私域&#xff0c;网络俨然成了品牌打响市场的一线战场&#xff0c;然而&#xff0c;在这场数字战役里&#xff0c;许多企业不得不面临一个共同问题&#xff1a;数据零散、分散、平台众多、无法…...

第11章 GUI Page423~424 步骤六 支持文字,使用菜单,对话框输入文字

运行效果&#xff1a; 点击OK&#xff0c;然后再窗口上按住左键&#xff0c;拖动鼠标 关键代码&#xff1a; 新增头文件和成员&#xff0c;新增私有成员_text 成员初始化 为菜单项MenuItemText添加响应函数 新增创建TextItem()的代码...

【Qt】Qt Creator 警告: Unused parameter ‘xxx‘

1. 问题 Qt开发中&#xff0c;有些函数参数没有使用&#xff0c;会报Unused parameter xxx警告&#xff0c;这个警告不影响代码正常运行。 2. 屏蔽这个警告的方法 2.1 方法1 函数中添加 Q_UNUSED(arg); TestClass::TestClass(QObject *parent) {Q_UNUSED(parent); }2.2 方…...

「Vue3面试系列」Vue3.0性能提升主要是通过哪几方面体现的?

文章目录 一、编译阶段diff算法优化静态提升事件监听缓存SSR优化 二、源码体积三、响应式系统参考文献 一、编译阶段 回顾Vue2&#xff0c;我们知道每个组件实例都对应一个 watcher 实例&#xff0c;它会在组件渲染的过程中把用到的数据property记录为依赖&#xff0c;当依赖发…...

电子工程开发工具全解析:从EDA到嵌入式系统

电子工程常用开发工具全景解析1. 电子工程软件工具概述电子工程作为信息技术的重要分支&#xff0c;其技术体系涵盖电路设计、信号处理、通信系统等多个专业领域。现代电子工程开发已形成完整的工具链体系&#xff0c;主要包括以下几类&#xff1a;EDA工具&#xff1a;电路设计…...

实时数据流处理实战:从滑动窗口算法到Docker部署

用 Python 造一个轻量级流处理引擎&#xff0c;顺便把 Git、Docker、CI/CD 全串起来 前言 你是否有过这样的需求&#xff1a;统计过去 5 秒内 API 的请求次数、监控传感器数据的突变、或者对直播间的弹幕进行限流&#xff1f;这些场景都离不开实时数据流处理。而流处理的核心&…...

STM32用KEIL调试总进不了main?可能是printf重定向惹的祸(附完整解决方案)

STM32调试卡在SystemInit&#xff1f;深入解析printf重定向与半主机模式陷阱 调试STM32时遇到程序卡在SystemInit函数而无法进入main函数的情况&#xff0c;往往会让开发者陷入长时间的排查困境。这种现象背后可能隐藏着多种原因&#xff0c;但其中最容易被忽视却又频繁出现的&…...

Druid连接池minIdle和maxActive参数详解:如何避免连接池耗尽问题

Druid连接池minIdle与maxActive参数深度优化指南 1. 理解连接池的核心参数 在现代企业级应用中&#xff0c;数据库连接池的性能调优往往是系统稳定性的关键所在。作为阿里巴巴开源的Druid连接池&#xff0c;其minIdle和maxActive参数的合理配置直接影响着应用的吞吐量和响应时间…...

中国象棋AlphaZero:从零构建强化学习象棋AI的完整指南

中国象棋AlphaZero&#xff1a;从零构建强化学习象棋AI的完整指南 【免费下载链接】ChineseChess-AlphaZero Implement AlphaZero/AlphaGo Zero methods on Chinese chess. 项目地址: https://gitcode.com/gh_mirrors/ch/ChineseChess-AlphaZero 中国象棋AlphaZero是一个…...

别再死磕点云了!用DeepSDF和PyTorch实现高质量3D模型补全(附代码)

突破传统3D补全瓶颈&#xff1a;基于DeepSDF的智能修复实战指南 当你面对残缺的3D扫描数据时&#xff0c;是否厌倦了传统点云方法带来的锯齿状表面和模糊细节&#xff1f;在文物数字化修复或游戏资产重建中&#xff0c;我们常常遇到这样的困境&#xff1a;珍贵的雕塑缺失了关键…...

获取应用内部JMX统计信息的编程方法

本文介绍了如何在Java应用程序中编程JMX&#xff08;Java Management Extensions&#xff09;统计信息&#xff0c;无需建立远程连接或使用外部JMX客户端。通过直接访问MBeanServer&#xff0c;您可以查询和获取应用程序中的各种性能指标和管理信息&#xff0c;如Kafka消费者组…...

Python量化投资数据接口实战指南:通达信数据获取与策略开发全流程

Python量化投资数据接口实战指南&#xff1a;通达信数据获取与策略开发全流程 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在量化投资领域&#xff0c;数据获取的效率与质量直接决定了策略的有…...

OpenClaw 3.28重磅发布:Grok搜索内置,高危操作迎来“保命”拦截机制

引言&#xff1a; 不仅仅是“草台”后的补救&#xff0c;更是智能体操作系统的成人礼 就在前两天&#xff0c;OpenClaw 之父 Peter 的一次“漏打包”操作&#xff0c;直接导致 3.22 版本大面积白屏&#xff0c;让无数开发者以为自己辛辛苦苦养了一周的“赛博小龙虾”就这么“死…...

嵌入式开发必备:rootfs.img镜像修改的5个常见问题与解决方案

嵌入式开发实战&#xff1a;rootfs.img镜像修改的五大核心问题与深度解决方案 在嵌入式Linux开发中&#xff0c;rootfs.img镜像的修改是每个开发者绕不开的关键环节。无论是添加自定义配置文件、更新系统组件&#xff0c;还是优化启动流程&#xff0c;对根文件系统的调整都直接…...