C#使用MathNet生成矩陣并打印矩陣元素
安裝
MathNet.Numerics中提供了線性代數(shù)、微積分、特殊函數(shù)、概率論、隨機(jī)函數(shù)、插值、最優(yōu)化等一系列功能,是.net技術(shù)中首選的數(shù)值計(jì)算包。
其中,線性代數(shù)包LinearAlgebra包提供了向量、矩陣等數(shù)據(jù)結(jié)構(gòu),這些是數(shù)值計(jì)算的前提,故而相比于其他包更加基礎(chǔ)。
下面用VS新建一個(gè)控制臺(tái)項(xiàng)目,并啟用頂級(jí)語(yǔ)句。點(diǎn)擊工具->NuGet包管理器->管理解決方案的NuGet程序包,進(jìn)入瀏覽選項(xiàng)卡,搜索MathNet.Numerics,選中安裝。
創(chuàng)建和顯示矩陣
在使用命名空間之后,可通過(guò)Matrix.Build來(lái)創(chuàng)建矩陣,矩陣中重寫了ToString方法,所以可直接使用$字符串,示例如下
using MathNet.Numerics.LinearAlgebra;
Matrix<double> m = Matrix<double>.Build.Random(3,4);
Console.WriteLine($"{m}");
/* 輸出結(jié)果如下
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
*/
即創(chuàng)建的矩陣為

Matrix.Build是MatrixBuilder對(duì)象,后文簡(jiǎn)稱MB,用于生成矩陣,如果需要頻繁創(chuàng)建矩陣,則可創(chuàng)建一個(gè)矩陣生成器,示例如下
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); //通過(guò)表達(dá)式生成元素 MB.DenseDiagonal(3, 4, 2.0); //3x4對(duì)角為2.0 MB.DenseIdentity(3); // 3x3的單位陣
矩陣類型
MB支持超多種矩陣的生成方式,其中Dense又是最常用的一種,從上面的示例可知,MB提供了多種Dense重載,但前兩個(gè)輸入?yún)?shù)一般為行數(shù)和列數(shù),第三個(gè)參數(shù)則可以是
- 缺省,則所有元素為0
- 數(shù)值,則所有元素都是這個(gè)數(shù)
- 函數(shù),諸如(i, j) => f(i,j),表示( i , j ) (i,j)(i,j)處的元素,其值為f ( i , j ) f(i,j)f(i,j)
- 數(shù)組,將使用數(shù)組中的值進(jìn)行填充
DenseDiagonal用于生成對(duì)角矩陣,包括三種重載,
- 階數(shù),對(duì)角數(shù)值
- 行數(shù),列數(shù),對(duì)角數(shù)值
- 行數(shù),列數(shù),對(duì)角的生成函數(shù)
這兩種生成方法,囊括了矩陣生成的一些基本邏輯,從矩陣的形狀來(lái)說(shuō),主要有兩種形式,即指定行列數(shù)或者指定階數(shù);而就矩陣的內(nèi)容而言,則有三種方法,一是用某個(gè)值來(lái)填充,二是用某個(gè)數(shù)組中的值來(lái)填充,三則是通過(guò)函數(shù)來(lái)生成。
在建立起這種邏輯之后,對(duì)于其他矩陣生成方法,也可以逐步嘗試
| 方法 | 說(shuō)明 |
|---|---|
| DenseIdentity | 單位陣 |
| Diagonal | 對(duì)角方陣 |
| DiagonalIdentity | 對(duì)角單位陣 |
| Random | 隨機(jī)矩陣 |
| RandomPositiveDefinite | 每個(gè)元素是兩個(gè)隨機(jī)數(shù)的積 |
其中,隨機(jī)矩陣Random可以指定隨機(jī)數(shù)種子或者具體的分布,如果未指定分布,則默認(rèn)是標(biāo)準(zhǔn)正態(tài)分布。
到此這篇關(guān)于C#使用MathNet生成矩陣并打印矩陣元素的文章就介紹到這了,更多相關(guān)C# MathNet生成并打印矩陣內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# TimeSpan計(jì)算時(shí)間差的操作完整指南
TimeSpan 是 .NET 中用于表示時(shí)間間隔或持續(xù)時(shí)間的重要結(jié)構(gòu)體,它提供了豐富的方法和屬性來(lái)處理時(shí)間跨度,下面我們就來(lái)看看C# TimeSpan計(jì)算時(shí)間差的完整操作吧2025-12-12
C#連續(xù)任務(wù)Task.ContinueWith方法
這篇文章介紹了C#中的連續(xù)任務(wù)Task.ContinueWith方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
C#使用CEFSharp獲取動(dòng)態(tài)網(wǎng)頁(yè)源碼的演示步驟
CEFSharp是一個(gè)用C#編寫的庫(kù),它是Chromium Embedded Framework (CEF) 的.NET封裝和擴(kuò)展,CEF允許開發(fā)者在自己的應(yīng)用程序中嵌入一個(gè)功能強(qiáng)大的HTML渲染引擎,從而能夠呈現(xiàn)網(wǎng)頁(yè)內(nèi)容,本文介紹了C#如何使用CEFSharp獲取動(dòng)態(tài)網(wǎng)頁(yè)源碼,需要的朋友可以參考下2024-08-08

