![]() |
|
|
![]()
|
|
| tatu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.12.2009 Репутация: -1 Всего: -1 |
Ну в общем что-то я тыркался с Гауссом но нефига не понял этот фортран)))) даже хапустить не могу(((( все какие-то ошибки выдает.
суть в том чо нужно реализоваьт метод гаусса причем тарица вводиться из файла, и считаются невязки;) |
|||
|
||||
| kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: нет Всего: 160 |
С чем Вы тыркались и с какой целью?
Задача учебная? Где код, что Вы написали? -------------------- |
||||
|
|||||
| tatu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.12.2009 Репутация: -1 Всего: -1 |
вот код.....почему-то не считает массивы больше 7. точнее правильно не считает...до 7 нормально все а потом нет. Присоединённый файл ( Кол-во скачиваний: 8 )
1.rar 250,48 Kb |
|||
|
||||
| FCM |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: 8 Всего: 9 |
Может зависеть от конкретного вида матрицы.
Профессиональные программы предусматривают всякие ухищрения в целях предварительного "улучшения" матрицы. Но в ряде случаев достаточно перейти на двойную точность. Покажи матрицу с которой проблемы. |
|||
|
||||
| tatu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.12.2009 Репутация: -1 Всего: -1 |
двойную точност ставил, нефига не помагает((((
матрица любая у нас 20 на 20 проверяет в архиве есть все. посмотрите, может что-то не так сделал при решении? |
|||
|
||||
| FCM |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: 8 Всего: 9 |
В целом в прямом и обратном ходе вроде все более менее, за исключением
проверки на неравенство нулю вещественных чисел, на которые происходит деление, которую лучше заменить на проверку превышения некоторого малого порога и, если модуль числа, на которое происходит деление, меньше его, останавливать вычисление с соответствующим сообщением. (Расчет невязки я не смотрел) Я взял твою программу, сделал массивы динамическими, ввод размера (т.е. raz) массива с клавиатуры и инициализацию M случайными числами. Если нет элементов с малыми значениями, то все считает. Например, для raz = 18 максимум невязки ~ 10^-5. Если же сделать двойную точность будет ~ 10^-14. ("Двойная точность - вежливость программистов"). Проблемы возникают, если есть элементы матрицы или промежуточных матриц с очень малыми (или очень большими) значениями. Тут уже надо менять алгоритм - т.е. делать перестановки строк или столбцов, чтобы избежать деления на малые числа (это называется методом Гаусса с выбором главного элемента - см., например, Рыжиков "Современный фортран"2004 или Вержбицкий "Основы численных методов" 2005 стр.58. ) . (Еще в результате прямого хода последнее уравнение может принять вид 0=0, что означает бесконечное множество решений.) Поэтому и предлагалось показать матрицу, с которой возникают проблемы (в выложенном архиве нашел только одну расширенную матрицу 4х5). Возможна также проблема при считывании матрицы, т.е. соответствующие матрицы в файле некорректно записаны. Это сообщение отредактировал(а) FCM - 7.6.2010, 11:52 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Fortran | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |