我有一个有点复杂的算法,需要将二次曲线拟合到一组点。该二次曲线由参数化(u, v, f(u,v))
给出,其中f(u,v) = au^2+bv^2+cuv+du+ev+f
。
需要找到f(u,v)
函数的系数,因为我有一组这个函数应该服从的6个约束。问题是这组约束虽然产生了像A*x = b
这样的问题,但并不能很好地保证一个独特的解决方案。
因此,为了缩短它,我想使用alglib的设施以某种方式确定A
的伪逆或直接找到最适合x
向量。
除了计算SVD之外,是否有一个更直接的算法在这个库中实现,可以解决最小二乘意义上的系统(再次,除了SVD或使用朴素的inv(transpose(A)*A)*transpose(A)*b
公式一般来说最少正方形问题,其中A不是方阵?
答案 0 :(得分:1)
通过一些仔细的文档浏览找到答案:
rmatrixsolvels( A, noRows, noCols, b, singularValueThreshold, info, solverReport, x)
文档说明奇异值阈值是一个钳位阈值,如果该值低于它,则将SVD分解S矩阵中的任何奇异值设置为0
。因此它应该是0到1之间的标量。
希望它也可以帮助其他人。