我正在编写一些使用MathNet.Numerics.LinearAlgebra的C#代码,并尝试与教科书示例匹配结果。代码的一部分对一个complex32数组"Ybus"进行反演,并将其存储在另一个数组"Zbus"中。
但是当我进行反转时
Zbus的结果全为NaN。
然而,从书中得出的正确结果如下:
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
或如何确定它是您所声称的,因此很难确定问题的具体原因。 - Jason Boyd