Tôi đang viết một số mã C# sử dụng MathNet.Numerics.LinearAlgebra và cố gắng so khớp kết quả với ví dụ về sách giáo khoa. Một phần của mã lệnh thực hiện một đảo ngược của một mảng complex32 "Ybus", và lưu trữ nó trong một mảng "Zbus":Ma trận nghịch đảo bằng cách sử dụng MathNet.Numerics
Matrix<Complex32> Ybus = Matrix<Complex32>.Build.Dense(numBuses, numBuses);
Matrix<Complex32> Zbus = Matrix<Complex32>.Build.Dense(numBuses, numBuses);
My Ybus phù hợp chính xác ví dụ trong cuốn sách.
Ybus = j[ -13 5 4 0
5 -13.5 2.5 2
4 2.5 -9 2.5
0 2 2.5 -4.5]
Nhưng khi tôi làm một đảo ngược
Zbus = Ybus.Inverse();
kết quả Zbus đều NaN
trong khi kết quả chính xác từ cuốn sách trông như thế này:
Zbus = j[ .15 .09 .12 .11
.09 .15 .12 .13
.12 .12 .25 .19
.11 .13 .19 .39]
Bất cứ ai có bất kỳ ý tưởng nào về vấn đề này không? Có lẽ đảo ngược của một ma trận phức tạp có một số vấn đề?
Bài học kinh nghiệm: không làm cho mảng của bạn quá lớn để họ có hàng 0 hay nghịch đảo sẽ thổi lên :) ... Dưới đây là câu trả lời đúng:
Có vẻ như để làm việc tốt cho tôi. Tôi đoán là 'Ybus' của bạn không phải là những gì bạn nghĩ. Vì bạn không cho biết cách bạn đang cư trú 'Ybus' hoặc cách bạn xác định rằng đó là những gì bạn yêu cầu, thật khó để nói chính xác vấn đề là gì. –
Cảm ơn. Tôi đoán tôi có đủ danh tiếng để đăng một hình ảnh, vì vậy tôi chỉ đăng một ảnh chụp màn hình của giao diện điều khiển in của các yếu tố của mảng. Lạ ... sự khác biệt duy nhất giữa hai mảng là hoạt động nghịch đảo. Trừ khi có gì đó lạ dưới mui xe của mảng đầu vào của tôi .. –
Và btw, cùng một phương pháp/chức năng được sử dụng trong cả hai trường hợp để in các phần tử mảng, do đó, nó không giống như có một vấn đề với định dạng in ấn hoặc một cái gì đó ... hãy suy nghĩ –