资源简介
内含超定方程组最小二乘法代码,有详解,已经顺利运行通过,希望可以对小伙伴们有帮助!
代码片段和文件信息
//超定方程组最小二乘法
#include
#define SIZE 20 //预定义要进行转置的矩阵最大 大小为20*20
using namespace std;
//下面几个函数的输入数组和主函数中定义的数组虽然都是同一个名字,但并不是指同一个函数
//矩阵的输入函数
void inputMatrix(int a[][SIZE] int n int m){ //二维数组参数下标必须要确定
int ij;
for(i = 0;i < n;i++){
for(j = 0;j < m;j++){
cin>>a[i][j];
}
}
}
//矩阵的输出函数
void outputMatrix(int b[][SIZE] int n int m){
int ij;
for(i = 0;i < n;i++){
for(j = 0;j < m;j++){
cout< }
cout<<“\n“; //每次打印完一行后进行换行
}
}
//矩阵的转置运算
void matrixTransport(int a[][SIZE] int b[][SIZE] int row int column){//row和column均为a的行和列
int ij;
//int row column;
for(i = 0; i for(j = 0; j
b[i][j] = a[j][i];
}
}
}
/********************************************
A:矩阵A;B:矩阵B;C:相乘结果矩阵;rowA:A的行数;columnB:B的列数;columnA:A的列数
********************************************/
//必须要保证两个数组能够进行乘法运算,这里没有加入判断条件,默认能够进行,望读者能够明白这一点。
void matrixMul(int A[][SIZE] int B[][SIZE] int C[][SIZE] int rowA int columnB int columnA){
for (int i=0;i for (int j=0; j C[i][j] = 0;
for (int k=0;k C[i][j]+=A[i][k]*B[k][j];
}
}
}
}
//高斯消去法求方程组的解,读者也可以用其他的方法求方程组的解。
void Gauss(int a[][SIZE] int b[][SIZE] int rowA int colA){
float A[50][50];//存放元素的矩阵A
float B[50];//存放结果的元素B
int row=rowA;
int col=colA;
//输入矩阵A
int i j k;
for(i=0;i
{
for(j=0;j {
A[i][j]=a[i][j];
}
cout< }
//输入矩阵B
for(i=0; i
{
B[i]=b[i][0];
}
cout<
//判断能否用高斯消元法,如果矩阵主对角线上有0元素存在是不能使用的
for(i=0;i
{
if(A[i][i]==0)
{
cout<<“这个矩阵不能够使用高斯消元法!“< break;
}
}
float C[row];//存储初等行变换的系数,用于行的相减
//消元的整个过程算法
for(k=0;
- 上一篇:C++局域网文件传输
- 下一篇:DDA画线算法
评论
共有 条评论