Решение уравнения f(x)=v, где x, v - векторы
От: Eugene Sh Россия  
Дата: 22.06.05 14:39
Оценка:
Возникла такая задача.
Есть функция, зависящая от нескольких параметров. Значение этой функции — вектор (то есть несколько чисел).
f: R^m -> R^n

Задача состоит в том, чтобы решить уравнение f(x) = v, где v — заданный вектор из пространства R^n, x — вектор из пространства R^m. То есть найти координаты вектора x. Характер функции f позволяет с уверенностью утверждать, что такое решение есть.

Вот какой метод я вижу.
Обозначим f(x) = u. И рассмотрим новую функцию "отклонение f(x) от v", значение которой уже просто число.
r: R^m -> R
r = |f(x) - v| = |u - v| = (u1 - v1)^2 + (u2 - v2)^2 + ... + (un - vn)^2

Таким образом, возникает новая задача — найти решение уравнения r(x) = 0 (или найти точку минимума r(x), что, в данном случае, одно и то же).

И возникает вопрос — как решать уравнение r(x) = 0? Или находить точку минимума функции r(x)? При этом очень важно минимизировать количество вызовов функции r(x), т.к. функция f(x) вычисляется очень долго.
1) Если решать уравнение r(x) = 0, то хотелось бы, чтобы алгоритм использовал дополнительную информацию о r(x) — то, что r(x) >= 0 всегда.
2) Если находить точку минимума функции r(x), то хотелось бы, чтобы алгоритм использовал ту информацию, что минимум нам уже известен — это 0.

Пока что я находил точку минимума r(x) методом powell (нашёл только такую ссылку). Но этот метод никак не использует информацию о том, что минимум функции равен 0. И из-за этого, делает большое количество вызовов функции, которых, в принципе можно избежать.

Дополнительная информация.
Значение градиента f(x) аналитически задать невозможно. Можно только примерно вычислять — функция f(x) довольно гладкая.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.