Я пишу код C#, который использует MathNet.Numerics.LinearAlgebra, и пытается сопоставить результаты с примером учебника. Одна часть кода делает инверсию complex32 массива «Ybus», и сохраняет его в другом массиве «Zbus»:Matrix Inverse с помощью 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», или как вы определили, что это то, что вы утверждаете, трудно сказать, в чем проблема. –
Спасибо. Наверное, у меня достаточно репутации, чтобы опубликовать изображение, поэтому я просто разместил скриншот консольной печати элементов массива. Странно ... Единственное различие между двумя массивами - это инверсная операция. Если есть что-то странное под капотом моего массива ввода. –
И btw, тот же метод/функция используется в обоих случаях для печати элементов массива, поэтому не похоже, что есть проблема с форматом печати или чем-то еще ... I думаю –