Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тесселяция 
:(
    Опции темы
tt0100
Дата 3.6.2012, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 1.12.2011

Репутация: нет
Всего: нет



Есть такая задача. Есть некоторая функция z=f(x,y) на какомто прямоугольнике. есть эпсилон. надо разбить этот прямоугольник на какието меньшие прямоугольники так чтобы ошибка аппроксимации этой функции плоскостями на этих прямоугольниках была не больше эпсилон причем количество этих меньших прямоугольников должно быть как можно меньше (т.е. сетка неравномерная)
Есть какая литература на эту тему? а то вообще не знаю с какой стороны подступиться.
Функция достаточно хорошая т.е. производные посчитать можно.
но как выбрать оптимальное или почти оптимальное разбиение- не представляю
PM MAIL   Вверх
nworm
Дата 3.6.2012, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



1. Задача разбивания области на многоугольники сама по себе сложная. Нерешённая в целом ряде случаев и приложений.
2. На прямоугольнике, если он получен, приближающая функцию плоскость строится методом наименьших квадратов.
Больше не знаю.
PM MAIL WWW   Вверх
tt0100
Дата 4.6.2012, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 1.12.2011

Репутация: нет
Всего: нет



черт. не думал что так сложно. думал такие задачи уже решены. видел видео повышения детализации в зависимости от степени близости объекта. просто подумал что она там именно как я написал. но видимо там просто разномасштабные равномерные сетки. но это не очень интересное решение)
PM MAIL   Вверх
W4FhLF
Дата 4.6.2012, 10:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 5
Всего: 121



Ничего сложного здесь нет, если правильно выбрать критерий оптимальности. Если у вас есть некоторый епсилон, к которому нужно стремиться, то криетрием оптимальности будет относительная разность невязки функции на сетке и непрерывной функции. Чтобы эту разность посчитать нужно задаться некоторой метрикой или нормой. В общем случае подходящая норма зависит от пространства в котором вы работаете с функцией (не зная функцию ничего сказать невозможно) и некоторых условий (дифференцируемость, гладкость, непрерывность, область определения, векторая функция или скалярная...). Я полагаю ваша функция гладкая и, как вы сказали, дифференцируема. Поэтому можно задаться обычной L2-norm (google it). 

Осталось только выработать критерий по которому сетку нужно измельчать (refining) или укрупнять (coarsening). Опять же критерий этот зависит от вашей функции. Если функция скалярная, то возьмите в качестве критерия её производную в точке по направлениям, другими словами градиент функции. Если градиент большой в некоторой точки, то соответственно функция меняется быстро и требуется более мелкая сетка, чтобы с большей точностью аппроксимировать функцию. 

На практике это будет итеративная процедура типа:
1.    Задаётесь начальной сеткой
2.    Считаете производные функции в центрах прямоугольников (или на гранях или на вершинах...)
3.    Считаете относительную невязку
4.    Если больше епсилон, выбираете некоторые процент прямоугольников (например 50%) в которых производная наибольшая и разбиваете каждый на 4ре более мелких прямоугольника. Переходите на шаг 2.


Это сообщение отредактировал(а) W4FhLF - 4.6.2012, 10:31


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
tt0100
Дата 4.6.2012, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 1.12.2011

Репутация: нет
Всего: нет



ну скорее тогда не градиент а вторые производные. тк плоскость это фактически константные производные.
да идею понял. это можно решать как задачу кластеризации снизу вверх.
хотя я скорее имел в виду задачу минимизации количества разбиений (количества плоскостей) при заданном эпсилон. а на прямоугольники просто думал проще разбивать.
а но спасибо! еще подумаю можно ли это оптимизировать. просто захотелось узнать как уменьшить хранимую информацию
PM MAIL   Вверх
W4FhLF
Дата 4.6.2012, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 5
Всего: 121



Вы бы всё-таки описали задачу, где возникла такая необходимость и что представляет из себя ваша функция? Можно было бы отправить вас в гугл с запросом "adaptive mesh refinement", но боюсь вы быстро заблудитесь. 

Прямоугольники не думаю, что проще на самом деле. Если в общем случае. Во всяком случае когда речь зайдёт о реализации, то треугольники тут в выигрыше, т.к. существуют универсальные библиотеки типа netgen и tetgen. 

Это сообщение отредактировал(а) W4FhLF - 4.6.2012, 13:39


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
tt0100
Дата 4.6.2012, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 1.12.2011

Репутация: нет
Всего: нет



откуда взял? - посмотрел на утубе видео по тесселяции на новых видюхах. видимо еще студенчество не полностью выветрилось. тянет на приключения) дибильные задачи на автомате в голову лезут) хочу мир перевернуть
а за "adaptive mesh refinement" - спасибо! отлично. почти то что я и хотел. почитаю и может добью в той формулировке что сам себе придумал)
PM MAIL   Вверх
W4FhLF
Дата 4.6.2012, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 5
Всего: 121



tt0100, если задача просто аппроксимировать какую-то функцию (заданную аналитически) с некоторой точностью, то вы не в том направлении пошли. Здесь уместнее подход реализованный, например, в пакете: http://www2.maths.ox.ac.uk/chebfun/


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
tt0100
Дата 5.6.2012, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 1.12.2011

Репутация: нет
Всего: нет



... чебышев? не. он одномерный вроде.
скорее это как еслибы я захотел одномерную аналитическую функцию аппроксимировать б-сплайном с наименьшим числом узлов. ну или просто набором прямых. собственно я про почти прямые - про плоскости думал)
+ не люблю полиномы больших степеней - они на практике для большого количества вычислений неудобны - скорость быстро падает. в лоб - если не использовать библиотеки повышенной точности - точность только для разовых вычислений норм. если 10-20 тыс - уже заметно.
если кос акос (для чебышева) - тоже медленно. хотя может и не так как с в лоб


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0934 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.