【发布时间】:2016-11-15 18:27:48
【问题描述】:
我正在编写一些使用 MathNet.Numerics.LinearAlgebra 的 C# 代码,并尝试将结果与教科书示例进行匹配。代码的一部分对 complex32 数组“Ybus”进行反转,并将其存储在另一个数组“Zbus”中:
Matrix<Complex32> Ybus = Matrix<Complex32>.Build.Dense(numBuses, numBuses);
Matrix<Complex32> Zbus = Matrix<Complex32>.Build.Dense(numBuses, numBuses);
我的 Ybus 完全符合书中的例子。
Ybus = j[ -13 5 4 0
5 -13.5 2.5 2
4 2.5 -9 2.5
0 2 2.5 -4.5]
但是当我做反转时
Zbus = Ybus.Inverse();
zbus的结果都是NaN
而书中的正确结果是这样的:
Zbus = j[ .15 .09 .12 .11
.09 .15 .12 .13
.12 .12 .25 .19
.11 .13 .19 .39]
有人知道问题可能是什么吗?也许复杂矩阵的求逆有一些问题?
经验教训:不要让你的数组太大,以至于它们有 0 的行,否则相反会爆炸:) ...这是正确的答案:
【问题讨论】:
-
这对我来说似乎工作正常。我的猜测是你的
Ybus不是你想象的那样。由于您没有显示您是如何填充Ybus或您如何确定这是您声称的,所以很难说问题到底是什么。 -
谢谢。我想我有足够的声誉来发布图片,所以我只是发布了数组元素的控制台打印屏幕截图。奇怪......两个数组之间的唯一区别是逆运算。除非在我的输入数组的引擎盖下有什么奇怪的东西..
-
顺便说一句,在两种情况下都使用相同的方法/函数来打印数组元素,所以它不像是打印格式或其他什么问题......我认为
-
Oooppppss...对不起大家。我做了一个傻事。我的数组大小是 1 行/列太大,并且由于零行,反向爆炸了。我很抱歉。一切都很好:)