注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

III = Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

Math.NET Numerics矩阵和向量的使用(5)  

2017-05-23 08:56:53|  分类: C# & .NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
矩阵的分解
Math.NET支持矩阵分解的函数有:
Cholesky:对称阵的Cholesky分解;
LU:方阵的LU分解;
QR:QR分解(一个矩阵m×n默认分解为m×n,n×n,也可以设置为m×m,m×n);
GramSchmidt:Gram-Schmidt正交化的QR分解;
Svd:奇异值分解;
evd:特征值分解。

矩阵和向量的操作
1.单个元素的操作
设有一个m×n的矩阵A,则单个元素的操作,有两种方法,一种是采用类似二维数组的索引方式操作单个元素:
A[0,0]可以获取或设置第一行第一列的元素,M[i,j]获取第(i+1)行(j+1)列的元素。另一种方式是使用At函数。At函数有两种使用方式:A.At(i,j)和A.At(i,j,t),第一种是读取第(i+1)行(j+1)列的元素值,而第二种是设置(i+1)行(j+1)列的元素值为t。
两种方法各有优劣:索引的方式安全一些,而At函数不检查边界,所以效率快一些,当能保证行、列值不会越界的情况下,推荐使用At函数。
2. 整行或列的操作
行和列的操作是类似的,这里只介绍行的操作。
获取单个行,可使用函数Row函数,例如A.Row(3)获取矩阵A的第四行;设置行则使用SetRow函数,A.SetRow(2,v)将设置第二行的值为已知向量v。
如果删除行,矩阵的行和列数并不会改变,而是返回一个新的矩阵,例如:
var B=A.RemoveRow(2);B矩阵就是A矩阵去除第三行之后的新矩阵。

3. 子矩阵
使用SubMatrix函数提取子矩阵,例如A.SubMatrix(1,2,1,2)提取一个2×2的子矩阵,其相对0,0处的偏移分别为1和1。

4. 清零
有如下方法提供清零:
A.Clear(); //所有元素置0
A.ClearColumn(2); //第三列元素置0
A.ClearColumns(1,3); //第二、四列元素置0
A.ClearSubMatrix(1,2,1,2);//相对0,0处的偏移分别为1和1的2×2子矩阵清零
在完成一些的矩阵运算之后,有些值明显非常小,甚至从理论上来讲,应该为0,例如我们计算A的逆矩阵与A相乘,应该是单位矩阵, 但是结果显示的并非如此,CoerceZero这一方法主要是为了解决浮点数运算带来的误差,A.CoerceZero(1e-10)将设置所有小于10的(-10)次方的值为0。

矩阵的字符串输出
使用ToString方法和ToMatrixString(向量则是ToVectorString)。
  评论这张
 
阅读(69)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017