多点平面方程拟合c语言,多点最小二乘法平面方程拟合计算
《多点最小二乘法平面方程拟合计算》由会员分享,可在线阅读,更多相关《多点最小二乘法平面方程拟合计算(5页珍藏版)》请在人人文库网上搜索。1、平面方程拟合计算平面方程的一般表达式为:, ()记:则:平面方程拟合:对于一系列的n个点:要用点拟合计算上述平面方程,则使:最小。要使得S最小,应满足:即:有,或,解上述线形方程组,得:即:其程序代码如下:#include stdafx.h#include #
《多点最小二乘法平面方程拟合计算》由会员分享,可在线阅读,更多相关《多点最小二乘法平面方程拟合计算(5页珍藏版)》请在人人文库网上搜索。
1、平面方程拟合计算平面方程的一般表达式为:, ()记:则:平面方程拟合:对于一系列的n个点:要用点拟合计算上述平面方程,则使:最小。要使得S最小,应满足:即:有,或,解上述线形方程组,得:即:其程序代码如下:#include stdafx.h#include #include #include #define MAX 10void Inverse(double *matrix1,double *matrix2,int n,double d);double Determinant(double* matrix,int n);double AlCo(double* matrix,int jie,in。
2、t row,int column);double Cofactor(double* matrix,int jie,int row,int column);int _tmain(int argc, _TCHAR* argv)double array123,Y3;double A,B,C;A = B = C = 0.0;ZeroMemory(array,sizeof(array);ZeroMemory(Y,sizeof(Y);for (int i = 0;i 12;i+)for (int j = 0;j 3;j+)arrayij = (double)rand();for (int i = 0; i。
3、 12;i+)arrayi0 = 1.0;/设计了12个最简单的数据点,x = 1平面上的点,double *Matrix3,*IMatrix3;for (int i = 0;i 3;i+)Matrixi = new double3;IMatrixi = new double3;for (int i = 0;i 3;i+)for (int j = 0;j 3;j+)*(Matrixi + j) = 0.0;for (int j = 0;j 3;j+)for (int i = 0;i 12;i+)*(Matrix0 + j) += arrayi0*arrayij;*(Matrix1 + j) +。
4、= arrayi1*arrayij;*(Matrix2 + j) += arrayi2*arrayij;Yj -= arrayij;double d = Determinant(Matrix,3);if (abs(d) 0.0001)printf(n矩阵奇异);getchar();return -1;Inverse(Matrix,IMatrix,3,d);for (int i = 0;i 3;i+)A += *(IMatrix0 + i)*Yi;B += *(IMatrix1 + i)*Yi;C += *(IMatrix2 + i)*Yi;printf(n A = %5.3f,B = %5.3。
5、f,C= %5.3f,A,B,C);for (int i = 0;i 3;i+)delete Matrixi;delete IMatrixi;getchar();return 0;void Inverse(double *matrix1,double *matrix2,int n,double d) int i,j; for(i=0;in;i+) matrix2i=(double *)malloc(n*sizeof(double); for(i=0;in;i+) for(j=0;jn;j+) *(matrix2j+i)=(AlCo(matrix1,n,i,j)/d); double Deter。
6、minant(double* matrix,int n) double result=0,temp; int i; if(n=1) result=(*matrix0); else for(i=0;in;i+) temp=AlCo(matrix,n,n-1,i); result+=(*(matrixn-1+i)*temp; return result; double AlCo(double* matrix,int jie,int row,int column) double result; if(row+column)%2 = 0) result = Cofactor(matrix,jie,ro。
7、w,column); else result=(-1)*Cofactor(matrix,jie,row,column); return result; double Cofactor(double* matrix,int jie,int row,int column) double result; int i,j; double* smallmatrMAX-1; for(i=0;ijie-1;i+) smallmatri= new doublejie - 1;for(i=0;irow;i+) for(j=0;jcolumn;j+) *(smallmatri+j)=*(matrixi+j); f。
8、or(i=row;ijie-1;i+) for(j=0;jcolumn;j+) *(smallmatri+j)=*(matrixi+1+j); for(i=0;irow;i+) for(j=column;jjie-1;j+) *(smallmatri+j)=*(matrixi+j+1); for(i=row;ijie-1;i+) for(j=column;jjie-1;j+) *(smallmatri+j)=*(matrixi+1+j+1); result = Determinant(smallmatr,jie-1); for(i=0;ijie-1;i+)delete smallmatri;return result;。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)