Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2015, 07:49   #1
cripple_nipple
 
Регистрация: 23.08.2014
Сообщений: 5
Восклицание Метод Камера c++. Матрица 1000х1000. Floating point overflow

Написал метод Гаусса с выбором главного элемента, который считает определитель 1000х1000 (размерности от 2х2 до 7х7 считает правильно, надеюсь и 1000х1000 тоже, еще не проверял).

Теперь нужно сделать Крамера. За основу взял уже написанный мной метод Гаусса, добавив функцию вычисления определителя с подстановкой i-го столбца. Тут и появляется ошибка:

При этом подсвечивается
Код:
for (int i = j; i < n-1; i++)   
        {                        
            double coef = masTmp[i+1][j] / masTmp[j][j];  //<-вот эта строка
            for (int jj = j; jj < n; jj++)
            {
                double tmpM = coef * masTmp[j][jj];
                masTmp[i+1][jj] -= tmpM;
            }
        }
К слову, этот код также решает матрицы до размерности 7х7 включительно (другие не проверял), но 500х500 и 1000х1000 уже не получается.

Пробовал кучу всего, не могу решить.
Вложения
Тип файла: rar Kramer.rar (1.8 Кб, 9 просмотров)
cripple_nipple вне форума Ответить с цитированием
Старый 01.04.2015, 07:55   #2
cripple_nipple
 
Регистрация: 23.08.2014
Сообщений: 5
По умолчанию

Здесь по ссылке: https://vk.com/doc296627823_378907723 текстовые файлы с данными. Сначала нужно загружать файл с "m" в названии - это файл с матрицей, а затем с "v" - это столбец свободных членов. Очевидно, что файлы идут парами, то есть 1000m.txt + 1000v.txt, 7m.txt + 7v.txt и т.д. Вводить названия в консоль нужно с расширением
cripple_nipple вне форума Ответить с цитированием
Старый 01.04.2015, 16:14   #3
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,603
По умолчанию

Число с плавающей точкой переполняется. Длинную арифметику нужно дополнительно реализовывать, то есть вручную делить.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 02.04.2015, 10:21   #4
cripple_nipple
 
Регистрация: 23.08.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от challengerr Посмотреть сообщение
Число с плавающей точкой переполняется. Длинную арифметику нужно дополнительно реализовывать, то есть вручную делить.
Гуглил уже это. Слишком напряжно. Есть другой способ?
Проблема еще в том, что даже алгоритмы не гуглятся. Я бы попробовал переписать прогу, но не знаю как.
cripple_nipple вне форума Ответить с цитированием
Старый 02.04.2015, 10:54   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Есть другой способ?
Перейти к целочисленной арифметике. Заюзать сопроцессор или спец. комманды, типа каких-то SSE*, AVX, ... но не уверен, что это будет проще, если вы не разобрались в длинной арифметике, материалов по которой навалом.
p51x вне форума Ответить с цитированием
Старый 02.04.2015, 15:09   #6
krGorka
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 35
По умолчанию

Код:
double coef = masTmp[i+1][j] / masTmp[j][j];
скорее всего деление на 0. Обработать это событие заранее.
krGorka вне форума Ответить с цитированием
Старый 03.04.2015, 16:22   #7
cripple_nipple
 
Регистрация: 23.08.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от krGorka Посмотреть сообщение
Код:
double coef = masTmp[i+1][j] / masTmp[j][j];
скорее всего деление на 0. Обработать это событие заранее.
Как это событие можно обработать?
cripple_nipple вне форума Ответить с цитированием
Старый 08.04.2015, 17:13   #8
cripple_nipple
 
Регистрация: 23.08.2014
Сообщений: 5
По умолчанию

Подкиньте хотя бы алгоритмов нахождения определителя?
cripple_nipple вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
floating point overflow в delphi gylayko Помощь студентам 2 14.09.2012 17:34
floating point overflow awzq Общие вопросы C/C++ 2 05.09.2012 13:54
Floating point overflow Ania Lunee Помощь студентам 4 18.05.2012 22:01
Чтение файла в массив и построение графика TChart, floating point overflow А здесь смотрели? vitalyisaev2 C++ Builder 1 09.11.2010 21:36
Delphi, "Floating point overflow" что делать? xMass Помощь студентам 12 02.04.2009 01:37