本人为代码初学者,一时兴起,决定自己使用C++写一个最小二乘法代码,因初学代码有很多,还不懂,希望各位大佬多多担待
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
int main()
{
float zibl[100]={};
float yinbl[100]={};
float b,a,x,y,z;
float sum ,san,xia;
sum = san =xia= 0;
int i, j;
i = j =0;
b = a = 0;
cout<<"请输入自变量个数"<<endl;
cin >> z;
cout << "请输入自变量" << endl;
for (int i = 0; i < z; i++)
{
cin >> zibl[i];
}
cout << "请输入因变量" << endl;
for (int i = 0; i < z; i++)
{
cin >> yinbl[i];
}
cout << "您输入的自变量为"<<endl;
for (int i = 0; i < z; i++)
{
cout << zibl[i]<<" ";
}
cout << endl;
cout << "您输入的因变量为" << endl;
for (int i = 0; i < z; i++)
{
cout << yinbl[i] << " ";
}
cout << endl;
for (int i = 0; i < z; i++)
{
sum = zibl[i] + sum;
}
x = sum * 1.00 / z;
cout << "自变量的平均值为" << x << endl;
sum = 0;
for (int i = 0; i < z; i++)
{
sum = yinbl[i] + sum;
}
y = sum * 1.00 / z;
cout << "因变量的平均值为" << y << endl;
for (i = 0; i < z + 1; i++)
{
san = zibl[i] * yinbl[i] + san;
}
san = san - (z * x * y);
for (i = 0; i < z + 1; i++)
{
xia = zibl[i] * zibl[i]+xia;
}
xia = xia - (z * x * x);
b =(float)san * 1.00 / xia;
cout << "b的值为" <<b<< endl;
a = y - b * x;
cout <<"故最小二乘方程为" << "y" <<"="<< b << "*" << "x" << "+" << a << endl;
return 0;
}
注意事项
一,变量的命名
float zibl[100]={};
float yinbl[100]={};
float b,a,x,y,z;
float sum ,san,xia;
sum = san =xia= 0;
int i, j;
i = j =0;
b = a = 0;
命名数组时一定要先初始化数组
例,初始化
float zibl[100]={};
未初始化
float zibl[100];