LINUX.ORG.RU

Поиск переменных, при которых будут минимально каждое уравнение

 , ,


0

3

Есть система из трех уравнений, в каждом есть sin, cos, ctg от четырех углов beta, gamma, phi, psi = beta - (90 - phi/2).

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

K = (sin(beta - gamma + phi/2) / (2 sin(beta - gamma) / sin(gamma) -0.35 * ctg(phi/2) - ...) * sin(gamma))

Т.е. аналитически эти уравнения решать будет очень сложно.

А вот как подступиться к численному решению я пока не понимаю.

Делаю планирую пока что на Octave.

★★

Последнее исправление: the_real_kinik (всего исправлений: 1)

Я вижу это как перебор каждого угла в заданном диапазоне и выбором затем лучшей комбинации. Но это какой-то Excel-style.

the_real_kinik ★★
() автор топика

Т.е. аналитически эти уравнения решать будет очень сложно

Что? Составляешь систему уравнений из частных производнях и решаешь.

gremlin_the_red ★★★★★
()

Такие штуки давным-давно научились оптимизировать и визуализировать. Итеративным способом можно постепенно приблизиться к области с наименьшими невязками. Гугли всякие там градиентные спуски и т.п. Но фактически ты просто заменишь аналитически найденные производные на конечные разности. Может, стоит все-таки вычислить частные производные аналитически, а затем уже какой-нибудь решатель на них натравить?

Гугли levenberg-marquardt, есть библиотеки с его реализацией для многомерных задач.

Eddy_Em ☆☆☆☆☆
()

@gremlin_the_red, @Eddy_Em, я не уверен, что смогу правильно найти производные сам. С математикой туговато.

Итеративным способом можно постепенно приблизиться к области с наименьшими невязками. Гугли всякие там градиентные спуски и т.п. Но фактически ты просто заменишь аналитически найденные производные на конечные разности

Гугли levenberg-marquardt, есть библиотеки с его реализацией для многомерных задач

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

the_real_kinik ★★
() автор топика

А попытки решения какие?

Это поиск глобального (по видимому условного) экстремума функции нескольких переменных — задача, в общем-то, разжеванная как аналитически, так и не.

Octagon
()

А вот как подступиться к численному решению я пока не понимаю.

Вариационное исчисление ©: решает задачи по нахождению функции в заданном классе, которые доставляют экстремальное значение заданному функционалу.

quickquest ★★★★★
()
Ответ на: комментарий от Octagon

Так не функцию же ищут.

Ну, ежели уравнения уже жёстко заданы, тогда можно, например, «ударить по ним автопробегом» cтохастическим градиентным спуском ©.

quickquest ★★★★★
()

минимизировать значения этих уравнений

что означает эта фраза?

targitaj ★★★★★
()
Ответ на: комментарий от tyakos

Кстати, не забудь проверить, что твоя функция ограничена на твоих интервалах.

tyakos ★★★
()
Ответ на: комментарий от Octagon

А попытки решения какие?

Забил в Excel функции и протабулировал с большим шагом, потом сразу пошёл на ЛОР, потому что даже ключевых слов для поиска не знал.

Это поиск глобального (по видимому условного) экстремума функции нескольких переменных — задача, в общем-то, разжеванная как аналитически, так и не.

Да, так и есть! Нагуглил метод Лагранжа. Думаю, можно взять одну из трёх функций в качестве оптимизируемой, а две других – в качестве уравнений связи.

С производными можно разобраться с помощью символьных вычислений в Octave. А затем решить полученную систему с помощью fsolve.

the_real_kinik ★★
() автор топика
Ответ на: комментарий от the_real_kinik

С градиентными спусками и алгоритмом Левенберга — Марквардта надо разбираться глубже. Слишком много неизвестных терминов и определений.

the_real_kinik ★★
() автор топика

А вот как подступиться к численному решению я пока не понимаю.

Запили генетический алгоритм. Скорее всего он тут нахрен не нужен, но будет прикольно.

crutch_master ★★★★★
()

Чисто посмотреть что там происходит можно и в wolfram alpha (онлайн который). Но вообще аналитически решить то что ты написал можно, хотя, возможно и трудно.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.