先声明后使用
一维数组
类型说明符 数组名【常量表达式】 a【2*3】可以
static int a[10]={0,1,2,3,4}
其余5位自动补0.
类型定义分配空间,参与那些运算
二维数组
第二维必须写后面的值
计算最小二乘法
标头.h
class Point {
public:
Point(float x=0, float y=0):x(x), y(y) {};
float getX(){ return x;}
float getY() { return y; }
private:
float x, y;
};
-------------------------
源文件.cpp
#include<iostream>
#include"标头.h"
#include<cmath>
using namespace std;
float lineFit( 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 << "this line can be fitted by y=ax+b:" << endl;
cout << "a=" << lxy / lxx << ":";
cout << "b=" << avgY - lxy*avgX / lxx << ":";
return lxy / sqrt(lxx*lyy);
}
int main() {
Point p[10] = { Point(6,10),Point(14,20),Point(26,30),Point(75,80),Point(84,90),Point(33,40),Point(46,50),Point(54,60),Point(67,70),Point(100,100) };
float r = lineFit(p, 10);
cout << "line coefficient r=" << r << endl;
return 0;
}