我在寫一些使用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'的,或者你是如何確定這是你所聲稱的,那麼很難說這個問題到底是什麼。 –
謝謝。我想我有足夠的聲望發佈圖片,所以我剛剛發佈了陣列元素的控制檯打印的屏幕截圖。奇怪...這兩個數組之間的唯一區別是逆運算。除非在輸入數組的底層有什麼奇怪的東西。 –
順便說一句,在這兩種情況下使用相同的方法/函數來打印數組元素,所以它不像打印格式或其他問題。認爲 –