Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск решения в многомерном пространстве [D6, Win2k]


wild_arg ©   (2004-06-22 10:17:00) 

Есть 5-ти мерная матрица. По заданным пяти координатам находится значение соответствующей ячейки матрицы. По каждой координате дискретность разбиения различна.
A[18,30,0.5,10,3] = v1
A[18,30,0.5,10,5] = v2
....
Для первой координаты возможные значения: 18, 20, 22 .
Для второй    : 30, 50, 100, 120, 150 .
Для третьей   : 0.5, 1, 1.5, 2, 2.5 .
Для четвертой : 10, 20 .
Для пятой     : 3, 5, 10, 15, 20, 25, 30 .

И вот, типа, забита вся эта матрица (размерностью 3 х 5 х 5 х 2 х 7) значениями v1, v2, ..., vN

Задача такая: Необходимо найти Vx, при любых значениях пяти координат. Например A[19, 99, 1.1, 13, 18] - ?

Поможите, кто чем может.


wild_arg   (2004-06-22 12:25:00) [1]

MBo - человеческое спасибо.


wild_arg   (2004-06-22 12:21:00) [2]

надо найти не ближайшее существующее, а приближенное - соответствующее законам распределения в заданной матрице


MBo   (2004-06-22 12:16:00) [3]

пенталинейная интерполяция (32 слагаемых):
1. Находим ячейку, в которую попадает точка - ее индексы i1,i2,i3,i4,i5
2. Находим параметрические координаты точки в ячейке:
t1=(x1-x1[i1])/(x1[i1+1]=x1[i1]) и т.д., где x1 - координата по 1-му измерению
3. Вычисляем Value(t1,t2,t3,t4,t5)=A[i1,i2,i3,i4,i5]*(1-t1)*(1-t2)*(1-t3)*(1-t4)*(1-t5)+A[i1+1,i2,i3,i4,i5]*t1*(1-t2)*(1-t3)*(1-t4)*( 1-t5)+...+A[i1+1,i2+1,i3+1,i4+1,i5
+1]*t1*t2*t3*t4*t5

наглядный пример для 2-х измерений:

A00         A01

   P(u,v)

A10          A11

U---------->

V
|
|
|
v

Value(p)=A[0,0]*(1-u)(1-v)+A[0,1]*u*(1-v)+A[1,0]*(1-u)*v+A[1,1]*u*v


Igorek   (2004-06-22 11:54:00) [4]

Упс. Глупость написал. Но идея вроде правильная.


Igorek   (2004-06-22 11:34:00) [5]

Если я правильно понял задачу - есть матрица, в которую можно забить (3 х 5 х 5 х 2 х 7)=1050 5-мерных векторов (или точек). Надо по даной точке найти к ней ближайшую. Если так, то:
1) надо отсортировать матрицу по всем измерениям (или добавить индекс)
2) по даной точке найти ближайших соседей сверху и снизу по каждому измерению
3) из этих точек найти ближайшую (по какой угодно метрике)


Romkin   (2004-06-22 11:18:00) [6]

YurikGL ©  (22.06.04 11:01) [11] Это тоже неявная аппроксимация :))
YurikGL ©  (22.06.04 10:50) [9] А лучше сразу литанию какую-нить прочитать, если ошибка большая :))))


Romkin   (2004-06-22 11:18:00) [7]

YurikGL ©  (22.06.04 11:01) [11] Это тоже неявная аппроксимация :))
YurikGL ©  (22.06.04 10:50) [9] А лучше сразу литанию какую-нить прочитать, если ошибка большая :))))


YurikGL   (2004-06-22 11:01:00) [8]


> Для интерполяции и тем более аппроксимации должен быть задан
> вид функции.

Не факт, есть, например, метод скользящего среднего...


begin...end   (2004-06-22 10:53:00) [9]


> [9] YurikGL ©   (22.06.04 10:50)

Ну это был просто ответ на [7]


YurikGL   (2004-06-22 10:50:00) [10]


> begin...end ©   (22.06.04 10:48) [8]

Нее.. Здесь нужно с помощью МНК линию притянуть. Для начала попробовать прямую, если средняя квадратичная ошибка будет велика, то sin пользовать.
А потом с помощью построенной функции хоть аппроксимацию, хоть интерполяцию, хоть что можно сделать.


begin...end   (2004-06-22 10:48:00) [11]

Y = Y1 + (X - X1) * (Y2 - Y1) / (X2 - X1)


wild_arg   (2004-06-22 10:40:00) [12]

2RomkinТочно, точно - не напомнишь мне случайно как там чё?


Думкин   (2004-06-22 10:38:00) [13]

http://www.mstu.edu.ru/publish/conf/11ntk/section5/section5_2.html


Romkin   (2004-06-22 10:38:00) [14]

Это не задача. Для интерполяции и тем более аппроксимации должен быть задан вид функции. В первом приближении можно делать линейную интерполяцию ближайших узлов :)


wild_arg   (2004-06-22 10:29:00) [15]

Апроксимацию мне надо. А вот как по задаче смотреть я чего-то вообще понять не могу. Задачу я вроде описал.
Дайте совет какой-нить. Голова уже пухнет


Romkin   (2004-06-22 10:25:00) [16]

Формулу чего? Тебе ближайшую ячейку найти надо или интерполяцию сделать?
Если интерполяцию, то по задаче смотреть надо :)


wild_arg   (2004-06-22 10:23:00) [17]

Напиши формулу


Думкин   (2004-06-22 10:19:00) [18]

А в чем проблема?


Наверх

Титульная страница Поиск, карта сайта Написать письмо