MathNet.Numerics.LinearAlgebra를 사용하고 교과서 예제와 결과를 일치시키려는 C# 코드를 작성 중입니다. 코드의 한 부분은 다른 배열 "Zbus"에 complex32 배열 "Ybus", 저장을의 반전을 수행Matrix Inverse using 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의
Zbus = Ybus.Inverse();
결과는 모든 NaN이
있습니다
Zbus = j[ .15 .09 .12 .11
.09 .15 .12 .13
.12 .12 .25 .19
.11 .13 .19 .39]
사람 어떤 이슈가 있을지 아이디어가 있습니까? 어쩌면 복잡한 행렬의 반전에는 몇 가지 문제가 있습니까?
수업은 배운 :
: 그들은 공의 또는 역을 날려 버리겠다 ... :)의 행이 있도록 배열이 너무 크게하지 않습니다 여기에 정답이다
나를 위해 잘 작동하는 것 같다. 내 생각 엔 당신의'이브 스 (Ybus)'가 당신이 생각하는 것과 다르다는 것입니다. 당신이'Ybus '를 어떻게 채우고 있는지, 또는 그것이 당신이 주장하는 바를 어떻게 결정했는지 보여주지 않으므로 문제가 정확히 무엇인지 말할 수 없습니다. –
감사합니다. 이미지를 게시하기에 충분한 평판을 얻었 기 때문에 배열 요소의 콘솔 인쇄 스크린 샷을 게시했습니다. 이상한 ... 두 배열 사이의 유일한 차이점은 Inverse 연산입니다. 내 입력 배열의 후드 아래 뭔가 이상한 게 없다면 .. –
그리고 btw, 두 가지 경우 모두 동일한 메소드/함수가 배열 요소를 인쇄하는 데 사용되므로 인쇄 형식이나 다른 문제가있는 것처럼 보이지 않습니다. 생각한다 –