原文:【原创】开源Math.NET基础数学类库使用(17)C#计算矩阵条件数

               本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html

开源Math.NET基础数学类库使用总目录:http://www.cnblogs.com/asxinyu/p/4329737.html

  上个月对Math.NET的基本使用进行了介绍,主要内容有矩阵,向量的相关操作,解析数据格式,数值积分,数据统计,相关函数,求解线性方程组以及随机数发生器的相关内容。这个月接着深入发掘Math.NET的各种功能,并对源代码进行分析,使得大家可以尽可能的使用Math.NET在.NET平台下轻易的开发数学计算相关的,或者可以将其中的源码快速移植到自己的系统中去(有时候并不需要所有的功能,只需要其中的部分功能代码),今天要介绍的是Math.NET中利用C#计算矩阵条件数的功能。

  矩阵条件数的概念比较难懂,以前学线性代数的时候,还比较了解,很久没接触了,也忘记了,所以理论部分引用百科的内容,对需要的还是看课本比较好。如果太复杂可以直接跳过看调用即可。但为了保持支持的完整性,我还是写出来。

  本文原文地址:http://www.cnblogs.com/asxinyu/p/4304307.html

1.什么是矩阵条件数

  矩阵A的条件数等于A的范数与A的逆的范数的乘积,即cond(A)=‖A‖·‖A^(-1)‖,对应矩阵的3种范数,相应地可以定义3种条件数。 函数 cond(A,1)、cond(A)或cond(A inf) 是判断矩阵病态与否的一种度量,条件数越大矩阵越病态。条件数事实上表示了矩阵计算对于误差的敏感性。对于线性方程组Ax=b,如果A的条件数大,b的微小改变就能引起解x较大的改变,数值稳定性差。如果A的条件数小,b有微小的改变,x的改变也很微小,数值稳定性好。它也可以表示b不变,而A有微小改变时,x的变化情况。

2.Math.NET矩阵条件数的实现

  Math.NET在对矩阵条件数的计算过程与行列式和秩的计算都相同,直接用在矩阵分解算法使用ConditionNumber来获取,如上文http://www.cnblogs.com/asxinyu/p/4304304.html的代码中就有ConditionNumber的实现

 public override float ConditionNumber
{
get
{
var tmp = Math.Min(U.RowCount, VT.ColumnCount) - ;
return Math.Abs(S[]) / Math.Abs(S[tmp]);
}
}

  其他过程比较简单雷同,就不再说明了。如有需要看源码,重要的还是使用的情况。

3.Math.NET计算矩阵条件数的代码

  上述过程和原理只是便于大家理解其实现过程,下面简单演示一下在Math.NET中计算矩阵条件数的过程,就是直接调用计算即可。

 // 格式设置
var formatProvider = (CultureInfo)CultureInfo.InvariantCulture.Clone();
formatProvider.TextInfo.ListSeparator = " ";
//创建一个随机的矩阵
var matrix = new DenseMatrix();
var rnd = new Random();
for (var i = ; i < matrix.RowCount; i++)
{
for (var j = ; j < matrix.ColumnCount; j++)
{
matrix[i, j] = rnd.NextDouble();
}
} Console.WriteLine(@"Initial matrix");
Console.WriteLine(matrix.ToString("#0.00\t", formatProvider));
Console.WriteLine(); //条件数 Condition number
Console.WriteLine(@"矩阵条件数");
Console.WriteLine(matrix.ConditionNumber());
Console.WriteLine();

结果如下:

 Initial matrix
DenseMatrix 5x5-Double
0.25 0.11 0.47 0.77 0.66
0.43 0.35 0.94 0.10 0.64
0.03 0.25 0.32 0.99 0.68
0.65 0.28 0.62 0.70 0.70
0.95 0.09 0.16 0.38 0.80 矩阵条件数
21.581238807809

4.资源

  包括源代码以及案例都可以去官网下载,下载地址本系列文章的目录中第一篇文章:http://www.cnblogs.com/asxinyu/p/4264638.html,有介绍。由于源码很大,如果找不到相应的案例,可以进行搜索,可以比较快的找到相应的代码。

开源Math.NET基础数学类库使用(17)C#计算矩阵条件数的更多相关文章

  1. 【原创】开源Math.NET基础数学类库使用(17)C#计算矩阵条件数

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...

  2. 开源Math.NET基础数学类库使用(16)C#计算矩阵秩

    原文:[原创]开源Math.NET基础数学类库使用(16)C#计算矩阵秩                本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4 ...

  3. 开源Math.NET基础数学类库使用(15)C#计算矩阵行列式

    原文:[原创]开源Math.NET基础数学类库使用(15)C#计算矩阵行列式                本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p ...

  4. 【原创】开源Math.NET基础数学类库使用(15)C#计算矩阵行列式

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...

  5. 【原创】开源Math.NET基础数学类库使用(16)C#计算矩阵秩

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...

  6. 开源Math.NET基础数学类库使用(11)C#计算相关系数

    阅读目录 前言 1.Math.NET计算相关系数的类 2.Correlation的实现 3.使用案例 4.资源                本博客所有文章分类的总目录:[总目录]本博客博文总目录-实 ...

  7. 【原创】开源Math.NET基础数学类库使用(11)C#计算相关系数

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...

  8. 【目录】开源Math.NET基础数学类库使用总目录

    本博客所有文章分类的总目录链接:[总目录]本博客博文总目录-实时更新  1.开源Math.NET数学组件文章   1.开源Math.NET基础数学类库使用(01)综合介绍   2.开源Math.NET ...

  9. 【原创】开源Math.NET基础数学类库使用(01)综合介绍

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...

随机推荐

  1. TCP、UDP数据包大小的限制(UDP数据包一次发送多大为好)——数据帧的物理特性决定的,每层都有一个自己的数据头,层层递减

    1.概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层. 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Da ...

  2. RSA密码系统 基于大数环境编写 密码学课程设计

    RSA密码系统的实现 1.问题描述 RSA密码系统可具体描述为:取两个大素数p和q,令n=pq,N=(p-1)(q-1),随机选择整数d,满足gcd(d,N)=1,ed=1 modN. 公开密钥:k1 ...

  3. 玩转Windows服务系列——创建Windows服务

    原文:玩转Windows服务系列——创建Windows服务 创建Windows服务的项目 新建项目->C++语言->ATL->ATL项目->服务(EXE) 这样就创建了一个Wi ...

  4. 图像处理特征不变算子系列之Moravec算子(一)

    论文转载请注明出处:http://blog.csdn.net/kezunhai 1977年,Moravec提出了兴趣点(Points of Interests)的概念,并应用于解决Stanford C ...

  5. VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式

    原文:VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式 Excel包含很多公式,如数学.日期.文本.逻辑等公式,非常方便,可以灵活快捷的对数据进行处理,达到我们想要的效果.Exce ...

  6. 手机定位原理 - GPS/GLONASS/北斗 + WIFI + 基站(转)

    卫星定位系统 - GPS/GLONASS/北斗: 关于GPS.GLONASS.北斗.伽利略系统的科普请自行谷歌. GPS是使用最广泛的全球定位网络,几乎是所有智能手机的标配.进几年,俄罗斯的GLONA ...

  7. 浅谈Storm流式处理框架(转)

    Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据.但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂. 有需求也就有创造,在Hadoop基本奠定了大数据霸 ...

  8. hdu4389(数位dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4389 题意:f(x)表示x各位的数字和. 给定1<=L<=R<=10^9, 求[L, ...

  9. Unity3d之MiniJson与LitJson之间的较量

    由于项目不得不用到json来解析服务器端传来的数据,于是不得不选择一种在unity3d上面可用的json.开始根据网上推荐LitJson,于是下载下来源码,导入项目: 经过测试可以用:但是移植到ipa ...

  10. HTML5: Screen Orientation API

    媒体的询问取决于智能手机和平板布局调整的方向一致网站.但有时候你被锁定在一个希腊网站特定方向.横向或纵向.此时,是本机格式可以指定保健应用. APP只显示在一个预设格式-独立于实际设备方向.通过使用H ...