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
3131
Уфа
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, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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