我在写一些使用MathNet.Numerics.LinearAlgebra的C#代码,并尝试将结果与教科书示例进行匹配。代码的一部分确实在另一个数组“Zbus”一complex32阵列“YBUS”,并将其存储的反转:使用MathNet.Numerics的矩阵求逆
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'的,或者你是如何确定这是你所声称的,那么很难说这个问题到底是什么。 –
谢谢。我想我有足够的声望发布图片,所以我刚刚发布了阵列元素的控制台打印的屏幕截图。奇怪...这两个数组之间的唯一区别是逆运算。除非在输入数组的底层有什么奇怪的东西。 –
顺便说一句,在这两种情况下使用相同的方法/函数来打印数组元素,所以它不像打印格式或其他问题。认为 –