Skip to content

aglie/misc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 

Repository files navigation

Планчик

У меня есть два проекта для программирования в javascript. Я был бы рад любой помощи.

Атлас фурье преобразований

В 1980м году вышла одна замечательная книжка, называлась “Атлас оптических преобразований”. За вычетом крошечного введение, она сплошь состояла из различных картинок слева и их “оптических”, то есть Фурье преобразований справа.

В те далекие годы компьютеры были еще медленными а алгоритм Кули-Тьюки еще не был разработан, поэтому преобразования считали аналоговым методом. На принтере на прозрачке А4 распечатывалась картинка которую нужно было преобразовать. Дальше с помощью фотоуменьшителя она сжималась до размера 35 миллиметрового слайда. Дальше этот слайд помещался в монохроматичный параллельный когерентный пучок лазера, за слайдом ставилась собирающая линза. Трюк состоит в том, что в если слайд облучен когерентным излучением, в фокальной плоскости линзы образуется Фурье преобразование того что на слайде. Полученое изображение фотографировалось, проявлялось и сканировалось обратно в компьютер.

Кстати, один из авторов этого атласа, Роджер Велберри, на подобной нехитрой конструкции умудрялся решать кристаллические структуры структуры. С помощью компьютера генерировал множество различных структур, дальше оптическим методом считал их Фурье преобразования, те что сходились с экспериментом лучше он отбирал для следующих модификаций. Вот такой оптический аналоговый компьютер для Фурье преобразований.

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

В последние где-то пять лет произошла революция в рентгеновских детекторах и диффузное рассеяние, а с ним и разглядывание сырых детекторных данных снова входит в моду. Старая версия атласа не переиздавалась и уже пропала из кучи библиотек, так что есть большая надежда на то что новая электронная версия атласа будет пользоваться определенной популярностью среди профессионалов. Да и кроме того есть в Фурье преобразовании некоторая эстетика способная привлечь даже новичков.

Постановка задачи, минимум

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

  1. Было бы здорово разрешить пользователям преобразовывать свои картинки.
  2. Фурье преобразования имеют очень большой динамический диапазон. Поэтому надо позволять менять цветовую насыщенность графика, разрешать рисовать его цветным (с фазами) и черно-белым. Кроме того цветувую иненсивность иногда полезно рисовать пропорционально длине фурье-преобразованых векторов, а иногда их квадратов.

Задача

а) написать код который может дурье-преобразовывать массив размером 2^n
б) сделать демонстрацию результата в форме псевдо-раскраски (цвет = фаза, насыщенность=яркость). У меня есть пайтон-код.
в) сделать кнопочки увеличивающие-уменьшающие цветовую насыщенность, включающие-выключающие демонстрацию фаз

Расширение задачи 1

Сделать back-end на чем угодно, который бы позволял анонимным пользователям а) закачать свою картинку б) добавить к ней подпись в) изменить параметры демонстрации фурье

Сохранял бы это на диск с возможностью создать постоянную ссылку

Расширение задачи 2

Для объяснения фурье преобразования нужно показывать как каждый из фурье коэффициентов считается. При этом при наведении мышкой было бы здорово показывать какая волна произвела данный конкретно фурье коэффициент. Нужно просто домножить исходную картинку на данную волну.

Расширение 3

Я буду рад любым фотографиям/ссылкам на картинки приводящие к интересным фурье преобразованиям

Расширение 4

Я был бы рад кому-то кто мог бы написать введение в Фурье-преобразования:

  • Комплексная арифметика
  • Формула фурье, из каких волн складывается каждый коэффициент
  • Теорема о конволюции
  • Ошибки обрыва ряда
  • Тонкости дискретного фурье преобразования - опять ошибки обрыва ряда по сути
  • О том что разрешение в прямом пространстве дает больше гармоник, а пустое место вокруг объекта - интерполяцию вокруг

Расширение 5

Красивый дизайн

Задача 2: Рассчет химического равновесия в растворе

Зачем это надо

В нашей лаборатории выращивают монокристаллы цианидов, в том числе аналогов знаменитой краски, Берлинской лазури. Эти соединения малорастворимы, поэтому процесс кристаллизации в принципе ужасно прост - смешиваются две растворимые соли железа и гексацианата железа и кристаллы выпадают в осадок:

4FeCl3 + 3K4[Fe(CN)6] → Fe4[Fe(CN)6]3↓ + 12KCl

Если смешивание происходит посредством медленной диффузии в принципе при удачном стечении обстоятельств можно получить относительно большие кристаллы.

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

Правильные концентрации солей, хелатов и pH оптимизировать ужасно скучно ибо это очень много параметров, оказывается, при наличии термодинамических данных растворимости можно рассчитывать http://pubs.acs.org/doi/abs/10.1021/es00033a019. Программы для этих рассчетов определенно существуют, но те что видел я излишне сложны. Мне кажется что простая программка которая будет рассчитывать концентрацию ионов в растворе будет полезна, я знаю по крайней мере двух студентов кто ей восопльзуется.

Постановка задачи

Имея список возможных химических реакций и их констант:

H2O <=> H+ + OH-                             [K=1e-14]
Fe4[Fe(CN)6]3 <=> 4Fe3+ + 3Fe(CN)6^3- + 3e-  [K=1e-84.5]

А так же количество исходных материалов

[H2O]=1 mol
[Fe4[Fe(CN)6]3]=0.01 mol

выдаст финальные концентрации каждого из ионов.

Наивный способ решения

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

(тут появятся точные детали что и как делать)

Тонкости

У задачки есть несколько угловых случаев, например наличие двух механизмов реакции (двух уровнений с одними реагентами и продуктами но разными константами реакций) и тому подобное, но это можно будет полировать уже после того как базовая часть заработает.

About

Some tiny programs to share with friends

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published