double n_x,n_y,n_z; //компоненты нормального вектора N к плоскости P (ед. вектор)
double x_0,y_0,z_0; // координаты точки проецируемой на плоскость P
double s_x,s_y,s_z; // координаты точки вектора N (точка S)
double l; // расстояние от проецируемой точки до точки S
double Xp,Yp; // координаты на плоскости P
double Y_x,Y_y,Y_z; // направление оси Y на плоскости P (ед. вектор)
double vx,vy,vz,vl;
double cf_a=0.001;
// проецирование на плоскость
// точка с коорд. (x0,y0,z0) в точку на плоскости (Xp,Yp)
void 3Dto2D()
{l=fabs(n_x*(x_0-s_x)+n_y*(y_0-s_y)+n_z*(z_0-s_z));
vx=x_0-s_x-n_x*l;
vy=y_0-s_y-n_y*l;
vz=z_0-s_z-n_z*l;
vl=sqrt(vx*vx+vy*vy+vz*vz);
vx=vx/(cf_a*l);
vy=vy/(cf_a*l);
vz=vz/(cf_a*l);
Yp=vx*Y_x + vy*Y_y + vz*Y_z;
Xp=vx*(n_y*Y_z-n_z*Y_y)+vy*(n_z*Y_x-n_x*Y_z)+vz*(n_x*Y_y-n_y*Y_x);
};
Проецирование на плоскость — это просто обобщенное преобразование Фурье. Новые коэффициенты вычисляются как скалярные произведения исходного вектора на базисные ортонормированные векторы плоскости P
double x_0,y_0,z_0; // координаты точки, проецируемой на плоскость P
double X_x,X_y,X_z; // направление оси X на плоскости P (ед. вектор)
double Y_x,Y_y,Y_z; // направление оси Y на плоскости P (ед. вектор)
double Xp,Yp; // координаты на плоскости P
void 3Dto2D() {
Xp = x_0 * X_x + y_0 * X_y + z_0 * X_z;
Yp = x_0 * Y_x + y_0 * Y_y + z_0 * Y_z;
}
X>так это не эквивалентное преобразование! Yp здесь будет меньше на (n_x*l*Y_x+n_y*l*Y_y+n_z*l*Y_z)
Все правильно , здесь же скалярное произведение нормали плоскости на ее базисный вектор! Такое выражение должно быть равно нулю по-определению, поскольку нормаль ортогональна любому вектору плоскости.
Честно говоря, я не совсем понял, зачем у вас используется коэффициент cf_a = 0.001. Может быть, у вас пространства не совсем эвклидовские? Такое тоже возможно, но тогда нужно будет несколько подкорректировать формулы, хотя математическая сущность везде останется одинаковой.
Также хочу обратить внимание, что очень важно правильно вычислять базисные векторы X и Y для плоскости P. Если мы знаем базисный Y и нормаль N, то в вашем случае (3D -> 2D) вектор X будет равен с точностью до знака нормированному по длине векторному произведению Y и N: X = +/- [Y, N] / sqrt ([Y, N], [Y, N]).
Преобразование Фурье можно ввести не только для бесконечно-мерных гильбертовых пространств типа L2, но и для n-мерных эвклидовых пространств типа 3D/2D. То, что получается в результате преобразования исходной точки, иногда принято называть проекцией этой точки на то линейное многообразие, которое порождается соотвествующим базисом. Классический ряд Фурье из курса матана и простое визуальное проецирование из 3D на 2D — частные случаи более общего проецирования, при котором всегда находится ближайшая точка из соответсвующего многообразия.
Если есть интерес к этой теме, то могу посоветовать замечательную книгу A.H. Колмогорова и С.В. Фомина "Элементы теории функций и функционального анализа". Что касается самого названия проекция, то оно используется, например, в книге А.Н. Ширяева "Вероятность".
Здравствуйте, dsorokin, Вы писали:
D>Преобразование Фурье можно ввести не только для бесконечно-мерных гильбертовых пространств типа L2, но и для n-мерных эвклидовых пространств типа 3D/2D. То, что получается в результате преобразования исходной точки, иногда принято называть проекцией этой точки на то линейное многообразие, которое порождается соотвествующим базисом. Классический ряд Фурье из курса матана и простое визуальное проецирование из 3D на 2D — частные случаи более общего проецирования, при котором всегда находится ближайшая точка из соответсвующего многообразия.
Для меня нов такой взгляд на преобразование Фурье
Если честно признаться, я не очень понимаю какое отношение проекция имеет к к преобразованию Фурье/Интегралу Фурье...
Я рассматриваю преобразование Фурье как изоморфизм гильбертовых пространств: L_2(G) и L_2(группа характеров G).
Здесь G — локально компактная коммутативная группа.
D>Если есть интерес к этой теме, то могу посоветовать замечательную книгу A.H. Колмогорова и С.В. Фомина "Элементы теории функций и функционального анализа". Что касается самого названия проекция, то оно используется, например, в книге А.Н. Ширяева "Вероятность".
К>Для меня нов такой взгляд на преобразование Фурье
Это преобразование таит в себе много интересного
Когда-то я интересовался нейронными сетями. Так вот, если рассматривать нейронную сеть Хопфилда, то там просто бросаются в глаза прямые аналогии с преобразованием Фурье. Конечно, не все так строго, многие вещи не выполняются, но уж очень похоже... Считается, что сеть Хопфилда в некотором приближении является моделью того, как работает человеческая ассоциативная память.
К>Если честно признаться, я не очень понимаю какое отношение проекция имеет к к преобразованию Фурье/Интегралу Фурье...
Можно использовать слово проекция, потому что в результате всегда находится ближайшая точка к исходной в соответствующей метрике и из соответствующего пространства. Наверное, классическое преобразование Фурье — это не самый лучший пример, потому что здесь мы отображаем L2 на тоже самое пространство L2, конечно, если я ничего не забыл за последние несколько лет своей программисткой деятельности . Так вот, поэтому здесь самого проецирования как бы не видно. Зато, если отображаем большое пространство на меньшее под-пространство, то тогда сразу становится понятно, почему результат можно назвать проекцией. Преобразование 3D -> 2D — тому частный пример.
К>Я рассматриваю преобразование Фурье как изоморфизм гильбертовых пространств: L_2(G) и L_2(группа характеров G). К>Здесь G — локально компактная коммутативная группа.
Честно говоря, совсем не силен в этом. Видимо, это — что-то из алгебры?
Лично мне ближе следующее понимание преобразования Фурье. Берем некоторое, возможно бесконечное, множество векторов {e_1, e_2, ...}. Назовем их базисными. Пространство — линейное. Также обозначим через (x, y) — скалярное произведение x на у. Тогда рядом Фурье можно назвать следующую сумму
К такой форме приводится классический ряд Фурье (L2). Между прочим, тогда заметно упрощаются многие доказательства — там где раньше было несколько страниц, исписанных разными синусами и косинусами, появляется всего пара строчек для доказательства основных утверждений. Точно в таком же виде можно записать и наше проецирование из 3D на 2D. Более того, примерно также описывается работа нейронной сети Хопфилда (если не учитывать дискретности и некоторых других вещей), только в последнем случае, конечно, не может быть никакой речи об ортонормированности системы {e_1, e_2, ...} и выполнения прочих условий.
Так вот, если {e_1, e_2, ...} — ортонормированный базис, то точка Ф(x) — будет ближайшей к исходной точке x из того линейного мноообразия P (пространства), которое порождается линейными комбинациями {e_1, e_2, ...}. Поэтому Ф(x) можно назвать проекцией x на пространство P. В классическом же и частном случае ряда Фурье, имеем просто Ф(x) ~ x, что в общем случае может и не выполняться.
Здравствуйте, dsorokin, Вы писали:
X>>так это не эквивалентное преобразование! Yp здесь будет меньше на (n_x*l*Y_x+n_y*l*Y_y+n_z*l*Y_z)
D>Все правильно , здесь же скалярное произведение нормали плоскости на ее базисный вектор! Такое выражение должно быть равно нулю по-определению, поскольку нормаль ортогональна любому вектору плоскости.
D>Честно говоря, я не совсем понял, зачем у вас используется коэффициент cf_a = 0.001. Может быть, у вас пространства не совсем эвклидовские? Такое тоже возможно, но тогда нужно будет несколько подкорректировать формулы, хотя математическая сущность везде останется одинаковой.
D>Также хочу обратить внимание, что очень важно правильно вычислять базисные векторы X и Y для плоскости P. Если мы знаем базисный Y и нормаль N, то в вашем случае (3D -> 2D) вектор X будет равен с точностью до знака нормированному по длине векторному произведению Y и N: X = +/- [Y, N] / sqrt ([Y, N], [Y, N]).
спасибо,
теперь ясно... (n_x*Y_x+n_y*Y_y+n_z*Y_z) = 0 ,так как угол между ними pi/2
// проецирование на плоскость
// точка с коорд. (x0,y0,z0) в точку на плоскости (Xp,Yp)
void p3Dto2D()
{l=fabs(n_x*(x_0-s_x)+n_y*(y_0-s_y)+n_z*(z_0-s_z));
vx=x_0-s_x;
vy=y_0-s_y;
vz=z_0-s_z;
Yp=vx*Y_x + vy*Y_y + vz*Y_z;
Xp=vx*(n_y*Y_z-n_z*Y_y)+vy*(n_z*Y_x-n_x*Y_z)+vz*(n_x*Y_y-n_y*Y_x);
Xp/=cf_a*l;
Yp/=cf_a*l;
};
Здравствуйте, dsorokin, Вы писали:
К>>Я рассматриваю преобразование Фурье как изоморфизм гильбертовых пространств: L_2(G) и L_2(группа характеров G). К>>Здесь G — локально компактная коммутативная группа.
D>Честно говоря, совсем не силен в этом. Видимо, это — что-то из алгебры?
Добавим ещё функан, теорию представлений,...
И получим "абстрактный гармонический анализ"
Если рассматривать G=R, то её группа характеров =R. Имеем интегральное преобразование Фурье
Если рассматривать G=S^1 (окружность), то её группа характеров =Z. Имеем ряд Фурье
D>Так что, очень интересная штука — этот ряд Фурье.
X>теперь ясно... (n_x*Y_x+n_y*Y_y+n_z*Y_z) = 0 ,так как угол между ними pi/2
Ну да, это и есть ортогональность...
X>этот оптимизированный код работает быстрее!
Очень рад!
X>а можно его ещё улучшить?
Если вектор нормали N и вектор Y не меняются, т.е. плоскость всегда остается постоянной, то тогда можно использовать второй базисный вектор X вместо N — вычислений будет меньше. То есть, просто где-нибудь в самом начале положить
К>>>Я рассматриваю преобразование Фурье как изоморфизм гильбертовых пространств: L_2(G) и L_2(группа характеров G). К>>>Здесь G — локально компактная коммутативная группа.
К>Если рассматривать G=R, то её группа характеров =R. Имеем интегральное преобразование Фурье К>Если рассматривать G=S^1 (окружность), то её группа характеров =Z. Имеем ряд Фурье
Интересно, а сколько может быть таких изоморфизмов для каждого G? Или само понятие группы характеров G определяется из того предположения, что такой изоморфизм единственен с своем роде?
Здравствуйте, dsorokin, Вы писали:
К>>Если рассматривать G=R, то её группа характеров =R. Имеем интегральное преобразование Фурье К>>Если рассматривать G=S^1 (окружность), то её группа характеров =Z. Имеем ряд Фурье
D>Интересно, а сколько может быть таких изоморфизмов для каждого G? Или само понятие группы характеров G определяется из того предположения, что такой изоморфизм единственен с своем роде?
Преобразование Фурье это вполне конкретный изоморфизм...
Характеры --- это гомоморфизмы из G в S^1.
Для R^1 это отображения g_y=x->e^{ixy}, y\in R
Для S^1 это отображения g_n=x->e^{2*pi*i*n*x}, n\in Z
Преобразование Фурье определяется примерно так F(h)=интеграл_по_G ( f(x) сопряженное(h(x)) dx ), h-характер.
Для ряда Фурье получим
a_n=F(g_n)=интеграл_[0,1]( f(y)e^{-2*pi*i*n*y}dy )
Для интеграла Фурье
g(x)=F(f)(x)=интеграл_R( f(y)e^{-i*x*y}dy )
Собственно доказывается, что преобразование Фурье --- изоморфизм.
Она напоминает мне о теории функций комплексного переменного, но как давно я изучал ту теорию...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: А можно глупый вопрос?
От:
Аноним
Дата:
23.09.05 23:46
Оценка:
Здравствуйте, Константин, Вы писали:
К>>>Если рассматривать G=R, то её группа характеров =R. Имеем интегральное преобразование Фурье К>>>Если рассматривать G=S^1 (окружность), то её группа характеров =Z. Имеем ряд Фурье
К>Преобразование Фурье это вполне конкретный изоморфизм... К>Характеры --- это гомоморфизмы из G в S^1. К>Для R^1 это отображения g_y=x->e^{ixy}, y\in R К>Для S^1 это отображения g_n=x->e^{2*pi*i*n*x}, n\in Z
Все круто, только по-моему, для S^1 это просто отображения g[n](x) = x -> x^n
Хотя, в общем-то, понятно, что написано выше и что там имелось в виду