| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Fortran > [General] Метод Гаусса |
| Автор: tatu 28.4.2010, 13:50 |
| Ну в общем что-то я тыркался с Гауссом но нефига не понял этот фортран)))) даже хапустить не могу(((( все какие-то ошибки выдает. суть в том чо нужно реализоваьт метод гаусса причем тарица вводиться из файла, и считаются невязки;) |
| Автор: tatu 9.5.2010, 11:21 | ||
вот код.....почему-то не считает массивы больше 7. точнее правильно не считает...до 7 нормально все а потом нет. |
| Автор: FCM 13.5.2010, 20:19 |
| Может зависеть от конкретного вида матрицы. Профессиональные программы предусматривают всякие ухищрения в целях предварительного "улучшения" матрицы. Но в ряде случаев достаточно перейти на двойную точность. Покажи матрицу с которой проблемы. |
| Автор: tatu 26.5.2010, 20:42 |
| двойную точност ставил, нефига не помагает(((( матрица любая у нас 20 на 20 проверяет в архиве есть все. посмотрите, может что-то не так сделал при решении? |
| Автор: FCM 29.5.2010, 09:45 |
| В целом в прямом и обратном ходе вроде все более менее, за исключением проверки на неравенство нулю вещественных чисел, на которые происходит деление, которую лучше заменить на проверку превышения некоторого малого порога и, если модуль числа, на которое происходит деление, меньше его, останавливать вычисление с соответствующим сообщением. (Расчет невязки я не смотрел) Я взял твою программу, сделал массивы динамическими, ввод размера (т.е. raz) массива с клавиатуры и инициализацию M случайными числами. Если нет элементов с малыми значениями, то все считает. Например, для raz = 18 максимум невязки ~ 10^-5. Если же сделать двойную точность будет ~ 10^-14. ("Двойная точность - вежливость программистов"). Проблемы возникают, если есть элементы матрицы или промежуточных матриц с очень малыми (или очень большими) значениями. Тут уже надо менять алгоритм - т.е. делать перестановки строк или столбцов, чтобы избежать деления на малые числа (это называется методом Гаусса с выбором главного элемента - см., например, Рыжиков "Современный фортран"2004 или Вержбицкий "Основы численных методов" 2005 стр.58. ) . (Еще в результате прямого хода последнее уравнение может принять вид 0=0, что означает бесконечное множество решений.) Поэтому и предлагалось показать матрицу, с которой возникают проблемы (в выложенном архиве нашел только одну расширенную матрицу 4х5). Возможна также проблема при считывании матрицы, т.е. соответствующие матрицы в файле некорректно записаны. |