- 博客(9)
- 资源 (3)
- 收藏
- 关注
原创 LM
LM算法的理解 LM是解决非线性的最小二乘问题,多用于曲线拟合,它可以理解为高斯牛顿与最速下 降法的结合: x_(k+1)=x_k+H^(-1)*g_ 其中,H≈J^T J+μI与梯度下降法,牛顿法,高斯牛顿法的区别就是在于迭代步长H^(-1),高斯在梯度下降法基础上把 迭代步长用Hessian矩阵代替,高斯牛顿在牛顿法基础上用雅可比矩阵J代替Hessian矩阵,而LM算法在高斯牛顿基础上引入单位矩阵,加强矩阵可逆性。与梯度
2021-01-19 20:49:05
564
原创 最小二乘法拟合空间曲线
//curveline_fitting z=a*(x^2+y^2)+b*sqrt(x^2+y^2)+cvoid least_square(vector<vector<double>>XYZ, double &a, double &b, double &c){ int num_point = XYZ.size(); //eigen::matrixxd a_(3, 3), b_(3, 1), a123(3, 1); //double(*A)[100] =
2021-01-19 20:08:26
1816
6
原创 BP三阶拟合
之前整理BP三样条拟合空间曲线若要过首位点,则添加两个点Po=2P1-P2,Pn+1=2Pn-Pn-1代码如下:void BPthreeorder(CPosition *&pt, int &Num, int *InsertNum){ if (pt == NULL || InsertNum == NULL) return; int InsertNumSum = 0; // 计算需要插入的点总数 for (int i
2021-01-19 19:59:04
274
原创 矩阵分解之SVD(幂法)
具体原理参考别人博客:https://www.cnblogs.com/lantingg/p/7844605.html我直接上代码void SVD(vector<vector<double>>A_Matrix, vector<vector<double>>&U_Matrix, vector<vector<double>>&V_Matrix, vector<double>&S_Vector, int
2021-01-19 19:48:03
670
原创 矩阵分解之求逆
矩阵求逆方法有几种,本文主要利用LU分解求逆,LU分解参考https://blog.csdn.net/weixin_41664286/article/details/112850368代码如下:void Matrix_Inver(double *Matrix, double *Matrix_Inver, int Order){ double *L_Matrix = new double[Order*Order]; double *U_Matrix = new double[Order*Ord.
2021-01-19 19:38:20
721
原创 矩阵分解之LU
分享我这几天整理的代码原理参考如下:https://blog.csdn.net/u010945683/article/details/45803141直接上代码,注释部分是求解线性方程的void LU_Decom(double *matrix, double *L,double *U, double *b,int order){ for (int i = 0; i < order; ++i) { for (int j = 0; j < i; ++j) { *(U + i
2021-01-19 19:34:16
109
原创 矩阵分解之一SVD
SVD矩阵分解 这是我自己学习的有关SVD的代码,原理参考如下,我就不详细说,https://www.pianshen.com/article/1050296802/,主要利用LU分解原矩阵A,再求逆。直接分享代码如下:void SVD(double *A_Matrix,double *U_Matrix,double *V_Matrix,double *S_Matrix,int Row,int Col){ double *AT_Matrix = new double[Col * Row];
2021-01-19 19:25:11
402
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人