C#用MathNet生成矩阵,并打印矩阵元素

这篇具有很好参考价值的文章主要介绍了C#用MathNet生成矩阵,并打印矩阵元素。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安装

MathNet.Numerics中提供了线性代数、微积分、特殊函数、概率论、随机函数、插值、最优化等一系列功能,是.net技术中首选的数值计算包。

其中,线性代数包LinearAlgebra包提供了向量、矩阵等数据结构,这些是数值计算的前提,故而相比于其他包更加基础。

下面用VS新建一个控制台项目,并启用顶级语句。点击工具->NuGet包管理器->管理解决方案的NuGet程序包,进入浏览选项卡,搜索MathNet.Numerics,选中安装。

创建和显示矩阵

在使用命名空间之后,可通过Matrix.Build来创建矩阵,矩阵中重写了ToString方法,所以可直接使用$字符串,示例如下

using MathNet.Numerics.LinearAlgebra;

Matrix<double> m = Matrix<double>.Build.Random(3,4);
Console.WriteLine($"{m}");

/* 输出结果如下
DenseMatrix 3x4-Double
 -1.34532   0.209099   1.64422   0.13664
  1.15024  -0.751815  0.242772  -1.90048
0.0985362   -1.02023  0.727527  0.137225
*/

即创建的矩阵为

[ − 1.34532 0.209099 1.64422 0.13664 1.15024 − 0.751815 0.242772 − 1.90048 0.0985362 − 1.02023 0.727527 0.137225 ] \begin{bmatrix} -1.34532& 0.209099& 1.64422& 0.13664\\ 1.15024&-0.751815&0.242772&-1.90048\\ 0.0985362& -1.02023&0.727527&0.137225\\ \end{bmatrix} 1.345321.150240.09853620.2090990.7518151.020231.644220.2427720.7275270.136641.900480.137225

Matrix.Build是MatrixBuilder对象,后文简称MB,用于生成矩阵,如果需要频繁创建矩阵,则可创建一个矩阵生成器,示例如下

var MB = Matrix<double>.Build;
m = MB.Random(3, 4);

MB.Dense(3, 4);          //3x4的全0矩阵
MB.Dense(3, 4, 1.0);     //3x4的全1.0矩阵
MB.Dense(3, 4, (i, j) => 100 * i + j);   //通过表达式生成元素
MB.DenseDiagonal(3, 4, 2.0); //3x4对角为2.0
MB.DenseIdentity(3);     // 3x3的单位阵

矩阵类型

MB支持超多种矩阵的生成方式,其中Dense又是最常用的一种,从上面的示例可知,MB提供了多种Dense重载,但前两个输入参数一般为行数和列数,第三个参数则可以是

  • 缺省,则所有元素为0
  • 数值,则所有元素都是这个数
  • 函数,诸如(i, j) => f(i,j),表示 ( i , j ) (i,j) (i,j)处的元素,其值为 f ( i , j ) f(i,j) f(i,j)
  • 数组,将使用数组中的值进行填充

DenseDiagonal用于生成对角矩阵,包括三种重载,

  • 阶数,对角数值
  • 行数,列数,对角数值
  • 行数,列数,对角的生成函数

这两种生成方法,囊括了矩阵生成的一些基本逻辑,从矩阵的形状来说,主要有两种形式,即指定行列数或者指定阶数;而就矩阵的内容而言,则有三种方法,一是用某个值来填充,二是用某个数组中的值来填充,三则是通过函数来生成。

在建立起这种逻辑之后,对于其他矩阵生成方法,也可以逐步尝试

方法 说明
DenseIdentity 单位阵
Diagonal 对角方阵
DiagonalIdentity 对角单位阵
Random 随机矩阵
RandomPositiveDefinite 每个元素是两个随机数的积

其中,随机矩阵Random可以指定随机数种子或者具体的分布,如果未指定分布,则默认是标准正态分布。文章来源地址https://www.toymoban.com/news/detail-761929.html

到了这里,关于C#用MathNet生成矩阵,并打印矩阵元素的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 1572. 矩阵对角线元素的和

    给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 同时求对角线和副对角线上元素的和再减去重合的元素

    2024年02月13日
    浏览(41)
  • 【1572. 矩阵对角线元素的和】

    来源:力扣(LeetCode) 描述: 给你一个正方形矩阵 mat ,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1: 示例 2: 示例 3: 提示: n == mat.length == mat[i].length 1 = n = 100 1 = mat[i][j] = 100 方法一:遍历矩阵 思路

    2024年02月12日
    浏览(39)
  • Leetcode 1572.矩阵对角线元素之和

    给你一个正方形矩阵  mat ,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例  1: 示例  2: 示例 3: 提示: n == mat.length == mat[i].length 1 = n = 100 1 = mat[i][j] = 100 通过次数 63.3K 提交次数 75.9K 通过率 83.3% 1.给一个

    2024年02月10日
    浏览(47)
  • LeetCode 1572. 矩阵对角线元素的和

    力扣题目链接:https://leetcode.cn/problems/matrix-diagonal-sum/ 给你一个正方形矩阵 mat ,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。   示例  1: 示例  2: 示例 3:   提示: n == mat.length == mat[i].length 1 = n = 100 1 = mat

    2024年02月13日
    浏览(66)
  • 【LeetCode】1572.矩阵对角线元素的和

    给你一个正方形矩阵  mat ,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例  1: 示例  2: 示例 3: 提示: n == mat.length == mat[i].length 1 = n = 100 1 = mat[i][j] = 100 观察矩阵的对角线,发现通常情况每一行都有两个

    2024年02月13日
    浏览(41)
  • 求一个3*3矩阵对角线元素之和

    #includestdio.h #includestring.h int main() {     int m, n, j, k,sum=0;     int a[10][10];     for (m = 0; m 3; m++)     {         for (n = 0; n 3; n++)         {             scanf(\\\"%d\\\", a[m][n]);         }     }     for (m = 0; m 3; m++)     {         for (n = 0; n 3; n++)         {          

    2024年02月03日
    浏览(46)
  • torch.diag() 取矩阵对角线元素,torch.diag_embed() 指定值变成对角矩阵

    1、torch.diag() 2、torch.diag_embed()

    2024年02月16日
    浏览(39)
  • C语言程序设计:求矩阵主对角线和副对角线元素之和

    题目内容: 求5行5列矩阵的主对角线和副对角线元素之和。 输入格式: \\\"%d\\\" 输出格式: \\\"sum=%d\\\" 输入样例: 1 2 3 4 3 2 3 4 1 6 3 4 5 6 7 4 2 6 7 8 1 6 7 8 9 输出样例: sum=37 时间限制:500ms内存限制:32000kb

    2024年02月13日
    浏览(62)
  • 题目:求一个3*3矩阵对角线元素之和

    题目:求一个3*3矩阵对角线元素之和 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated should leave quickly. 1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加

    2024年04月17日
    浏览(50)
  • 【每日一题】1572. 矩阵对角线元素的和

    给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1: 示例 2: 示例 3: 提示: n == mat.length == mat[i].length 1 = n = 100 1 = mat[i][j] = 100 思路:主对角线i=j,副对角线i+j=n-1。

    2024年02月13日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包