|
Модераторы: LSD, AntonSaburov |
|
gmart |
|
|||
Unregistered |
не могли бы отправить прогу(JAVA) "нахождение определителя матрицы"
|
|||
|
||||
Sid |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 23.4.2004 Репутация: нет Всего: нет |
Могу дать код написанный на C++ если хошь.
Думаю переписать на Java его будет легко |
|||
|
||||
Kurt |
|
|||
Увлеченный Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 1 Всего: 36 |
Я написал тебе такую программку. Конечно, ее можно оптимизировать или вообще использовать другой алгоритм (тады обращайся в "Алгоритмы" - я не спец. ), но этой полностью работающий код.
Вроде бы. Для вычисления определителя я использовал разложение на миноры. Если не знаком, немного теории: Определитель любой квадратной матрицы можно разложить так: |A11..A1n| |........| = ((-1)^(k+1))*Ak1*Mk1+((-1)^(k+2))*Ak2*Mk2+..+((-1)^(k+n))*Akn*Mkn. |An1..Ann| Где 1<=k<=n (по какой строке раскладываем), Aij - соотв. элемент определителя Mij - минор определителя, получающийся вычеркиванием i-й строки и j-го столбца. (соответственно, он более низкого порядка). Раскладывать можно по любой строке - это не имеет значения. Вот код(написан в Sun ONE Studio):
Все. Как видишь, тут 2 основные ф-ции: GetMinor(..) - получает минор, "вычеркнув" строку и столбец. (явно можно проще реализовать..withstupid ) CalculateMatrix(..) - рекурсивная ф-ция для вычисления определителя. Я везде использовал тип double - так "универсальнее". Хотя тест сделал в целых числах - не охота было возиться с дробями. Если что не понятно - спрашивай. Если так не пойдет - скажи как надо (ну или можно попробовать перевести с С++, как предлагал Sid..). : -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
Sid |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 23.4.2004 Репутация: нет Всего: нет |
gmart
У меня детерминант находится методом приведения к диагональному виду. Но думаю у Kurtа реальная реализация |
|||
|
||||
Kurt |
|
|||
Увлеченный Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 1 Всего: 36 |
Ну, как я сказал, эт не оптимизированный код. Но работающий.
Однако хотелоь бы услышать мнение самого gmart.. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 209 Всего: 537 |
CERN создал свою библиотеку математических функций colt (на чистой Java), если надо то могу после праздников кинуть ссылку.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Kurt |
|
|||
Увлеченный Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 1 Всего: 36 |
Эхм.. вот бы автора топика услышать..
А то как-то..ну вы понимаете.. Это сообщение отредактировал(а) Kurt - 4.5.2004, 01:51 -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
Гость_maxius |
|
|||
Unregistered |
Буду благодарен если LSD скинет ссылку на библиотеку мат. функций.
|
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 209 Всего: 537 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Guest |
|
|||
Unregistered |
Профессиональный код Kurt, ты меня просто выручил, наконец я здал все лабы по программированию.
|
|||
|
||||
= niko = |
|
|||
Unregistered |
Если можно пришлите код на С++ для расчета определителя на [email protected]
|
|||
|
||||
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |