对象数组 (线性拟合)

来源:互联网 发布:苹果电脑图片设计软件 编辑:程序博客网 时间:2024/06/05 10:42


1.先调用构造函数初始化

2.调用函数赋值

3.main函数结束后,自动调用析构函数。

线性拟合:

#include<iostream>#include<cmath>using namespace std;class Point{public:    Point(float x=0,float y=0):x(x),y(y){}    float getx() const {return x;}    float gety() const {return y;}private:    float x,y;};float lineFit(const Point points[],int npoint){    //对象数组,点数    float avgx=0,avgy=0;    float lxx=0,lyy=0,lxy=0;    for(int i=0;i<npoint;i++){        avgx+=points[i].getx()/npoint;        avgy+=points[i].gety()/npoint;    }    for(int i=0;i<npoint;i++){        lxx+=(points[i].getx()-avgx)*(points[i].getx()-avgx);        lyy+=(points[i].gety()-avgy)*(points[i].gety()-avgy);        lxy+=(points[i].getx()-avgx)*(points[i].gety()-avgy);    }    cout<<"y=ax+b "<<endl;    cout<<"a="<<lxy/lxx<<endl;    cout<<"b="<<avgy-lxy*avgx/lxx<<endl;    return static_cast<float>(lxy/sqrt(lxx*lyy));}int main(){    Point p[10]={Point(6,10),Point(14,20),Point(26,30),Point(33,40),                Point(46,50),Point(54,60),Point(67,70),Point(75,80),Point(84,90),Point(100,100),};    float r=lineFit(p,10);    cout<<"----"<<r<<endl;    return 0;}


原创粉丝点击