6 / 4 / 1
Регистрация: 20.06.2013
Сообщений: 24
|
|||||||||||
1 | |||||||||||
Как уменьшить время счета08.10.2015, 14:02. Показов 1084. Ответов 5
Метки нет (Все метки)
Ребят, есть программа, проблема в том, что создавая в цикле анонимную функцию, время счета программы очень велико.
71 строчка -Создание анонимной функции F1=@ (x) 1./sqrt(1-k^2.*(1-sin(x).^2)), k вычисляется в цикле. 72 строчка - Вычисление интеграла K=quad(F1,0,pi/2); Для проверки счета количество N вводить 10, больше не надо. Считал интеграл и методом Симпсона, но время счета было ещё больше. Помогите разобраться с этим циклом, чтобы время счета было гораздо меньше. Спасибо заранее за помощь
Поправка 71 строчки
0
|
08.10.2015, 14:02 | |
Ответы с готовыми решениями:
5
Как уменьшить время Как сделать счетчик(таймер) для счета время между нажатием двух кнопок Как уменьшить время компиляции проекта? Как уменьшить время загрузки системы? |
08.10.2015, 21:19 | 2 | |||||
А как насчет численного интегрирования? оно всяко быстрее будет
1
|
6 / 4 / 1
Регистрация: 20.06.2013
Сообщений: 24
|
|
08.10.2015, 22:32 [ТС] | 3 |
Спасибо, сам допер до этого, только вопрос, достаточно точный расчет то получится методом трапеций?? Или лучше сделать метод Симпсона, просто реализовывая метод Симпсона, фигурирует опять анонимная функция, что не очень приятно по времени счета.
0
|
09.10.2015, 11:48 | 4 | |||||||||||||||
Golem_ru, не, для 9млн. элементов (при N=10) метод Симпсона мягко говоря не очень хорошая идея
Ясное дело, что для таких больших массивов любой метод будет считать долго, но можно попробовать цикл немного векторизовать (полностью не выйдет, т.к. памяти не хватит) Но чтобы размеры векторов x и a,k были равны нужно использовать meshgrid, т.е. из двух векторов разной длинны сделать матрицы одинакового размера:
При желании можно прикрутить сюда waitbar
*точность метода трапеций можно оценить с помощью правила Рунге, т.е. посчитать интеграл для одной конкретной пары значений a, k с разными шагами переменной х:
0
|
533 / 438 / 47
Регистрация: 17.07.2013
Сообщений: 2,236
|
|
11.10.2015, 22:34 | 5 |
1. Поставить опер. памяти по максимуму.
2. Пробовать parfor: http://www.mathworks.com/help/... arfor.html 3. Пробовать spmd: http://www.mathworks.com/help/distcomp/spmd.html 4. Пробовать GPU: http://www.mathworks.com/help/... array.html Добавлено через 36 минут http://matlab.exponenta.ru/for... 19631.html
1
|
6 / 4 / 1
Регистрация: 20.06.2013
Сообщений: 24
|
|
12.10.2015, 12:49 [ТС] | 6 |
Про waitbar не знал, удобная штука))) Да, ребят такой вопрос, как выделить всю оперативную память матлаб? Много где читал что по умолчанию 512 мб стоит, а когда идут тяжелые вычисления он мол всю задействует, но смотря как он считает, я так думаю что 512 и стоит.
0
|
12.10.2015, 12:49 | |
12.10.2015, 12:49 | |
Помогаю со студенческими работами здесь
6
Как уменьшить время загрузки таблицы ? Как уменьшить время выполнения программы? Как уменьшить время работы программы? Как уменьшить время работы программы? Как уменьшить время работы макроса? Как уменьшить время отклика на клаве Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |