2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Линии уровня функции от 2 переменных
Сообщение15.04.2012, 15:07 


01/07/08
836
Киев
Hasar1n в сообщении #560249 писал(а):
Как понял, триангуляция Делоне для непрерывных функций строится из прямоугольной сетки. А большие ли ошибки будут, если применять для прерывистых функций регулярную сетку?

Никак нет. Триангуляция Делоне непрерывно восполняет нерегулярные сетки. Для регулярных тоже можно применять. Остается непонятным вопрос выбора в прямоугольнике одной из двух диагоналей, так называемый флип. Поверхность построенная по любой триангуляции имеет разрывный градиент, и приходится применять методы сглаживания. Для случая нерегулярных сеток считается(без доказательства а только опираясь на авторитет Вороного и Делоне), что если правильно использовать круги Вороного, получается поверхность минимальной энергии. По моему прямоугольные сетки являются контрпримером для этого оптимизма. Кстати, восполнение получается непрерывным, а область определения функции описывающей построенную поверхность односвязная. То что вы называете прерывистыми функциями, требует много дополнительных слов для определения. Ключевыми являются разрывные, многозначные. Такие тяжелые задачи у геологов требуется решать постоянно. Я совсем не пытаюсь вас испугать,

(Оффтоп)

а в остальном все хорошо и все дело в "технике"
:-) . Попробуйте почитать: Эксперимент на дисплее. Москва "Наука" 1989. глава Как увидеть невидимое? М.Э Агиштейн, А.А.Мигдал. Чтение не требует матанализа. С уважением,

 Профиль  
                  
 
 Re: Линии уровня функции от 2 переменных
Сообщение15.04.2012, 15:14 
Заслуженный участник
Аватара пользователя


01/08/06
3136
Уфа
Hasar1n писал(а):
Как понял, триангуляция Делоне для непрерывных функций строится из прямоугольной сетки.
Нет, её можно построить из любой сетки. Просто из прямоугольной (или из регулярной) она легче получается. Из нерегулярной — придётся повозиться, но никаких принципиальных проблем нет.

Hasar1n писал(а):
А большие ли ошибки будут, если применять для прерывистых функций регулярную сетку?
Для начала (перед интерполяцей) крайне желательно ограничить себя в том, какие могут у Вас быть "прерывистые функции". Хорошо бы, например, заранее знать, где они терпят разрыв. Тогда можно на этом множестве построить пары совпадающих узлов с обеих сторон непрерывности и свести дело к нескольким непрерывным функциям. Можно также извлечь пользу из знания того, что функция удовлетворяет условию Липшица с оценкой константы Липшица сверху. Если, конечно, такое знание есть.

А то, знаете ли, можно на такие функции нарваться... Скажем, случайно так получится, что как раз в тех точках, где вы ставите узлы, функция равна нулю, а во всех остальных — единице. И вот мы как честные люди интерполируем функцию везде нулём, а она [далее неразборчиво].

 Профиль  
                  
 
 Re: Линии уровня функции от 2 переменных
Сообщение17.04.2012, 20:38 


11/04/12
21
Такккк...
hurtsy
Цитата:
Попробуйте почитать: Эксперимент на дисплее. Москва "Наука" 1989. глава Как увидеть невидимое? М.Э Агиштейн, А.А.Мигдал. Чтение не требует матанализа.

Книга оказалась раритетной, даже в библиотеке нет. Поискал саму статью, нашёл лишь более-менее понятную статью http://www.galiulin.narod.ru/delone-sys/text.htm. Про систему Делоне рассказывается в начале, потом переходят в дебри науки, которые не по зубам. Есть ли у вас электронный вариант книги?
worm2
Цитата:
Можно также извлечь пользу из знания того, что функция удовлетворяет условию Липшица с оценкой константы Липшица сверху.

(Оффтоп)

По кривой дорожке я пошёл в школе,и с 8 по 11 класс забыл о учебе напрочь. Жизнь меня тыркнула, сознание вернулось. Поняв, что надо учиться, поступил в университет, и кое-как пытался ПОНЯТЬ математику, но получалось лишь заучивать. А то, что заучивал, уходило прочь из головы, т.к. не понимал того, что учил. Преподаватель объяснял, не разжёвывая, сам садился за книжки. Лимиты, интегралы, дифференцирование, признаки сходимости, разрывы 1-го порядка, разрывы 2-го порядка, ряды, разложение в ряд Таилора. А теорем по всему этому столько было, что страшно вспоминать.

Нет такого знания. Есть ли в просторах интернета объяснение на пальцах?

 Профиль  
                  
 
 Re: Линии уровня функции от 2 переменных
Сообщение18.04.2012, 02:05 


01/07/08
836
Киев
Hasar1n в сообщении #561242 писал(а):
Есть ли у вас электронный вариант книги?

У меня только бумажное. Тираж там 53000.
Погуглил я запрос "лабораторная триангуляция делоне", может оттуда подберете себе что-нибудь. С уважением,

 Профиль  
                  
 
 Re: Линии уровня функции от 2 переменных
Сообщение18.04.2012, 08:46 


11/04/12
21
hurtsy, Maslov и worm2 спасибо вам большое. Буду разбираться .

 Профиль  
                  
 
 Re: Линии уровня функции от 2 переменных
Сообщение22.08.2012, 14:03 


22/08/12
2
Здравствуйте, кажется у меня похожая проблема.

На форме необходимо показать распределение величины. Пикселами получается нормально - но медленно. А вот сканлайн - работает как-то странно. Я подозреваю что какое-то неправильное преобразование типа идет, и запись в массив изображения делается с неправильным сдвигом, но я не понимаю почему.

Результаты работы функций:
Пикселы:
Изображение
Сканлайн:
Изображение

Сканлайн:
Код:
void __fastcall TForm1::Button135Click(TObject *Sender)
{
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
TColor *ptr;
double D,l1,l2;
try
  {
    pBitmap->Assign( Form1->Image1->Picture->Bitmap);
    double h = pBitmap->Height;
    double w =  pBitmap->Width ;
    for (int y1 = 0; y1 < 100; y1++)
    {
     for (int y = 0; y < pBitmap->Height; y++)
     {
      ptr = (TColor *)pBitmap->ScanLine[y];
      for (int x = 0; x < pBitmap->Width; x++)
      {
         l1 = sqrt(((w/2)-x)*((w/2)-x)+((h/2)-y)*((h/2)-y))  ;
         l2 = sqrt(((w/2)-x)*((w/2)-x)+(((h/2)-5)-y)*(((h/2)-5)-y))  ;
         l1!=0 ? D = ((l2)  -  ( l1)) / (l1) : D = 0;
         ptr[x] = RGB(D*100*y1,0,0);
      }
     }   
    Form1->Image1->Picture->Bitmap->Assign(pBitmap) ;
    Application->ProcessMessages();
    }
  }
  catch (...)
  {
    ShowMessage("Could not load or alter bitmap");
  }
}


Пикселы:
Код:
void __fastcall TForm1::Button135Click(TObject *Sender)
{
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
TColor *ptr; 
double D,l1,l2;
try
  {
    pBitmap->Assign( Form1->Image1->Picture->Bitmap);
     double h = pBitmap->Height;
    double w =  pBitmap->Width ;
    for (int y1 = 0; y1 < 100; y1++)
    {
     for (int y = 0; y < pBitmap->Height; y++)
     {   
      for (int x = 0; x < pBitmap->Width; x++)
      {
         l1 = sqrt(((w/2)-x)*((w/2)-x)+((h/2)-y)*((h/2)-y))  ;
         l2 = sqrt(((w/2)-x)*((w/2)-x)+(((h/2)-5)-y)*(((h/2)-5)-y))  ;
         l1!=0 ? D = ((l2)  -  ( l1)) / (l1) : D = 0;
          Form1->Image1->Picture->Bitmap->Canvas->Pixels[x][y] = RGB(D*100*y1,0,0);
      }
     }     
    Application->ProcessMessages();
    }
  }
  catch (...)
  {
    ShowMessage("Could not load or alter bitmap");
  }
}

 Профиль  
                  
 
 Re: Линии уровня функции от 2 переменных
Сообщение22.08.2012, 19:35 


22/08/12
2
Проблема решена.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Progger


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group