Помогите составить алгоритм определения ранга матрицы.

Я хочу создать программу, которая будет определять ранг данной матрицы в консольном приложении С#. Но я не могу сделать алгоритм для этого. Не могли бы вы помочь мне сделать этот алгоритм?


person chanchal1987    schedule 20.07.2010    source источник
comment
Википедия перечисляет и ссылается на кучу методов. С чем именно у вас проблемы?   -  person IVlad    schedule 20.07.2010
comment
Я могу сделать это вручную, используя метод исключения Гаусса. Но я не могу реализовать это в своей программе. Пожалуйста помоги.   -  person chanchal1987    schedule 20.07.2010
comment
Ссылка на Википедию для исключения Гаусса: en.wikipedia.org/wiki/Gauss_elimination_method   -  person chanchal1987    schedule 20.07.2010
comment
Не без использования мозговой ткани ты постигнешь магию звания.   -  person Mau    schedule 20.07.2010
comment
@Mau: Не могли бы вы сделать код для меня?   -  person chanchal1987    schedule 20.07.2010
comment
@chanchal1987: Именно то, что я подозревал. Чек или наличные?   -  person Mau    schedule 20.07.2010


Ответы (1)


Вы можете просто использовать основной метод исключения Гаусса. Подсчет количества ненулевых строк даст вам ранг. Но этот метод не является действительно численно надежным. Как говорится в статье в Википедии, существует несколько других алгоритмов, таких как разложение по сингулярным числам (SVD) или разложение QR с поворотом. Для обоих вы легко сможете найти базовые реализации.

Но работая с точными числами, сколько вам для этого нужно, всегда приходится думать о числовых неточностях IEEE-представления поплавков в компьютере. Подробнее об этом читайте на: http://en.wikipedia.org/wiki/IEEE_754.

person data    schedule 20.07.2010
comment
Но я не могу понять, сколько итераций будет рассчитано, чтобы определить мой ответ. - person chanchal1987; 20.07.2010
comment
Откуда я могу найти другие алгоритмы (SVD, QRD и т.д.)? - person chanchal1987; 20.07.2010