C++最小二乘法解线性方程组Matrix_Solve

转载源链接

功能:采用最小二乘法求解方程组K[m][n]*X[1][n]=B[m][1]中的X[1][n]

格式:Matrix_Solve(&K[0][0],&B[0][0],m,n,&x[0][0])

引用:

Matrix_T:求矩阵转置

Matrix_Mul:矩阵乘法

Matrix_Inv:矩阵求逆

源代码:

bool Matrix_Solve(double *K,double *B,int m,int n,double *x)//Kx=B求解x。K[m][n]。其结果返回最小二乘解,B[m][1]

{

      double *KT,*Kmul,*Kb,*Kinv;

      int i;

      i=n*n;

      KT=new double[m*n];

      Kmul=new double[i];

      Kinv=new double[i];

      Kb=new double[n];

      Matrix_T(K,m,n,KT);

      Matrix_Mul(KT,n,K,n,m,Kmul);

      Matrix_Mul(KT,n,B,1,m,Kb);

      if (Matrix_Inv(Kmul,n,Kinv))

      {

            Matrix_Mul(Kinv,n,Kb,1,n,x);

            delete []KT;

            delete []Kmul;

            delete []Kinv;

            delete []Kb;

            return true;

      }

      else

      {

            delete []KT;

            delete []Kmul;

            delete []Kinv;

            delete []Kb;

            return false;

      }

}

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值