可视化-最小二乘法拟合直线

ops/2024/10/9 5:09:06/

目录

1、最小二乘法拟合直线

2、需要用到的公式

3、计算各个参数 ,得到函数表达式

4、可视化-绘画图像


1、最小二乘法拟合直线

double x[15] = {29,34,39,44,49,54,59,64,69,74,79,84,89,94,99};
double y[15] = { 0.2989,0.3036,0.3084,0.3133,0.3182,0.3231,0.3284,
                        0.3331,0.3380,0.3429,0.3478,0.3527,0.3577,0.3626,0.3677 };

x --> t('c) ,y-->i(mA)

T=273+t ,mA=100uA

x --> T(K) ,y-->i(uA)

做出i-T图像,利用最小二乘法拟合直线

y=a+bx

2、需要用到的公式

r为相关系数

3、计算各个参数 ,得到函数表达式

#include<iostream>
#include<cmath>
using namespace std;
int main() {double x[15] = {29,34,39,44,49,54,59,64,69,74,79,84,89,94,99};double y[15] = { 0.2989,0.3036,0.3084,0.3133,0.3182,0.3231,0.3284,0.3331,0.3380,0.3429,0.3478,0.3527,0.3577,0.3626,0.3677 };for (int i = 0; i < 15; i++) {y[i] *= 1000;x[i] += 273;}double t1 = 0;double t2 = 0;for (int i = 0; i < 15; i++) {t1 += x[i];t2 += y[i];}double aver_x = t1 / 15;double aver_y = t2 / 15;cout << "aver_x = " << aver_x << endl;cout << "aver_y = " << aver_y << endl;double b, a,r;double sum1 = 0;double sum2 = 0;double sum3 = 0;for (int i = 0; i < 15; i++) {sum1 += (x[i] - aver_x) * (y[i] - aver_y);sum2 += (x[i] - aver_x) * (x[i] - aver_x);sum3 += (y[i] - aver_y) * (y[i] - aver_y);}b = sum1 / sum2;a = aver_y - b * aver_x;r = sum1 / (sqrt(sum2) * sqrt(sum3));cout << "a = " << a << endl;cout << "b = " << b << endl;cout << "r = " << r << endl;
}

4、可视化-绘画图像

python"># -*- coding: utf-8 -*-
import numpy as np# 假设我们有一组数据点
x_data = np.array([302,307,312,317,322,327,332,337,342,347,352,357,362,367,372])
y_data = np.array([298.9,303.6,308.4,313.3,318.2,323.1,328.4,333.1,338,342.9,347.8,352.7,357.7,362.6,367.7,])# 为了使用最小二乘法,我们需要构建设计矩阵X
# 在这个例子中,我们有一个截距项和一个斜率项
X = np.vstack([np.ones(len(x_data)), x_data]).T# 使用NumPy的linalg.lstsq函数来执行最小二乘法
# 这个函数返回四个值:系数、残差、秩和s
coefficients, residuals, rank, s = np.linalg.lstsq(X, y_data, rcond=None)# 系数数组中的第一个元素是截距,第二个元素是斜率
intercept = coefficients[0]
slope = coefficients[1]print("Intercept:", intercept)
print("Slope:", slope)# 使用求得的斜率和截距来生成拟合直线
y_fit = intercept + slope * x_data# 打印拟合结果
print("Fitted values:", y_fit)# 可视化原始数据点和拟合直线
import matplotlib.pyplot as pltplt.scatter(x_data, y_data, label='Original data')
plt.plot(x_data, y_fit, color='red', label='Fitted line')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()


http://www.ppmy.cn/ops/123005.html

相关文章

腾讯云上传pushdocker镜像到镜像仓库

文章目录 腾讯云上传docker镜像 腾讯云上传docker镜像 >docker login ccr.ccs.tencentyun.com --usernameXXXXXX用户名>sudo docker tag mynginx:1.0 ccr.ccs.tencentyun.com/crfkitty/mynginx:1.0>docker push ccr.ccs.tencentyun.com/crfkitty/mynginx:1.0 The pu…

「Kafka」Kafka消息可靠性和重复消费问题(五)

在 Kafka 中&#xff0c;实现消息的可靠性和避免重复消费是保证数据一致性和系统稳定性的关键。Kafka 提供了多种机制来实现这两个目标。 1. Kafka 消息可靠性 Kafka 的可靠性主要体现在消息的投递和存储上&#xff0c;以确保消息不会丢失。具体来说&#xff0c;有以下几个措…

注册安全分析报告:惠农网

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

【C++指南】类和对象(二):类的默认成员函数——全面剖析 :构造函数

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C指南》 期待您的关注 ​ 阅读本篇文章之前&#xff0c;你需要具备的前置知识&#xff1a;类和对象的基础 点击下方链接 【C指南…

G2O 通过工厂函数类 OptimizationAlgorithmFactory 来生成固定搭配的优化算法

OptimizationAlgorithmFactory 类位于 optimization_algorithm_factory.h //***g2o源码 g2o/g2o/core/optimization_algorithm_factory.h ***// /*** \brief create solvers based on their short name** Factory to allocate solvers based on their short name.* The Factor…

使用CANFD路由实现CAN与CANFD互通

随着科技的发展&#xff0c;汽车电子和工业领域中CAN通信需要承载数据量也越来越大&#xff0c;传统CAN通信有了向CANFD通信过渡的倾向。在实现过渡的过程中可能会出现自己设备是CAN通信&#xff0c;客户设备是CANFD通信的情况&#xff0c;或者自己设备是CANFD通信&#xff0c;…

Street Gaussians 学习笔记

目录 3D Gaussian Splatting 依赖项&#xff1a; diff-gaussian-rasterization 浙大和理想汽车提出Street Gaussians&#xff1a;用于动态城市场景建模 3D Gaussian Splatting 最近的一项工作3D Gaussian Splatting (3D GS)&#xff0c;在3D世界中定义了一组各向异性的高斯…

从0开始下载安装并使用unity

首先我们要在浏览器上找到unity的官网 这一个就是了&#xff0c;我们点进去后是这个界面&#xff1a; 然后我们点击上面这张图的左下角的“下载Unity Hub”&#xff0c;推荐后续安装都装在D盘&#xff1a; 这里他会让我们注册一个账号&#xff0c;如果之前有的话登录就行了&am…