2014 dxdy logo

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

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



Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5
 
 Re: Сжатые шары
Сообщение19.08.2014, 06:34 


01/12/11
931

(Оффтоп)

Ньютон одним яблоком обошёлся.


-- 19.08.2014, 06:44 --

Ячейки Вороного строятся по расстояниям между точками, а в задаче надо удовлетворить минимум периметра ячейки.

 Профиль  
                  
 
 Re: Сжатые шары
Сообщение19.08.2014, 09:28 
Заслуженный участник
Аватара пользователя


18/05/06
13085
с Территории
Минимум периметра - это если считать, что задача про пену. Если она про пластилиновые шары (правда, здесь непонятки с формализацией) - тогда не так.

 Профиль  
                  
 
 Re: Сжатые шары
Сообщение19.08.2014, 09:48 
Заслуженный участник


14/01/11
1022
По-моему, из объяснений ТС следует, что это задача про резиновые шарики, наполненные водой и прижатые прессом.

 Профиль  
                  
 
 Re: Сжатые шары
Сообщение19.08.2014, 11:25 
Заслуженный участник


07/07/09
4632
А какой толщины резина? Если это воздушные шарики , то их упругость почти не влияет.

 Профиль  
                  
 
 Re: Сжатые шары
Сообщение19.08.2014, 11:42 


17/12/13
96
Думаю, самое лучшее представление задачи для двумерного случая дает следующая картина. Берем один слой одинаковых капель жидкости и помещаем их между двумя жесткими параллельными неподвижными плоскостями, затем сжимаем это множество равномерно по периметру. Каждая капля становится правильной шестиугольной призмой (скругления углов не учитываем). В середине множества несколько капель сливается вместе, становясь многоугольной призмой. Рассекаем всю эту конструкцию посередине плоскостью и получаем двумерную картину. Площади сохраняются, периметры стремятся к минимуму, но при условии, что пустот между каплями нет.

Аналогия капель жидкости с резиновыми шариками, наполненными водой, не совсем точна.
"Пленка" поверхностного натяжения отличается от резиновой оболочки тем, что ее напряжение постоянно и не зависит от изменения площади поверхности.

 Профиль  
                  
 
 Re: Сжатые шары
Сообщение19.08.2014, 14:21 


01/12/11
931
С каплями возможен только мысленный эксперимент - при соприкосновении они будут сливаться. Если резиновые кольца для кого-то старомодны, то их можно осовременить, заменив их на силиконовые кольца или шарики.

 Профиль  
                  
 
 Re: Сжатые шары
Сообщение19.08.2014, 14:37 
Заслуженный участник
Аватара пользователя


15/10/08
7392
А в таком "шестиугольном" виде пожалуй что и можно попытаться порешать. Для дополнительной простоты оставим рёбра прямыми, лопнем парочку из них и будем варьировать вершинами, имея в виду минимизировать периметр. Думаю папа-карло какой-нибудь вполне подойдёт.

 Профиль  
                  
 
 Re: Сжатые шары
Сообщение19.08.2014, 14:54 
Заслуженный участник


14/01/11
1022
Попробовал воспользоваться Surface evolver-ом для моделирования пены с фиксированными площадями ячеек в плоском случае. Вот что получается:


Вложения:
Комментарий к файлу: Исходная картина.
1.png
1.png [ 4.29 Кб | Просмотров: 620 ]
Комментарий к файлу: Площадь центральной ячейки увеличена вдвое.
2.png
2.png [ 4.64 Кб | Просмотров: 620 ]
Комментарий к файлу: Площадь центральной ячейки увеличена в 5 раз.
3.png
3.png [ 5.39 Кб | Просмотров: 620 ]
 Профиль  
                  
 
 Re: Сжатые шары
Сообщение19.08.2014, 16:07 
Аватара пользователя


11/06/12
6508
Минск
Вы просто увеличиваете площадь центральной ячейки, оставляя её форму правильного шестиугольника. А нужно удалить стенку между двумя ячейками. Образуется одна восьмиугольная, площадь которой равна удвоенной площади исходной шестиугольной. Ну и дальше смотрим, как деформируются остальные. Surface Evolver такое может?
(Скачал его, сейчас установлю и попробую что-нибудь наваять).

-- 19.08.2014, 16:16 --

Sender, не могли бы вы выложить исходник?

 Профиль  
                  
 
 Re: Сжатые шары
Сообщение19.08.2014, 16:37 
Заслуженный участник


14/01/11
1022
Да пожалуйста.
код: [ скачать ] [ спрятать ]
Используется синтаксис C++
#include <cstdlib>
#include <fstream>

using namespace std;

int main(int argc, char *argv[])
{
    fstream out;
    if (argc==1)
    {
        printf("Parameter missing!\n");
         return EXIT_FAILURE;
    }
    int u=atoi(argv[1]);
   int m=u+1;
   int n=2*u;
    out.open ("bubbles.fe", std::fstream::in | std::fstream::out | std::fstream::app);
    int nv=1;
    out<<"string\nspace_dimension 2\n\n";
    out<<"parameter rad = 1.0\n\n";
    out<<"Vertices\n\n";
    int s=0;
    for (int i=0;i<m+1;i++,s+=(1+i%2))
    {
        for (int j=0;j<n+1;j++,nv++)
        {
            out<<nv<<" "<<j<<"*rad*cos(pi/6) ";
            double y=s;
            if (!(j%2))
            {
                if (i%2)
                     y-=0.5;
                else
                     y+=0.5;          
            }
            out<<y<<"*rad\n";
        }
    }
    out<<"\nEdges\n\n";    
    int ne=1;
    nv=1;
     for (int i=0;i<m+1;i++)
    {
        for (int j=0;j<n;j++,nv++,ne++)
            out<<ne<<" "<<nv<<" "<<nv+1<<"\n";
        nv-=n;
        for (int j=0;j<n+1;j++,nv++)
        {
            if ((i<m)&&((j%2)^(i%2)^1))
            {            
                out<<ne<<" "<<nv<<" "<<nv+n+1<<"\n";
                ne++;
            }
        }  
    }
   
    out<<"\nFaces\n\n";
    int nf=1;
    ne=1;
    int r=n/2;
     for (int i=0;i<m;i++)
     {
        if (!(i%2))
         for (int j=0;j<n;j+=2,nf++,ne+=2)
         {
                out<<nf<<" "<<ne<<" "<<ne+1<<" "<<ne+(n-j/2+1)<<" "<<-(ne+(n+r+2))<<" "<<-(ne+n+r+1)<<" "<<-(ne+(n-j/2))<<"\n";
        }
        else
                 for (int j=0;j<r-1;j++,nf++,ne+=2)
         {
                out<<nf<<" "<<ne<<" "<<ne+1<<" "<<ne+(n-j)<<" "<<-(ne+(n+r+1))<<" "<<-(ne+n+r)<<" "<<-(ne+n-j-1)<<"\n";
        }
         ne+=r+2-(i%2);
     }  
      out<<"\nBodies\n\n";
       for (int i=1;i<=nf-1;i++)
       {
            out<<i<<" "<<i<<" volume 3*sqrt(3)/2\n";
        }
    out.close();
    return EXIT_SUCCESS;
}
 

 Профиль  
                  
 
 Re: Сжатые шары
Сообщение19.08.2014, 16:55 
Аватара пользователя


11/06/12
6508
Минск
Спасибо. Это какая-то отдельная программа, которую нужно отдельно компилировать? Просто я думал, что всё делается непосредственно в Surface Evolver.
Да и сам Surface Evolver у меня что-то не хочет работать. Почти на каждый .fe-файл из поставляемых в комплекте примеров ругается и аварийно завершает работу.

 Профиль  
                  
 
 Re: Сжатые шары
Сообщение20.08.2014, 07:00 


01/12/11
931
Осталось сравнить координаты ячеек после слияния, и задача решена. На первый взгляд, изменения затрагивают только несколько рядов ячеек, не распространяясь на всю структуру.

 Профиль  
                  
 
 Re: Сжатые шары
Сообщение20.08.2014, 08:01 
Заслуженный участник


14/01/11
1022
Aritaborian в сообщении #897415 писал(а):
Это какая-то отдельная программа, которую нужно отдельно компилировать?

Ну вы же просили исходник. :-) При запуске программа принимает число и генерирует .fe файл, содержащий сетку заданного размера. В принципе, этот файл можно заполнить и вручную, если есть свободное время. :-)

 Профиль  
                  
 
 Re: Сжатые шары
Сообщение20.08.2014, 14:48 
Аватара пользователя


11/06/12
6508
Минск
Спасибо. Мне будет проще сгенерировать в Mathematica ;-) Только нужно разобраться с форматом .fe. А ваш код мне в этом тоже поможет. Если бы с самого начала читал его внимательнее, сразу бы понял, что он делает, и не задавал бы глупых вопросов ;-)

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

Модераторы: Модераторы Математики, Супермодераторы



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

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


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

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