提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:况鱼杰|2019-12-06 11:35:17.413|阅读 727 次
概述:本文将会介绍如何使用LU分解,一旦从矩阵构造了LU分解,就可以将其重新用于求解不同的右侧,计算逆,计算条件数,等等。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
NMath是一个适用于所有.NET语言,如C#、Visual Basic、F#和.NET的数学库,它包含了.NET平台上的面向对象数字计算的基础类。我们将以连载的形式向大家介绍NMath的实用教程。
一旦从矩阵构造了LU分解>>,就可以将其重新用于求解不同的右侧,计算逆,计算条件数,等等。
矩阵组成
只读属性提供对LU分解的组件矩阵的访问:
P获得置换矩阵。
L获得下三角矩阵。
U获取上三角矩阵。
Pivots获取一系列枢纽索引,第i行与Pivots [i]互换。
解决右侧
您可以使用Sol分解()方法使用LU分解来求解右侧。例如,此代码解决的一个右侧问题:
代码示例– C#LU分解
var A = new DoubleMatrix( "3x3 [2 1 1 4 1 0 -2 2 1]" ); var lu = new DoubleLUFact( A ); var v = new DoubleVector( "[8 11 3]" );DoubleVector x = lu.Solve( v );
代码示例– VB LU分解
Dim A As New DoubleMatrix("3x3 [2 1 1 4 1 0 -2 2 1]") Dim LU As New DoubleLUFact(A) Dim V As New DoubleVector("[8 11 3]") Dim X As DoubleVector = LU.Solve(V)
返回的向量x是线性系统Ax = v的解。请注意,向量v的长度必须等于分解矩阵A中的行数,否则会引发MismatchedSizeException。
同样,您可以使用Solve()方法来求解多个右侧:
代码示例– C#LU分解
var A = new FloatMatrix( "3x3 [2 1 1 4 1 0 -2 2 1]" ); var lu = new FloatLUFact( A ); var B = new FloatMatrix( "3x2[8 3 11 11 3 8]" );FloatMatrix X = fact.Solve( B );
代码示例– VB LU分解
Dim A As New FloatMatrix("3x3 [2 1 1 4 1 0 -2 2 1]") Dim LU As New FloatLUFact(A) Dim B As New FloatMatrix("3x2[8 3 11 11 3 8]") Dim X As FloatMatrix = Fact.Solve(B)
返回的矩阵X是线性系统AX = B的解。也就是说,右侧是B的列,解决方案是X的列。矩阵B的行数必须与因数相同。矩阵A还提供了SolveInPlace()方法,该方法将解决方案放置在给定的向量或矩阵中,而无需分配新的内存。给定的右侧数据必须具有步幅。
计算逆数,行列式和条件数
您可以使用LU分解使用Inverse()方法来计算逆数,而行列式可以使用Determinant()方法来计算。例如:
代码示例– C#LU分解
var A = new FloatMatrix( "3x3 [2 1 1 4 1 0 -2 2 1]" ); var lu = new FloatLUFact( A );FloatMatrix AInv = lu.Inverse(); float ADet = lu.Determinant();
代码示例– VB LU分解
Dim A As New FloatMatrix("3x3 [2 1 1 4 1 0 -2 2 1]") Dim LU As New FloatLUFact(A) Dim AInv As FloatMatrix = LU.Inverse() Dim ADet As Single = LU.Determinant()
ConditionNumber()方法以指定的规范类型计算条件编号。 矩阵A的条件数为:
kappa = ||A|| ||AInv||
其中AInv是矩阵A的逆数。
注:ConditionNumber()方法返回条件数rho的倒数,其中rho = 1 / kappa。
提供的NormType枚举包含用于指定矩阵范数的值。您您也可以选择估计条件编号(更快但不准确),或直接计算它,对于小矩阵,结果通常是相同的。因此,此代码估算无穷范数中的条件数:
代码示例– C#LU分解
var A = new DoubleMatrix( "3x3 [2 1 1 4 3 3 8 7 9 ]" ); var lu = new DoubleLUFact( A ); double AEstimatedConditionNum = lu.ConditionNumber( NormType.InfinityNorm, true );
代码示例– VB LU分解
Dim A As New DoubleMatrix("3x3 [2 1 1 4 3 3 8 7 9 ]") Dim LU As New DoubleLUFact(A) Dim AEstimatedConditionNum As Double = LU.ConditionNumber(NormType.InfinityNorm, True)
此代码直接在1范数中计算条件编号:
代码示例– C#LU分解
double AComputedConditonNum = lu.ConditionNumber( NormType.OneNorm, false );
代码示例– VB LU分解
Dim AComputedConditonNum As Double = LU.ConditionNumber(NormType.OneNorm, False)
上一章:创建LU分解
下一章:静态方法
==========================================
如果想要购买正版授权NMath的朋友,可以联系
关注慧聚IT微信公众号 ☟☟☟,了解产品的最新动态及最新资讯。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢