Попытка решить более 1000 различных уравнений как можно быстрее

У меня есть кусок кода, который использует символические переменные для решения различных уравнений. В настоящее время я использую цикл, скажем, 1: 1000+, так что в каждой точке он выбирает правильное уравнение (в зависимости от различных операторов if) и с правильными константами. Поскольку выбрано только одно уравнение, естественно, решить его будет очень легко. Однако, поскольку есть 1000 итераций, этот процесс займет до 30 минут (неудивительно, поскольку это цикл). Это было терпимо, пока мне не пришлось исследовать влияние количества итераций, что означает использование этого кода для разных длин (от 1 до 10 000)... что привело к ужасно медленному процессу.

Большинство петель можно векторизовать. Однако есть ли способ очень быстро решить несколько уравнений, хранящихся в массиве? Пожалуйста, имейте в виду, что это не одновременные уравнения! Одна переменная, которую необходимо определять каждый раз, не зависит от других уравнений.

Спасибо за помощь в продвижении!

D

Я решил это. -спасибо


person Community    schedule 12.11.2013    source источник
comment
Вы только что попросили всех векторизовать ваше решение, не показывая его?   -  person Dennis Jaheruddin    schedule 12.11.2013
comment
Я не хотел просто размещать свой код и ожидать, что кто-то решит его. Я надеялся на какую-то общую помощь. Тем более, что это довольно большой цикл, и я заново векторизовал многие части.   -  person    schedule 12.11.2013
comment
Вы должны представлять свои уравнения символически? Например, поиск корня многочлена с roots, вероятно, будет быстрее, чем решение символьного выражения. Или числовой решатель может быть быстрее для других типов уравнений.   -  person Peter    schedule 12.11.2013


Ответы (1)


Описание проблемы довольно расплывчато. Однако похоже, что проблема поразительно параллельна. Поэтому должно быть легко использовать несколько ядер для одновременной обработки нескольких уравнений, что ускоряет работу.

То, как вы это сделаете, зависит от вашей вычислительной среды (о которой вы вообще ничего нам не сказали).

person NPE    schedule 12.11.2013
comment
В идеале не нужно доходить до этого этапа. Я пытаюсь выяснить, можно ли использовать функцию решения для большого количества уравнений. - person ; 12.11.2013
comment
@ user2983967: Теперь, когда вы сказали нам, что используете MATLAB, будем надеяться, что кто-то выступит с конкретными предложениями. - person NPE; 12.11.2013
comment
извинения. Я просто смотрел на это весь день. - person ; 12.11.2013