![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Relrin |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 64 Пол: Мужской Репутация: ![]() ![]() ![]() |
Сейчас сижу пишу программку, которая вычисляет СЛАУ методом Гаусса. Сейчас возникло несколько вопросов и проблем, на которые нужен ответ
![]() 1) Где нужно исправить переменные в процедуре Gauss, чтобы она могла решить не только случаи, когда количество переменных равно количеству уравнений, но и случай, когда количество переменных меньше кол-ва уравнений. Например: x1 + x2 + x3 = 3 2x1 +3x2 +2x3= 7 3x1 + x2 + x3 = 5 5x1 - x2 - x3 = 3 2) Необходимость помочь раскомментировать процедуру Gauss(взял с этого форума процедуру, как и ввод/вывод), поскольку не очень понимаю ход решения (хотя, очень похоже на решение "обратным ходом"). Поэтому хочется, чтобы помогли разобраться с этим кодом Поскольку код получился чуть более чем на 400 строк, то приложу исходник. Сообщение отредактировано: Relrin - 24.02.2011 10:24 Прикрепленные файлы ![]() |
TarasBer |
![]()
Сообщение
#2
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> но и случай, когда количество переменных меньше кол-ва уравнений
В общем случае решения нет. Тебе это точно надо? -------------------- |
Relrin |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 64 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да, конечно.
Пример, был взят из книги по вышке. Решение того примера, что я написал выше будут: x1=1 x2=1 x3=1 |
Lapp |
![]()
Сообщение
#4
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Где нужно исправить переменные в процедуре Gauss, чтобы она могла решить не только случаи, когда количество переменных равно количеству уравнений, но и случай, когда количество переменных меньше кол-ва уравнений. Из полной системы скомбинируй несколько таких, в которых кол-во уравнений равно числу неизвестных. Например, из 4 ур. с 3 неизв. получится 4 системы: {1,2,3} {2,3,4} {1,3,4} {1,2,4} (цифры означают номера уравнений, в общем случае будет Cnk систем) Затем реши каждую из них и возьми пересечение ответов (то есть множеств точек в многогомерных пространствах) к каждой. Это и будет ответ к полной системе. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
TarasBer |
![]()
Сообщение
#5
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> Затем реши каждую из них
Это ужасно. Итак, есть система: x1 + x2 + x3 = 3 2x1 +3x2 +2x3= 7 3x1 + x2 + x3 = 5 5x1 - x2 - x3 = 3 Её соответствует такая расширенная матрица: Код 1 1 1 | 3 2 3 2 | 7 3 1 1 | 5 5 -1 -1 | 3 Для того, чтобы система имела решение, надо, чтобы ранг этой матрицы (n+1 на m) был равен n. Как считать ранг матрицы? Цитата(Википедия) Ранг матрицы равен числу ненулевых строк в матрице после приведения её к ступенчатой форме при помощи элементарных преобразований над строками матрицы. То есть решает методом Гаусса (это ведь оно приводит к трапициевидной форме?), и надо, чтобы все строки после n-ой были нулевыми. Например, данная матрица после приведения к трапециевидному виду становится такой: Код 1 1 1 | 3 0 1 0 | 1 0 0 -2 | -2 0 0 0 | 0 Сразу виден ранг. Сообщение отредактировано: TarasBer - 24.02.2011 13:22 -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 10:27 |