IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Вычислить определитель матрицы 5-го порядка
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Помогите, пожалуйста с решением проблемы. Дано задание: "написать программу, которая вычисляет определитель матрицы пятого порядка". Моих знаний, к сожалению недотаточно, чобы выполнить. Способы приведённые в FAQ не смогу объяснить преподавателю..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






И что, ты хочешь, чтобы мы придумали новый способ, который ты сможешь объяснить? Что именно непонятно?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 44
Пол: Мужской
Реальное имя: Артём

Репутация: -  0  +


Определитель матрицы (рекурсивное определение)

Сообщение отредактировано: habi -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Я спрашиваю, что непонятно... Код я помню... Ты пальцем покажи, в какой строке затрудняешься объяснить? И заодно скажи, ты сам алгоритм нахождения определителя методом "понижения порядка" знаешь?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Ну, допустим. Взять способ "Вычисление детерминанта (определителя) матрицы
приведением к диагональному виду."

В массиве используется тип данных real. С одной стороны правильно, дабы появилась возможность работы с вещественными числами. Но, я, чтобы упростить себе задачу, решил работать только с целыми числами.
Мне непонятно, для чего используется константа epsilon. И как реализовать этот алгоритм для работы только с целыми числами.

Добавлено через 1 мин.
Цитата(volvo @ 24.05.2008 15:17) *

И заодно скажи, ты сам алгоритм нахождения определителя методом "понижения порядка" знаешь?


к сожалению, нет.

Сообщение отредактировано: AliKs -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
И как реализовать этот алгоритм для работы только с целыми числами.
Никак. По алгоритму требуется делить элементы строки на элемент главной диагонали, а частное - это всегда вещественный тип...

Цитата
Мне непонятно, для чего используется константа epsilon.
Для того, чтобы корректно проводить проверку на 0. С вещественными числами нельзя делать так:
if a[i, i] = 0 then ...

нужно сравнивать с очень маленьким числом, эту роль и выполняет epsilon, т.е., число, меньшее чем epsilon считается равным нулю...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


попробовал просто использовать готовый вариант из FAQ: "Вычисление детерминанта (определителя) матрицы
приведением к диагональному виду". Заменил только порядок: с 3 на 5.

По непонятным мне причинам, вне зависимости от вводимой матрицы, ответ (определитель) равен нулю. Пробовал вводить и с клавиатуры и random'ом.

ps: Ещё мне непонятно, что происходит внутри функции det. Т.е., какие логические и математические действия в ней выполняются.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
По непонятным мне причинам, вне зависимости от вводимой матрицы, ответ (определитель) равен нулю.

Задал матрицу вот так:
const
a: matrix = (
(1, 2, 3, 4, 5),
(2, 3, 7, 10, 13),
(3, 5, 11, 16, 21),
(2, -7, 7, 7, 2),
(1, 4, 5, 3, 10)
);

, и maxN = 5, в результате - получил правильный ответ: 52. Что я делаю не так?
Может, ты забыл в вызове Det заменить?
Determ := Det(a, 5);


Цитата
Ещё мне непонятно, что происходит внутри функции det. Т.е., какие логические и математические действия в ней выполняются.
Матрица приводится к диагональному виду. Алгоритм Гаусса см. здесь: Вики: Алгоритм Гаусса
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 1.12.2020 17:59
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name