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

c++最小二乘法

 下面是一个使用 C++ 实现最小二乘法的示例代码,最小二乘法用于拟合线性回归模型 y = ax + b。

#include <iostream>
#include <vector>

// 定义最小二乘法函数
std::pair<double, double> leastSquares(const std::vector<double>& x, const std::vector<double>& y) {
    int n = x.size();
    double sumX = 0.0, sumY = 0.0, sumXY = 0.0, sumX2 = 0.0;

    // 计算所需的总和
    for (int i = 0; i < n; ++i) {
        sumX += x[i];
        sumY += y[i];
        sumXY += x[i] * y[i];
        sumX2 += x[i] * x[i];
    }

    // 计算斜率 a 和截距 b
    double a = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX);
    double b = (sumY - a * sumX) / n;

    return std::make_pair(a, b);
}

int main() {
    // 示例数据
    std::vector<double> x = {1, 2, 3, 4, 5};
    std::vector<double> y = {2, 4, 6, 8, 10};

    // 调用最小二乘法函数
    std::pair<double, double> result = leastSquares(x, y);
    double a = result.first;
    double b = result.second;

    // 输出结果
    std::cout << "拟合直线方程: y = " << a << "x + " << b << std::endl;

    return 0;
}    

代码解释

  1. leastSquares 函数:该函数接受两个 std::vector<double> 类型的参数 x 和 y,分别表示自变量和因变量的数据点。在函数内部,首先计算 x 的总和 sumX、y 的总和 sumY、x 与 y 乘积的总和 sumXY 以及 x 的平方和 sumX2。然后根据最小二乘法的公式计算斜率 a 和截距 b,并将它们作为 std::pair<double, double> 类型的结果返回。
  2. main 函数:定义了示例数据 x 和 y,调用 leastSquares 函数进行最小二乘法拟合,得到斜率 a 和截距 b,并将拟合直线方程输出到控制台。

你可以将示例数据替换为你自己的数据,以进行不同数据集的拟合。

 

 

 

相关文章:

  • Lucene.Net 分词器选择指南:盘古分词 vs 结巴分词
  • Spring 执行流程(源码)
  • dmsetup 清理ceph osd残留磁盘分区
  • 项目总结之常问的一些问题
  • Day16——路由2
  • 深入探究C++ 运算符重载:以日期类为例
  • 如何使用 DrissionPage 进行网页自动化和爬取
  • AI时代的机会:实现阶级跨越
  • 中医五行音乐养生
  • 【最新版】金媒婚恋系统v10.5最新稳定开源+原生前端小程序 PC端+安装教程
  • Visual Studio Code SSH 连接超时对策( keep SSH alive)
  • 【Gorm】连接到数据库
  • 牛客周赛———字符串
  • PHP Cookie
  • 深入理解MySQL:核心特性、优化与实践指南
  • TDengine 从入门到精通(2万字长文)
  • 【C++】list模拟实现
  • MyBatis-Flex关联查询
  • 数字内容体验案例分析的核心指标是什么?
  • 【学Rust写CAD】33 近似 Alpha 混合函数(argb.rs补充方法)
  • 兰州广告公司网站建设/广告推广一个月多少钱
  • 现在最流行的网站推广方式有哪些/百度推广官网网站
  • 做外贸没有网站可以吗/腾讯与中国联通
  • 宝鸡做网站哪家公司好/汕头seo外包机构
  • 新疆政府采购网/广州百度seo公司
  • 武汉网站建设www.com/百度推广创意范例