Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Быстрые вычисления

1.5K
28 марта 2003 года
shtutsa
50 / / 27.03.2003
Как ускорить вычисления в Excel?
Мне необходимо много раз вычислять значение одной и той же функции. Функция задается как функция ячейки от значений соседних ячеек той же строки.
Вариант 1. Все возможные комбинации параметров функции занести в таблицу по строкам, а саму функцию скопировать по столбцу.
Вариант 2. Возможные комбинации параметров занести в двумерный массив, извлекать из него по одной строку, копировать ее на место ячеек содержащих параметры, из ячейки с функцией извлекать результат и заносить его в массив. Перейти к след. строке массива и т.д.
Вопрос - какой из двух вариантов более выигрышный в скорости?
В догонку - как отключить обновление значений ячеек на листе (чтобы изменения не отображались)?
И еще - будет ли изменятся при этом диаграмма, исходнные данные которой такие ячейки (их значение меняется, но на листе это не отображается)?
Спасибо.
267
28 марта 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by shtutsa
Как ускорить вычисления в Excel?
Мне необходимо много раз вычислять значение одной и той же функции. Функция задается как функция ячейки от значений соседних ячеек той же строки.
Вариант 1. Все возможные комбинации параметров функции занести в таблицу по строкам, а саму функцию скопировать по столбцу.
Вариант 2. Возможные комбинации параметров занести в двумерный массив, извлекать из него по одной строку, копировать ее на место ячеек содержащих параметры, из ячейки с функцией извлекать результат и заносить его в массив. Перейти к след. строке массива и т.д.
Вопрос - какой из двух вариантов более выигрышный в скорости?
В догонку - как отключить обновление значений ячеек на листе (чтобы изменения не отображались)?
И еще - будет ли изменятся при этом диаграмма, исходнные данные которой такие ячейки (их значение меняется, но на листе это не отображается)?
Спасибо.




Если честно, то ни фига не понятно.
Каждая формула считается по-разному.
Зазипуй свой файл и закинь сюда, я погляжу и, возможно, смогу дать тебе какие-нибудь рекомендации (абстрактно трудно что-то посоветовать).

А автоматический пересчет включается/выключается так:
В меню Сервис/Параметры..., закладка "Вычисления"
(Tools/Options..., "Calculations").

1.5K
28 марта 2003 года
shtutsa
50 / / 27.03.2003
Цитата:
Originally posted by Cutty Sark



Если честно, то ни фига не понятно.
Каждая формула считается по-разному.
Зазипуй свой файл и закинь сюда, я погляжу и, возможно, смогу дать тебе какие-нибудь рекомендации (абстрактно трудно что-то посоветовать).

А автоматический пересчет включается/выключается так:
В меню Сервис/Параметры..., закладка "Вычисления"
(Tools/Options..., "Calculations").



Разархивируй, запусти сначала макрос Refresh2, потом GA
(здесь значение вычисляется на листе популяция в ячейках С2:C97) а параметры в ячейках А2:B97. Вот я и думаю, может параметры загнать в массив двумерный (1 to 97, 1 to 3), по одной из него извлекать строку, подставлять в А2 (i,1) и B2 (i,2) а из C2 копировать значение назад в массив (i,3). Потом дальше с ним работать.
P.S. Прога реализует простейший генетический алгоритм - оптимизация двухпараметрической функции.

267
28 марта 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by shtutsa


Разархивируй, запусти сначала макрос Refresh2, потом GA
(здесь значение вычисляется на листе популяция в ячейках С2:C97) а параметры в ячейках А2:B97. Вот я и думаю, может параметры загнать в массив двумерный (1 to 97, 1 to 3), по одной из него извлекать строку, подставлять в А2 (i,1) и B2 (i,2) а из C2 копировать значение назад в массив (i,3). Потом дальше с ним работать.
P.S. Прога реализует простейший генетический алгоритм - оптимизация двухпараметрической функции.



Запустил. И тот, и другой работают очень быстро (1400МГц, Эксель 97 (а не какой-нибудь тормозной 2000)).

Проглядел вскользь твой файл. Каких-то смертельных формул не нашел. Давай копаться дальше.
Такой возник вопрос: ты сознательно не используешь .ScreenUpdating ?

1.5K
28 марта 2003 года
shtutsa
50 / / 27.03.2003
Цитата:
Originally posted by Cutty Sark


Запустил. И тот, и другой работают очень быстро (1400МГц, Эксель 97 (а не какой-нибудь тормозной 2000)).

Проглядел вскользь твой файл. Каких-то смертельных формул не нашел. Давай копаться дальше.
Такой возник вопрос: ты сознательно не используешь .ScreenUpdating ?



Для функции двух переменных все более-менее приемлимо. Вообще-то эти алгоритмы применяются для обучения нейронных сетей (см. вложение). А параметров там может быть несколько десятков (до 50). Во вложении пример расчета небольшой нейросети (три перцептрона). Вот тогда тормоза и начинаются.
По поводу .ScreenUpdating - предложение хорошее, вот только мне необходимо, чтобы обновлялись связанные диаграммы. Может это можно сделать отдельным оператором?
Вообще есть коммерческие продукты - Evolver, GeneHunter от Ward Systems Group. Они тоже выполнены как надстройки над Excel. Там все летает (правда там используются подключаемые библиотеки фукнций, но не может же быть такой значительной разницы)
Спасибо за помощь. Ты из Москвы?

267
31 марта 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by shtutsa


Для функции двух переменных все более-менее приемлимо. Вообще-то эти алгоритмы применяются для обучения нейронных сетей (см. вложение). А параметров там может быть несколько десятков (до 50). Во вложении пример расчета небольшой нейросети (три перцептрона). Вот тогда тормоза и начинаются.
По поводу .ScreenUpdating - предложение хорошее, вот только мне необходимо, чтобы обновлялись связанные диаграммы. Может это можно сделать отдельным оператором?
Вообще есть коммерческие продукты - Evolver, GeneHunter от Ward Systems Group. Они тоже выполнены как надстройки над Excel. Там все летает (правда там используются подключаемые библиотеки фукнций, но не может же быть такой значительной разницы)
Спасибо за помощь. Ты из Москвы?



"обновлялись связанные диаграммы" - ты имеешь в виду, чтобы "мультик" видно было - как они меняются в процессе работы макроса? После окончания работы они, конечно, в любом случае перерисуются.

Из Москвы.

Вложение гляну чуток попозже, когда время будет.

267
31 марта 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by Cutty Sark


"обновлялись связанные диаграммы" - ты имеешь в виду, чтобы "мультик" видно было - как они меняются в процессе работы макроса? После окончания работы они, конечно, в любом случае перерисуются.

Из Москвы.

Вложение гляну чуток попозже, когда время будет.



Глянул. Все три макроса работают в улет. Все же делай ScreenUpdating иногда - когда диаграммка меняется плавно - это все-таки мультик, а когда куча цифр мелькает - выглядит неважно. :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог