利用Math.net进行奇异值分解SVD

奇异值分解的基本原理大家可以参考其他博客,这里仅记录利用Math.net库计算奇异值。

基本原理可以参考这篇博客:奇异值分解法原理

利用奇异值求解线性方程组原理:利用SVD求解线性方程组

 Math.net是一个非常强大的数学算法库,里面有很多数学算法。可以直接在nuget程序包管理里面添加到程序中

using MathNet.Numerics.LinearAlgebra;
using MathNet.Numerics.LinearAlgebra.Double;


var mb = Matrix<double>.Build;//Matrix为math.net特有的矩阵类,包含矩阵的基本运算
double[,] x = { { 0, 1 }, { 1, 1 }, { 1, 0 } };
var A = mb.DenseOfArray(x);
var U = A.Svd().U; //左奇异向量
var W = A.Svd().W; //以对角线形式返回奇异值
var S = A.Svd().S; //以升序排列奇异值
var vt = A.Svd().VT;//右奇异向量转置

var matrixA = DenseMatrix.OfArray(new[,] { { 5.00, 2.00, -4.00 }, { 3.00, -7.00, 6.00 }, { 4.00, 1.00, 5.00 } });
var vecotrB = new DenseVector ( n
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值