|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.04.2011, 20:57 | #1 |
Регистрация: 18.02.2011
Сообщений: 5
|
[Delphi -> C#] Поиск определителя n*n матрицы рекурсией
Код:
Последний раз редактировалось Lfybkf; 19.04.2011 в 23:40. |
19.04.2011, 23:30 | #2 |
Регистрация: 18.02.2011
Сообщений: 5
|
Делал по этому коду с Delphi. Помогите его на C# перевести.
Код:
|
19.04.2011, 23:45 | #3 |
Очень суровый
Участник клуба
Регистрация: 17.12.2009
Сообщений: 1,988
|
{{delete}}
плохо соображаю к ночи, но если как по делфи коду, циклы записать так: Код:
Ненавижу быть как все, но люблю, чтобы все были как я.
Последний раз редактировалось MyLastHit; 19.04.2011 в 23:49. |
20.04.2011, 00:06 | #4 |
Регистрация: 18.02.2011
Сообщений: 5
|
Все равно, не работает(
Может быть, кто-нибудь еще поймет в чем ошибка моя? Уже 3й день не могу с этим разобраться( Последний раз редактировалось Lfybkf; 20.04.2011 в 22:07. |
13.06.2011, 23:48 | #5 |
Пользователь
Регистрация: 13.06.2011
Сообщений: 16
|
Lfybkf, есть несколько ньюансов, которые Вы не учли...
Вот пожалуй более точный перевод, хотя за полную правильность не ручаюсь... Код:
|
14.06.2011, 00:24 | #6 |
Пользователь
Регистрация: 13.06.2011
Сообщений: 16
|
Нахождение определителя матрицы через миноры
Lfybkf, вобщем-то сам столкнулся с проблемой вычисления определителя матрицы... Сам дошёл до следующей реализации рекурсивного алгоритма:
В коде класс Matrix содержит список списков типа double: Код:
Код:
|
15.06.2011, 20:25 | #7 |
Пользователь
Регистрация: 13.06.2011
Сообщений: 16
|
Нахождение определителя матрицы методом Гаусса
В итоге на матрице с размерами 11х11 получилось около 300 000 000 операций, чего ожидал около 3-х минут... При том, что это количество операций выросло где-то в 10 раз в сравнении с вычислением матрицы 10х10 - дальше и не тестировал...
(точнее тестировал 18х18, как мне и надо, но не дождался) Пришёл к выводу, что данный алгоритм делает очень много повторных (а следовательно и ненужных) вычислений... Ведь при расчёте нового определителя - на каждом шаге перебираются всё те же миноры, что и на прошлых итерациях + чуть-чуть новых... А данный алгоритм всёравно будет их заново просчитывать... Если необходимо вычислить определитель именно рекурсивным методом - то приведённый код выдаёт правильные результаты (сверял, правда, с он-лайновыми вычислителями), но при большой размерности матрицы советую использовать метод Гаусса. Метод Гаусса вместо 300 000 000 операций на том же наборе данных выдал всего 2 600! Выгода очевидна!!! Так выглядит реализация метода Гаусса: Код:
Код:
P.S.S.: Класс Matrix описан сообщением ранее... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вычисление определителя матрицы на C# | H3mania | Общие вопросы C/C++ | 2 | 07.12.2010 17:10 |
Вычисление определителя матрицы | Fantom.as | Общие вопросы Delphi | 2 | 11.10.2010 19:43 |
Вычисление определителя матрицы | StudentofSUSU | Microsoft Office Excel | 2 | 07.01.2010 21:05 |
программа для вычисления значения определителя матрицы | [рыжий хвост] | Помощь студентам | 0 | 10.06.2009 18:27 |
Вычисление определителя матрицы | Ирёнок | Помощь студентам | 6 | 21.02.2009 01:10 |