最小二乘法

    xiaoxiao2025-06-07  16

    1.原理:

    2.代码:

    class LeastSquare{ double a, b; public: LeastSquare(const vector<double>& x, const vector<double>& y) { double t1=0, t2=0, t3=0, t4=0; for(int i=0; i<x.size(); ++i) { t1 += x[i]*x[i]; t2 += x[i]; t3 += x[i]*y[i]; t4 += y[i]; } a = (t3*x.size() - t2*t4) / (t1*x.size() - t2*t2); b = (t1*t4 - t2*t3) / (t1*x.size() - t2*t2); } double getY(const double x) const { return a*x + b; } void print() const { std::cout <<"y = "<<a<<"x + "<<b<<"\n"; } }; 3.注意事项: x,y的值很大时,会造成t1,t3的值越界.

    转载请注明原文地址: https://ju.6miu.com/read-1299694.html
    最新回复(0)