我正在编写一些使用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);
Run Code Online (Sandbox Code Playgroud)
我的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]
Run Code Online (Sandbox Code Playgroud)
但是当我做倒置时
Zbus = Ybus.Inverse();
Run Code Online (Sandbox Code Playgroud)
Zbus的结果都是NaN
而本书的正确结果如下:
Zbus = j[ .15 .09 .12 .11
.09 .15 .12 .13
.12 .12 .25 .19
.11 .13 .19 .39]
Run Code Online (Sandbox Code Playgroud)
任何人都有任何想法可能是什么问题?也许复杂矩阵的反演有一些问题?
获得的经验:不要让你的数组太大,以致它们有0行或反向会爆炸:) ...这是正确的答案: