![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
AliKs |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Помогите, пожалуйста с решением проблемы. Дано задание: "написать программу, которая вычисляет определитель матрицы пятого порядка". Моих знаний, к сожалению недотаточно, чобы выполнить. Способы приведённые в FAQ не смогу объяснить преподавателю..
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
И что, ты хочешь, чтобы мы придумали новый способ, который ты сможешь объяснить? Что именно непонятно?
|
habi |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Реальное имя: Артём Репутация: ![]() ![]() ![]() |
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Я спрашиваю, что непонятно... Код я помню... Ты пальцем покажи, в какой строке затрудняешься объяснить? И заодно скажи, ты сам алгоритм нахождения определителя методом "понижения порядка" знаешь?
|
AliKs |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Ну, допустим. Взять способ "Вычисление детерминанта (определителя) матрицы
приведением к диагональному виду." В массиве используется тип данных real. С одной стороны правильно, дабы появилась возможность работы с вещественными числами. Но, я, чтобы упростить себе задачу, решил работать только с целыми числами. Мне непонятно, для чего используется константа epsilon. И как реализовать этот алгоритм для работы только с целыми числами. Добавлено через 1 мин. И заодно скажи, ты сам алгоритм нахождения определителя методом "понижения порядка" знаешь? к сожалению, нет. Сообщение отредактировано: AliKs - 24.05.2008 14:21 |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата И как реализовать этот алгоритм для работы только с целыми числами. Никак. По алгоритму требуется делить элементы строки на элемент главной диагонали, а частное - это всегда вещественный тип...Цитата Мне непонятно, для чего используется константа epsilon. Для того, чтобы корректно проводить проверку на 0. С вещественными числами нельзя делать так:if a[i, i] = 0 then ... нужно сравнивать с очень маленьким числом, эту роль и выполняет epsilon, т.е., число, меньшее чем epsilon считается равным нулю... |
AliKs |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
попробовал просто использовать готовый вариант из FAQ: "Вычисление детерминанта (определителя) матрицы
приведением к диагональному виду". Заменил только порядок: с 3 на 5. По непонятным мне причинам, вне зависимости от вводимой матрицы, ответ (определитель) равен нулю. Пробовал вводить и с клавиатуры и random'ом. ps: Ещё мне непонятно, что происходит внутри функции det. Т.е., какие логические и математические действия в ней выполняются. |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата По непонятным мне причинам, вне зависимости от вводимой матрицы, ответ (определитель) равен нулю. Задал матрицу вот так: const, и maxN = 5, в результате - получил правильный ответ: 52. Что я делаю не так? Может, ты забыл в вызове Det заменить? Determ := Det(a, 5); Цитата Ещё мне непонятно, что происходит внутри функции det. Т.е., какие логические и математические действия в ней выполняются. Матрица приводится к диагональному виду. Алгоритм Гаусса см. здесь: Вики: Алгоритм Гаусса |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 21:24 |