|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.11.2016, 12:56 | #1 |
Пользователь
Регистрация: 18.10.2016
Сообщений: 27
|
Язык Си. Вычисление параметра отбора матриц. Не хватает мощности. Помогите посчитать
Вычисляется коэффициент отбора матриц, который из 20000 матриц отбирает матриц в пределах от 800 до 1600, матрицы размерности 34 на n, где n=2..100, для каждого n нужно посчитать этот коэффициент. Помогите посчитать или оптимизировать код.
Код:
Последний раз редактировалось Ar2emiS; 09.11.2016 в 15:14. |
09.11.2016, 14:39 | #2 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
что именно не так? памяти не хватает? слишком долго работает? и код отформатировал бы, читать же невозможно
|
09.11.2016, 15:03 | #3 |
Пользователь
Регистрация: 18.10.2016
Сообщений: 27
|
Слишком долго работает. Для n=2..30 считал коэффициенты около 15 часов.
|
09.11.2016, 15:15 | #4 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
|
09.11.2016, 15:28 | #5 |
Пользователь
Регистрация: 18.10.2016
Сообщений: 27
|
Матрицы из 0 и 1, различие между матрицами рассчитывается как расстояние между матрицами в евклидовом пространстве (D=sqrt(sum(sum(m1(i,j)-m2(i,j)))) )
Максимальное расстояние между матрицами равно D0=sqrt(k*n), то есть если рассмотреть две матрицы, одну полностью из 0,а вторую из 1. Но в общем случае, когда матрица заполнена случайным образом из 0 и 1,то ввожу параметр а, который ,очевидно меняется от 0 до 1, но этот интервал, можно урезать от 0.5 до 0.9. Тогда расстояние,которое обеспечивает отбор нужного количества матриц, представлена как D0=а*sqrt(k*n). Условие отбора матриц D>D0. Задача состоит в том,что найти параметры а для всех n. |
09.11.2016, 15:35 | #6 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
1) У тебя ошибки выдаёт? У меня компилятор новый, поэтому он может реагировать на то, на что твой не стал бы (я это к тому, что может это не ошибки, а отличие стандартов, поддерживаемых компиляторами):
1.jpg 2) Попробуй узнать уское место в программе... Т.е. запусти её, а потом в любое время (но не сразу) приостанови (останови методами отладки): 2.jpg Но только не один раз, а нужна статистика остановов (и в разное время от запуска программы). А ты в чём программируешь? В какой среде? |
09.11.2016, 15:39 | #7 |
Пользователь
Регистрация: 18.10.2016
Сообщений: 27
|
1) ошибок не выдает. Да, там одиночное равно.
pelles c |
09.11.2016, 15:49 | #8 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
По идеи, расстояние между матрицами А и В можно выразить через их расстояние до "нулевой матрицы", а это расстояние можно найти при создание матриц (и хранить "рядом" с матрицей).... расстояние сведётся к sqrt(dA * dA + dB * dB), что намного быстрее "поэлементного" вычитания матриц....... т. к D нужно только тут, то хранить можно только его квадрат, что ещё немного ускорит процесс
Увы, остальное я не совсем понял, поэтому пока только это Последний раз редактировалось GreenWizard; 09.11.2016 в 15:51. |
09.11.2016, 15:52 | #9 |
Пользователь
Регистрация: 18.10.2016
Сообщений: 27
|
спасибо, рассмотрю и этот вариант.
|
09.11.2016, 15:57 | #10 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
1) Я посмотрел, вроде твой pelles c отладку не поддерживает (ну разве что, для запуска программы, можешь попробовать "F5" . Появится ли кнопка приостановить программу?)
2) Подсчитай сколько памяти займёт программа в самый нагруженный момент (типы данных у тебя есть. количество элементов в массивах - тоже, количество массивов - тоже). Сравни со своей оперативкой. 3) Запусти программу и Мониторинг ресурсов одновременно (я не знаю твою операционку, но обычно Ctrl+Alt+Dell). Может у тебя не хватает памяти для размещение всех этих массивом? |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
посчитать количество нулевых элементов двух матриц с помощью функции. Паскаль | gravitono | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 18.04.2016 17:22 |
Перевод мощности в плотность мощности | ImmortalAlexSan | Свободное общение | 9 | 20.02.2014 22:45 |
Нуждаюсь, язык С, С числовой множества A мощности n выбрать все подмножества, сумма элементов каждого из которых лежит в пределах | FYNZIK | Помощь студентам | 0 | 16.02.2014 21:00 |
С++ Вычисление матриц | VladJAy | Помощь студентам | 2 | 10.12.2012 00:04 |
Вычисление матриц (delphi) | artimed | Помощь студентам | 0 | 16.05.2012 13:21 |