Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2011, 01:54   #1
FlasH140
 
Регистрация: 01.04.2011
Сообщений: 6
По умолчанию Простая программа моделирования интерференции света

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

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

Итак
Intensity = (255*Math.cos(k*S1/waveLength))+ 255*Math.cos(k*S2/waveLength))/2;

Intensity - результирующая интенсивность в данной точке, S1 и S2 - соответственно расстояния до источников, просчитываемые отдельно ранее.

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

Intensity = 255*Math.cos(k*S1/waveLength))

То у нас будет на поверхности неравномерное освещение, хотя источник только один, и поверхности, по идее, должна быть освещена равномерно.

Направьте пожалуйста на правильную мысль!
FlasH140 вне форума Ответить с цитированием
Старый 01.04.2011, 09:53   #2
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

А откуда вообще такая формула взялась? есть ссылка на источник?
И вообще у вас источники света когерентные? Обычно рассматривается задача когда есть один источник света, который проходит через две (или больше) щелей и только потом считается интерференция света. Щели принято рассматривать как источники плоской когерентной волны.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 01.04.2011, 15:50   #3
FlasH140
 
Регистрация: 01.04.2011
Сообщений: 6
По умолчанию

Формула взята в принципе из собственных догадок, которые, видимо, не совсем похожи на реальность

Уравнение волны E=Emax*cos(w*t), где E -интенсивность в данный момент времени, Emax - максимальная интенсивность, преобразуем к зависимости интенсивности от пройденного расстояния. Получаем мою формулу - E = Emax*cos(const*S), S - расстояние до точки от источника света.

Считаю что у меня два когерентных источника, излучающих свет в одной фазе. В принципе это совершенно аналогично одному источнику и двум щелям. Считаю пока кстати только плоскую картину.
FlasH140 вне форума Ответить с цитированием
Старый 03.04.2011, 18:33   #4
FlasH140
 
Регистрация: 01.04.2011
Сообщений: 6
По умолчанию

Ребят, поможете?
FlasH140 вне форума Ответить с цитированием
Старый 04.04.2011, 08:52   #5
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

поможете, тока ближе к вечеру
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 04.04.2011, 09:32   #6
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Почитал вот это
http://ru.wikipedia.org/wiki/Опыт_Юнга

Получается что интенсивность в точки x будет равна 2*E0*(1+cos(2*pi*Delta/Lambda))
где E0=const, lambda - длинна волны, delta = sqrt(D^2+x^2)-sqrt(D^2+(x+a)^2), D-расстояние до экрана, а-расстояние между источниками. х-точка в которой ищется освещенность, начало координат следует выбрать под одним из источников света. Т.к. косинус функция четная то под каким именно источником будет начало отсчета роли не играет.

Ну дальше считаешь значения функции E(x) с шагом h в цикле и выводишь график на экран. Для простоты можно взять E(0)=1/2, тогда значение освещенности будет в пределах от 0 до 2.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 09.04.2011, 17:22   #7
FlasH140
 
Регистрация: 01.04.2011
Сообщений: 6
По умолчанию

KobolD, спасибо за ответ, у меня кстати первая используемая формула как раз такой и была, я её взял из чьей-то курсовой работы в инете, но...

Тогда похоже я просто не до конца понимаю задачи компьютерного моделирования. Ведь по сути это просто просчёт массива значений по форуме, и его визуализация... А мне "романтики" хотелось - задать каждую волну отдельно, и т.п. Получается это совсем даже лишнее?
FlasH140 вне форума Ответить с цитированием
Старый 09.04.2011, 18:02   #8
FlasH140
 
Регистрация: 01.04.2011
Сообщений: 6
По умолчанию

И ещё вдогонку - у нас есть плоские волны и сферические. Разница, как понимаю, только в том, что можем ли считать радиус фронта достаточно большим, когда он доходит до экрана. Получается, что если расстояние от источников до экрана - большое - у нас плоские волны, если маленькое - то сферические - или нет?
FlasH140 вне форума Ответить с цитированием
Старый 09.04.2011, 22:46   #9
FlasH140
 
Регистрация: 01.04.2011
Сообщений: 6
По умолчанию

В общем пока остановился на таком варианте. Вроде бы похоже на правду. Интерфейсная часть заключается пока только в возможности перетащить источник света и ввести длину волны. Пока что всё в уловным расстояниях, высота источников над плоскостью равна 200, и если ввести длину волны намного меньше этого расстояния - получается фигня. Нормально ли это?
http://195.211.190.11/work/interfere...renceProg.html

Интересный результат получается при "граничной" длине волны - 0.25 - это похоже на истину, или это уже глюки расчётной части? Если меньше - получается совсем грустная картинка.
FlasH140 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение со скоростью света и быстрее скорости света - Сверхсветовое движение Alar Свободное общение 354 13.11.2011 21:32
Простая программа Freeman-des Помощь студентам 1 02.12.2010 18:07
Простая программа russian-stalker Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 27.11.2010 22:52
Программа для моделирования систем Newbie2010 Общие вопросы C/C++ 0 07.03.2010 19:09
Простая программа Distr Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 15.11.2007 08:27