24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Решил поиграться с осцилляциями. Для этого выбрал систему из NxN клеток, каждая из которых представляет собой грузик, соединенный с четырьмя соседями пружиной. У каждого грузика есть своя координата вдоль оси z, при этом константа жесткости пружины, умноженная dz, выражает силу растягивания пружины. Также есть вязкое трение, пропорциональное скорости. Все грузики на краю пластины заморожены, а грузик в самом центре перемещается по закону 0.1sin(wt) - это источник возбуждения колебаний в пластинке.
Написал в питоне небольшой код для решения получившегося дифференциального уравнения. Вот, собственно, сами уравнения для клетки с координатами i,j: a(i,j) = k(z(i-1,j) + z(i+1,j) + z(i,j-1) + z(i,j+1) - 4z(i,j)) - uv v(i,j) = v(i,j) + adt x(i,j) = x(i,j) + v*dt
Константы, которые я выбрал: k = 1 u = 0.05 dt = 0.1
На видео показана пластинка (цвет обозначает координату z) с частотой вынуждающего колебания w=0.3.
Но вообще я менял частоту колебания от 0 до 2 по линейному закону со скоростью 0.000001. В основе лежит следующая идея: у моей двухмерной пластинки должны быть какие-то свои характеристические частоты. Когда частота вынуждающего колебания приблизится к характеристической частоты пластинки, то в результате резонанса амплитуда колебаний возрастет. Поэтому в каждый данный конкретный момент времени я записывал w <z^2>, а в конце построил зависимость одного от другого. В результате получился "спектр".
Для маленьких пластинок на "спектре" видны отдельные "полосы поглощения" (я не знаю, как это правильно назвать, буду использовать привычные мне термины). Я так понимаю, это и есть собственные характеристические частоты пластинки. Только я не понимаю, почему их именно столько: 2 для 3х3, 4 для 5х5, 6 для 7х7. С чем это связано? Не должно ли количество пиков в спектре равняться числу независимых координат (N*N - 1). Или в системе просто присутствует большая вырожденность?
Также мне непонятно, почему частоты пиков не стоят равноудаленно. Здесь же совершенно гармоническая система, поэтому обертона должны быть в целое число раз больше частоты первого перехода.
Другой вопрос - после каждого пика идут какие-то странные колебания?
Ну и главное - что вообще происходит с большими пластинками? Почему там нет четкой первой частоты и ее обертонов, а все просто превращается в кашу?
Недолгий гуглеж по моим вопросам мне никак не помог, реквестирую знатоков.
>>322421 >Не должно ли количество пиков в спектре равняться числу независимых координат (N*N - 1). Или в системе просто присутствует большая вырожденность? А ты не можешь посмотреть, что у тебя там за колебания возникают? Подозреваю вырожденность за счет того, что квадрат, повернутый на 90 градусов, дает тот же квадрат, плюс то, что ты не активизировал моды колебаний, в которых центральный грузик остается неподвижным, а они по идее должны быть. Но я не уверен в своих предположениях, возможно, это бред.
Ну вот видите, да? Полтора дифура, полтора примитивных клеточных автомата. Полностью детерминированное поведение. И хуй проссышь откуда такие неоднозначные результаты симуляции, напрямую не выводимые из этих полутора дифуров. А теперь представим 100млрд нейронов, у каждого из которых может быть по паре тысяч синапсов, не считая внесинаптических контактов. Поведение как будто тоже можно описать неким набором дифуров, тут вопросов нет. Но очевидно же, что взаимодействия в такой системе - нечто большее чем свойства ее отдельных элементов и к таковым несводимо. Поэтому подобный подход (все эти коннектомы, проекты blue brain, вот это все вотетавот) по-сути, путь в никуда, т.к. оргпнизовать полноценную симуляцию все равно никаких гугловских кластеров не хватит, а по отдельности там что-то ковырять - бесполезно для объяснения свойств целой системы.
>>322434 Я пытался смотреть на частотах пиков в спектре, но узоры разные возникают, но неподвижных узлов нет. Тоже не понимаю, почему, ведь на нормальных модах есть узлы. Вырожденность действительно должна быть. Вообще я сейчас все переделываю, еще специально читаю про численные методы, чтобы код получше сделать и вообще все до ума довести хоть какого-то. Сейчас решил сделать всю пластинку свободной (в том числе и края), оставить только центральные 4 осциллятора "привязанными" и менять их координату с sin(wt). Вообще хочу попытаться получить то, что на видео. http://www.youtube.com/watch?v=wvJAgrUBF4w
Сколько в принципе на спектре такой пластины NxN должно быть пиков? Должны ли они стоять друг от друга на одинаковом расстоянии?
>>322983 Поясни. Что тут может быть неустойчивым? Система же очень простая.
>>322785 Попробую вкратце по-другому объяснить. Есть пластинка из осцилляторов размером NxN. У каждого осциллятора есть дополнительная координата z, вдоль которой он может смещаться. Осциллятор действует на каждого из четырех своих соседей с силой, пропорциональной разности их координат z. Вот и все.
>>322530 Все упирается в вычислительные мощности. Сейчас мы еще далеки от этого, но в недалеком будущем дойдем до моделирования хотя бы простых мозгов.
Переделал систему - теперь фиксируется координата только центрального осциллятора: z = sin(wt), а осцилляторы на границе остаются свободными (раньше я ставил рядом с ними соседей с z=0). Еще точность расчета значительно усилил. Пики, правда, сливаются, но их можно разрешить, затратив больше времени.
>>323696 ээ, ну ты там повырезал чтоли все, я тоже хочу такие картинки зажал короче, ясно все с тобой, матрицу я и сам крутить мог бы плюс у тебя система размерностью 3 и ты ищешь в ней некоторую картину условий (твои узоры) но при этом сворачиваешь результат, и что ты при этом хочешь увидеть. с этим песком там все дрожит и шевелится, и четких узлов может и не образоваться, главное для тех песчинок это наличие потенциальной ямы если бы ты срез хотябы брал из этой мембраны. те тебе надо срез не по плоскости мембраны, а поперек.
>>323747 Мда, ужасно матрица у меня выглядит, не знаю, как их нормально вставлять.
>>323728 Добавил строчки для картинок, там же их немного совсем. Не понял, какой результат я сворачиваю? Песок же останавливается в узлах стационарных волн. То есть на видео на каких-то резонансных частотах по пластинке бегут стационарные волны. А у меня стационарности не получается добиться (я смотрел в том числе и большие пластинки вплоть до 200х200). Может, это потому что я резонансные частоты достаточно точно не могу найти. Но можно попробовать и поперек поискать.
Как-то так выглядит колебание для сети 3x3 на частоте 0.343, которая соответствует первому пику на спектре. Ничего особенного, никаких узловых точек - выглядит странно.
>>323751 >Песок же останавливается в узлах стационарных волн. не факт, он остается в потенциальной яме, которая образуется усредненными по времени колебаниями. те узлы это колебания меньшей амплитуды, меньшей частоты
>>323833 также вот это вот z[centre, centre] = np.sin(w х t) не корректно, вообщем то должно быть не абсолютное перемешение точки, не зависящее ни от чего - а сила воздействующая на эту часть, осцилирующая с заданной частотой и зависящая от координаты. хз насколько это существенно правда
>>323747 Извини, я все это проходил давно и плохо, а сейчас у меня сессия и я пытаюсь сюда вообще не заходить но блин , так что "посмотрю, когда будет время" может быть нескоро. Но посмотрю, ты заинтриговал.
>>323833 Амплитуда действительно вряд ли будет совсем нулевой в этих узлах, но все же она должна быть очень маленькой по сравнению с другими точками, и на видео, значит, узлы должны быть почти белыми. Скрипт для анимации попозже запилю, зато сейчас добавил скрипт для получения точного спектра (прикрепил картинку к посту). Я реально не предполагал, что стационарное состояние так медленно достигается. В новом скрипте он для каждой частоты w запускает симуляцию, дожидается стационарности (как раз t>1000 обычно) и только затем выдает максимальное отклонение от нулевой плоскости. Как видно, спектр сильно отличается от предыдущего. Там две функции для получения спектра, одна в параллельном режиме работает с ipyparallel.
>>323837 Думал над эти. Для маленьких пластинок (3х3 в частности) действительно будет большая разница, поскольку средний осциллятор фиксирован в каждый момент времени. Для больших вряд ли будет разница. С физической точки зрения прописывать z мне понравилось больше, ведь это как будто мы жестко прикрепляем к середине пластинки осциллятор.
>>324119 >но все же она должна быть очень маленькой по сравнению с другими точками не обязательно, очень, просто меньше (в два раза меньше или на 10 процентов и уже вроде как должно сидеть в яме), вообщем зависит от того, что можно счесть устойчивым состоянием. Те отношение флуктуации энергии частицы к высоте барьера. Допустим она может неустойчиво находится на горбе высокочастотной моды и сваливаться, а по сторонам приходят в противофазе два фронта, сталкиваясь гдето в этой области, подкидывая частицу на место.
Те комбинации условий достаточно разнообразны.
надо мутить пробную частицу, эмулировать так эмулировать.
для больших возможно, но так конечно в принципе нормально что продольная жесткость стержня, выше поперечной жесткости мембраны. С другой стороны, пока явно достаточно постановки вопроса: есть ли наблюдаемое явление в данной системе.
Берем устоявшуюся систему, усредняем по модулю z по координате получаем матрицу средних значений - смотрим - есть картина или нет тащим это среднее за последние несколько циклов (в условных единицах времени), медленно меняем частоту - смотрим получается картинка или нет
Вообще для начала, без особенного ущерба, для понимания процесса, можно рассмотреть двумерный случай. Самое простое это некоторая функция, не зависящая от времени, разложеная в ряд, на стоячие волны. Добавить потом вибратор. Дальше перейти к динамике, учитывая векторное поле действующее на частицу, с минимизацией среднеквадратичного отклонения положения частицы по одной из координат. Те определиться со свойствами интересующих нас ситуаций, и искать уже их в модели. но я приветствую, только хардкор, только скальпель Но с другой стороны двумерный случай можно было бы и прописать, для ускорения процесса.
Сделал видео на частотах для обоих пиков на cтационарном спектре 3x3 >>324119 Вот теперь действительно видно, что это резонанс. Во-первых, пластинка медленно раскачивается, амплитуда колебаний медленно растет и в итоге выходит на очень высокий уровень. Во-вторых, получившийся узор стационарен. Узлов, конечно, нет, но, видимо, пластинка просто слишком мала для их образования. На других частотах узор нестационарен, а амплитуда колебаний почти моментально выходит на максимум.
Для меня остается загадкой, почему для системы из 9 осцилляторов (один из которых, правда, заморожен) находятся только две резонансные частоты: 0.662 и 2.135. И ни одна из них не совпадает с результатом из матриц, который у меня получился >>323747.
Еще меня удивляет, почему система так медленно выходит на стационарный уровень. За 1000 виртуальных секунд при частоте колебаний 1 с-1/, как получилось у >>323858 и у меня.
>>323837 Сейчас опять попробовал делать колебания силы. У этого метода есть огромная проблема - если сама пластинка ничем ни за что не зацеплена, то эта сила бросает ее целиком вверх-вниз с огромнейшей амплитудой.
>>324212 Да, вероятно уже небольшого понижения амплитуды будет достаточно. Но оно должно быть постоянным, чтобы частица зависла в этой потенциальной яме и не прыгала постоянно туда-сюда. Хотя, как я понимаю, на резонансных частотах все-таки должны быть настоящие неподвижные узлы. Можно попробовать частицы моделировать, но это будет сложно с точки зрения кода, и не факт, что полезно. Легче, как ты говоришь, будет посмотреть смотреть на среднюю амплитуду каждого осциллятора. Поясни, что конкретно ты под двухмерным случаем понимаешь?
>>324264 >>324264 >почему система так медленно выходит на стационарный уровень. За 1000 виртуальных секунд при частоте колебаний 1 с-1/, жесткость мала, увеличь на порядок
и задвинь немнго теории что ты считаешь (в том плане что в код я смотрю, вижу фигу, набрал в гугле но закрутился и забыл посмотреть)
>Сейчас опять попробовал делать колебания силы. надо делать не абстрактный вектор силы меняющий свое направление, а также как с пластинками, только добавить как бы одну пластинку сверху-снизу по центру и от нее уже сила на саму мембрану. Те по факту тоже самое что сейчас, просто добавить одну пластинку под.над мембраной, которую уже фиксированно колебать.
>Да, вероятно уже небольшого понижения амплитуды будет достаточно. более того, если частица устойчиво прыгает между двух горбов, с разными фазами, по баллистической, то она тупо может перелетать стоячий горб, и ее вообще может мало затрагивать все что происходит под ее траекторией, и пики там могут быть и больше соседних горбов по амплитуде, до тех пор пока столкновение не происходит и они не мешают пролету частицы. Возможно я все несколько переусложняю, но но.
Но можно попробовать сначала средние значения по модулю.
>резонансных частотах все-таки должны быть настоящие неподвижные узлы. Стоячие волны там должны образовываться. Но в общем случае, мы видим интерференционную картину всего множества этих возможных волн, из того спектра который возбудил осцилятор, и тут еще один момент что осцилятор не обязательно гармонический (хз к чему это но так заметка) и он может возбуждать разные спектры возможных волн.
Не надо моделировать частицы, надо моделировать одну частицу, задав ей правила взаимодействия с пластинами, точно также как и с осцилятором. Свалилась закинул в рандомное место новую, перестала двигаться - ок чтото интересное. Сложность в ней добавляется - она находится в грав поле, и ее упругость (те маленький резиновый мячик или кусок пластелина).
Двумерный случай Вместо мембраны, у тебя есть нитка-резинка, в остальном все тоже. (те высота и координата) Те у тебя сейчас используется двумерный массив содержащий высоту, так будет одномерный. Это упрощает саму систему, но думаю подобные эффекты там тоже должны быть. Количество твоих оциляторов, по сечению ограничивает возможное количество самих мод. те 3 это в принципе две волны - с полупериодами в 1 и три клетки.(вроде), что в принципе на твоих видюшках и есть. На нитке при томже количестве элементов что и в квадрате их будет больше.
Я не очень посмотрел связность, и не понял диагонали связаны или нет, если есть, то в принципе могла бы быть еще третья мода с полупериодом когда противоположные стороны выгибаются в противофазе (ввер и вниз), но чето подумал и вроде не складывается да и стартовые условия не те и внешней силы (к примеру сопростивления среды) которая могла бы перекосоебить в эту ситуацию нет. Но я не истина в последней инстанции как ты понимаешь, с питоновскими этими обращениями к массивам не очень и с numpy тоже. (не посмотрел еще)
>>324285 Интересно, что грузик-инициатор не синхронизировался с остальными, причем не просто с резко выделяющейся амплитудой (она даже меньше, чем на максимумах пластинки), а, похоже, на π/2 сдвинут по фазе.
>>324292 Жесткость k/m хочется мне единицей оставить, чтобы не было так много разных параметров. Я боюсь, для большей жесткости нужны будут большие точности (ведь скорость распространения деформации тоже увеличится, нужно шаг поменьше). Ты конкретно про код в петле спрашиваешь? Это просто метод численного решения диффуров, который дает ошибку поменьше, чем просто z(n+1) = z(z) + v*dt.
>только добавить как бы одну пластинку сверху-снизу по центру и от нее уже сила на саму мембрану Можно попробовать, но главная пластинка может начать очень сильно раскачиваться (в резонансе уж точно начнет) и "врезаться" в пластинку.
>более того, если частица устойчиво прыгает между двух горбов, с разными фазами, по баллистической, Вот думаю, что это маловероятно. Какие-то очень специфические условия должны быть. Да и на реальных видео песчинки не летают, а просто немного дрожат в узлах.
>Вместо мембраны, у тебя есть нитка-резинка, в остальном все тоже Да, я так уже делал. Мне двухмерная пластинка интереснее показалась, поэтому я почти сразу к ней перешел.
>Вместо мембраны, у тебя есть нитка-резинка, в остальном все тоже Да, похоже не то.
>не понял диагонали связаны или нет, Нет, по диагонали они свободны.
>>324293 Да, картина видна. Впервые удалось добиться стационарного рисунка. Вывод простой - надо было спектры снимать на стационарном режиме, потому что просто изменение w во времени дает что-то очень далекое от истинного спектра.
>>324606 Ну он как раз и должен на п/2 сдвинутым быть. Когда маятник раскачиваешь, для резонанса тоже надо внешнюю силу на п/2 сдвинуть. Амплитуда у него очень маленькая, потому что у него фиксированные координаты, а вся остальная пластинка ОЧЕНЬ сильно раскачалась. Она так только в резонансе раскачивается, на других частотах амплитуды сравнимы.
>>324353 Похоже на стационарное что-то. Но на спектре я этих частот не видел, да и ампилитуда маленькая у колебаний. Непонятно, стационарное ли или нет.
>>324600 Это что-то очень странное. Может попробовать без центрального посчитать, вдруг получится. Хотя сомневаюсь
>>324690 >Да и на реальных видео песчинки не летают, а просто немного дрожат в узлах. от страха чтоли дрожат ?) они движутся по какимто траекториям, то что с нашей точки зрения они микроскопические, не отменяет факта.
чето с видео не докрутил ты, по мимо отступа там в начале явно ничего не видно, что печалька, так как ждать по 20 минут чтобы выяснить будет не будет тоже не фонтан
может заюзаешь чтото в таком духе https://github.com/Zulko/gizeh и квадратики рисовать можно и подписи и в moviepy лезет вроде нормировать входящие значения надо
>>324705 >Это что-то очень странное. Может попробовать без центрального посчитать, вдруг получится. У меня, кажется, получилось. Поскольку амплитуда блока-инициатора все мала по сравнению с остальными, да еще и рассинхрон этот, можно принять, что центральный блок закреплен. Тогда матрица C получается 2 -1_0_0_0_0_0 -1 -1 3 -1 0 0 0 0 0 0 -1 2 -1 0 0 0 0 0 0 -1 3 -1 0 0 0 0 0 0 -1 2 -1 0 0 0 0 0 0 -1 3 -1 0 0 0 0 0 0 -1 2 -1 -1 0 0 0 0 0 -1 3 (у меня тоже не вышло нормально вставить матрицу) а корни из собственных значений 1 1 1.41 2 2 1.73 2.135 0.662
Собственные векторы (показывают относительные амплитуды, как я понимаю) для 0.662: -0.781а а -0.781а а -0.781а а -0.781а а
для 2.135: 1.281а а 1.281а а 1.281а а 1.281а а Вроде это совпадает с наблюдениями. Грузики нумеровались вот так 1 2 3 8 _ 4 7 6 5
>>324738 >чето с видео не докрутил ты при этом кудато просирается столько памяти что прям страшно 51x51 20 гигов в пике еще и массивы копируются при вызове, жесть
>>324858 есть ощущение что кроме резонансных вариантов тоже есть интересные не то чтобы нашел, просто наводит на мысль ci2000os_99x99_3.000Hz_25fps_1lapse_100sec_0.10dtk.webm
>>324738 Посмотрю на эту библиотеку сейчас. >нормировать входящие значения надо Я думал над этим, но не знаю, как это сделать. Чтобы нормировать, надо смотреть на стационарные режим, но сейчас я перепишу и оптимизирую код для быстроты таким образом, что кадр будет прорисосываться сразу после расчета, в таком случае норму наперед не узнать.
>при этом кудато просирается столько памяти что прям страшно Мой код на гитхабе совершенно не годится для больших пластинок. Он сначала просчитывает весь временной интервал, попутно записывая необходимые значения, а только потом все это визуализирует. Поэтому фактически вся история (то есть количество шагов, деленное на lapse) хранится это время в оперативке. А она может быть весьма большой.
Еще я думаю из соображений симметрии рассчитывать только четверть всей пластинки. Это не ускоряет расчет маленьких пластинок, но на больших уже заметно.
У меня есть наработки и фрагменты кода для все этого, постараюсь сейчас в порядок все привести.
>>324771 Вот ты >>324930 сказал про симметрию, и я, кажется, понял, почему только эти две моды работают: из всех решений только они достаточно симметричны.
>>324971 Можно, но матрицы прямоугольные все же, у меня нет идей, как с треугольником работать.
>>324975 Интересная мысль. Возможно, если сделать источник возбуждения несимметричным, то проявятся другие моды? Тогда это чем-то похоже на ИК и Рамановскую спектроскопию.
>>324930 >Посмотрю на эту библиотеку сейчас. Для мелких это было возможно актуально, и возможно если ты поменяешь квадратики на треугольнички или квадраты с усеченными углами станет актуально опять, но при картинках 100х100 или 300х300 там в принципе квадратик это пиксель, такчто не актуально.
самый главный тормаз везде, это шаг вычислений, 0.1 вполне устойчиво работает при частотах ниже 3, и разницы визуально нет, также как и по картине. Те для видео значение в dt=0.1 вполне норм
>Я думал над этим, но не знаю, как это сделать. можно просто скользящее среднее максимума, я не стал заморачиватся и просто смотрю максимум на каждом кадре и поднимаю планку (но мелкие дрожания на не резонансах так конечно видно не будет)
>Мой код на гитхабе совершенно не годится для больших пластинок ты там синтаксис поправь, и я чето ума не приложу, только у меня ругается чтоли
видео стартует на частоте 1, каждые 10 сек частота повышается на 0.05 (кольца такие пошире начинают идти) fbw_civar0.10_os_301x301_1.000Hz_50fps_1lapse_100sec_0.10dtk.webm
>>324988 >ты там синтаксис поправь, и я чето ума не приложу, только у меня ругается чтоли У меня ругается и не запускается, но я полный нуб, который только что ради этих пластинок скачал питон, так что, может, я просто недоустановил чего.
Попробуйте еще сравнить с результатами, полученным на предыдущей версии кода. Тут я уже учел симметрию, вроде результаты такие же, но я мог что-то где-то упустить.
>Те для видео значение в dt=0.1 вполне норм Наверное, так и есть. Вообще я пробовал для 9х9 проводить симуляцию про разных dt, и при dt = 0.001 через 100 виртуальных секунд результаты от истинных отличались где-то на 0,1%. Но dt = 0.001 медленный очень.
>можно просто скользящее среднее максимума, я не стал заморачиватся и просто смотрю максимум на каждом кадре и поднимаю планку Сделал как ты. Вроде нормально выглядит. Вариант с скользящей, я боюсь, может паразитную осцилляцию интенсивностей вызвать. Твое видео интересно выглядит. Вообще, чем больше, там красивей. Не представляю, сколько ты со старым кодом времени на нее потратил.
>>325375 Если у тебя и сейчас будет ругаться, напиши сюда ошибку.
Я много продолбался с этим gizeh, но он у меня так и не заработал. Он требует библиотеку cairocffi, которая при загрузке выдает ошибку dlopen() failed to load a library: cairo / cairo-2
Долго с этим провозился, качал разные dll, прописывал переменные среды, но ничего не помогло.
У тебя все работает? Если да, ты с Windows сидишь?
>>325726 >Если у тебя и сейчас будет ругаться, напиши сюда ошибку. File "Spectrum.py", line 82 plt.title(str(N)+'x'+str(N)' Net Spectrum') Syntax Error: invalid syntax
File "Steady-StateSpectrum.py", line 111 plt.title('{}x{} Steady-State Spectrum'.format(N,N)') SyntaxError: EOL while scanning string literal
И можешь, если не сложно, пояснить за модули: какие нужны? Я не понял, как их ставить (полный, полный нуб), психанул и скачал сборку Anaconda, но там, кажется, все равно есть не все.
>>325869 Какая у тебя версия питона? У меня 3.5, и все нормально. Сейчас ты можешь просто удалить эту строку или поставить перед ней знак #. Для визуализации еще нужен moviepy, которого нет в Анаконде. Просто зайду в командную строку Windows и вбей pip install moviepy.
>>325875 У меня тоже 3.5 Спасибо, moviepy вроде загрузился. Спектр и должен сначала весь считаться, это нормально, что у меня проценты в командной строке ползут, а картинки пока нет?
>>325905 О, график построился! %пока набирал сообщение, построился и второй% Попробовал записать видео, получилась странная постоянно меняющаяся фигня пикрелейтед, причем если отматывать видео на начало, каждый раз получаются разные картинки сам по себе прикольный эффект. Пробовал смотреть Виндоус-Плеером и Риал-Плеером, надо чем-то другим? нуб
>>325726 >Не представляю, сколько ты со старым кодом времени на нее потратил. я переписал примерно также как и ты сделал сейчас, он чтото в духе 11 фреймов в сек делает, со старой процедурой подсчета твой сейчас делает 20 на 305х305 (на 0.1 dt) это уже годно и работает уже из коропки, что радует к стати, не используй пробелы в именах файлов, очень не удобно для скриптов. также я бы добавил жесткость (точнее добавил, хм как мне кажется) как параметр, результат разный.
первое на частоте 1, жесткость 1 - твой текущий вариант (305x305_at_1.webm) второе на частоте 1, жесткость 20 (или наоборот не жесткость) - то что у меня f9fbb_civar0.10_os_305x305_1.000Hz_50fps_10lapse_100sec_0.10dtk.webm
>gizeh забей, по факту он не нужен, это была мысль, пока я не собразил почему у меня видос не генерился. я на линуксе сижу
>>325926 файл видео коряво записался или ты начал его смотреть пока он не догенерился он там в шапку данные тоже записывает в конце и это обламывает так как не посмотреть видос в процессе его генерации, в принципе скорость генерации позволяет. можешь попробовать в строчке animation.write_videofile(file_name+'.mp4', fps=fps, codec='png')
>>325946 хотя нет, походу эта разница артефакт подсчета, шаг маловат и расходится осталось только понять как получить это в модели которая не расходится
>>325926 Где-то через двадцать минут после того как я залил на гитхаб новую версию кода для видео, я исправил в нем ошибку. Может, ты сейчас старой пользуешься? Там как раз цвет неправильно определялся. Вообще тут есть только синий и красный цвета, других быть не может.
>>325946 На что в принципе жесткость может влиять? По-моему, она только на скорость распространения возмущения влияет. Того же самого можно добиться, влияя на скорость воспроизведения видео. Или я что-то упускаю из вида? Ведь твое второе видео выглядит интересно.
Я тут попробовал менять все-таки не координату центрального осциллятора, а его ускорение. Трансляционное движение вдоль оси z убрал, вычтя из координат осцилляторов координату центра масс. И тут уже получились предсказанные аналитически значения (>>323747>>324600).
Правда, 1.41, 2.0, 2.0, 1.0, 1.0 так и не появились. В чем дело, как их возбудить?
Частоты на видео по порядку: 1.7081, 1.732 и 2.450. Разницы между первыми двумя не вижу.
>>326096 Там две частоты на самом деле, 2.449 (√6) и 1.732 (√3). Третья "частота" - 0, она соответствует прямолинейному полету пластинки в пространстве, и понятно, почему у тебя на графике ее нет. Независимых координат, если что, тоже три, остальные можно найти за счет симметрии. Матрица с учетом симметрии будет такая 8-4λ -8 0 -8 12-4λ -4 0 -4 4-λ и это для удобства можно "сократить" (поделив соответствующие строки и столбцы на 2) до 2-λ -2 0 -2 3-λ -2 0 -2 4-λ Чтобы возбудить больше частот, можешь попробовать взять пластинку с четными сторонами и возбуждать центральные четыре разными способами, ну там ++ ++ или ++ – – или +– –+
ЗЫ А как ты делаешь, чтобы на графике подписывались пики? нуб
>>326572 См. пикрелейтед. Из-за симметрии (т. е. в случае симметричного возбуждения) все квадратики, помеченные единичками, всегда будут на одинаковой высоте. То же и для двоек.
>Чтобы подписать, перед plt.show() поставь строку: >plt.text(x, y, 'твой текст') >x, y - положение текста на графике А, спасибо. Я думал, что у тебя там есть автораспознавание пиков, а я тупой, что не могу его включить
>>322417 (OP) Знаешь, как это выглядит со стороны? Представь ситуацию. Господа в смокингах и цилиндрах сидят в обедне и пьют чай, обсуждая решения уравнений Эйнштейна для идеальной жидкости, сходимость рядов постньютоновского формализма, D-браны, задачу трех тел наконец. Тут к ним вползает пьяный вдрызг кучер Ванька. Отплевывая лошадиный навоз, он ссыт под себя, одновременно блюя на пол несвежим портвешком. Затем достает ATX системник с двухъядерным Skylake, найденный на помойке. "BSSN-формализм, слияние черных дыр - вот где мыслЯ, блеать, вот где красота и свежесть!". Смеясь, господа растегивают ширинки и мочатся быдлу в рот. Зовут дворника Адольфа - местного фурье-задрота, он спускает числопетуха с лестницы. Он делает это с удовольствием - хоть зачем-то сгодился элите. Поднимаясь за похвалой, он начинает зациклено бормотать про существование и единственность. Господа для острастки ссут на него, после чего возвращаются к своим светским беседам.
>>322530 бро, нужны другие методы. вот есть 1 млрд китайцев все люди со сложными характерами и мотивациями итд итп. есть политика этого китая. политика не учитывает все элементы а только значимые. а из намного меньше чем 1 млрд. понимаешь? всю систему не нужно считать. нужно считать только значимые и актуальные прямо сейчас.
Вот стоило скачать питон... В общем, от меня тоже код, считает (вот по этой >>323711 методе) резонансные частоты для системы NxN, вибрация в которую накачивается за счет изменения координаты центра (надо бы для случая с силой тоже сделать). МойПервыйКод% в школе был Паскаль, но давно и мало%, можете ругать и все такое.
Если кому еще интересно, пытаюсь воспроизвести видео из поста >>323268, в прикрепленном (если оно прикрепилось) - прогон пластины 15х15 через все 35 теоретических резонансных частот (по 10 секунд на частоту). Самые низкие и самые высокие частоты выглядят относительно красиво, причем последние похожи на первые, только "в клеточку" и почему-то с неподвижным контуром пластины (не из-за трения, если его понизить, это не изменится). То, что посередине (бОльшая часть видео) выглядит, ээ, не настолько красиво, местами полная каша. нуб
>>330068 ну в принципе норм, кроме квадратно гнездовых узоров тут ничего больше и не должно быть по диагоналям связей нет, колво элементов тоже не велико такчто в рамках этой модели походу все сделано кроме отображения собственно картины, вместо самой пластины. ну и пробника. (частицы).
>>330546 Да не сложно, есть методика (в нашем случае было бы через собственные векторы той же матрицы, собственные значения которой - квадраты частот). У нас тут очень простая модель - все грузики одинаковые, могут двигаться только по одной координате, потенциал задается просто пружинками. С молекулами - сначала нужно найти потенциал взаимодействий между атомами, это по-хорошему делается через квантмех и тут есть свои методы численного моделирования. А так - тоже считается это всё.
Все грузики на краю пластины заморожены, а грузик в самом центре перемещается по закону 0.1sin(wt) - это источник возбуждения колебаний в пластинке.
Написал в питоне небольшой код для решения получившегося дифференциального уравнения. Вот, собственно, сами уравнения для клетки с координатами i,j:
a(i,j) = k(z(i-1,j) + z(i+1,j) + z(i,j-1) + z(i,j+1) - 4z(i,j)) - uv
v(i,j) = v(i,j) + adt
x(i,j) = x(i,j) + v*dt
Константы, которые я выбрал:
k = 1
u = 0.05
dt = 0.1
На видео показана пластинка (цвет обозначает координату z) с частотой вынуждающего колебания w=0.3.
Но вообще я менял частоту колебания от 0 до 2 по линейному закону со скоростью 0.000001. В основе лежит следующая идея: у моей двухмерной пластинки должны быть какие-то свои характеристические частоты. Когда частота вынуждающего колебания приблизится к характеристической частоты пластинки, то в результате резонанса амплитуда колебаний возрастет.
Поэтому в каждый данный конкретный момент времени я записывал w <z^2>, а в конце построил зависимость одного от другого. В результате получился "спектр".
/Продолжение в следующем посте с картинками/