Задача о фотоне

Содержание

 TOC \o "1-3" \h \z Введение.. \h 3

1. Развернутая постановка задачи.. \h 5

2. Обоснование выбора средств и способа решения поставленной задачи.. \h 6

3. Разработка алгоритма решения задачи.. \h 12

4. Блок-схема программы... \h 15

5. Листинг программы... \h 16

6. Результаты отладки и тестирования программы... \h 20

7. Выводы и предложения.. \h 23

Литература.. \h 24

Введение

Катализатором научно-технического прогресса во всех сферах деятельности человека является широкое использование ЭВМ. Без компьютеров немыслимо развитие производства и науки. Для увеличения объемов выпускаемой продукции и повышения ее качества необходимо внедрять во все отрасли производства, науки и техники автоматизированные и роботизированные комплексы.

Формирование будущего инженера способствует развитие его алгоритмического мышления. Основами алгоритмизации должны обладать инженер-технолог, инженер-конструктор и другие. Даже если инженеру непосредственно не придется программировать при разработке и внедрении новых производственных задач с использованием ЭВМ, то он может грамотно поставить задачу математику-программисту, обладая инженерно-алгоритмическим мышлением.

Умение общаться с ЭВМ должно стать таким же естественным для человека, как знание грамматики и арифметики. Бурное развитие науки, лавинообразный рост объема информации предъявляют новые требования к специалистам. Каким бы видом деятельности не занимался человек – в ближайшее время без персонального компьютера ему не обойтись.

Основными видами человеческой интеллектуальной деятельности, изучаемой в информатике, являются:

·    

·    

·    

·    

·    

Одним из многочисленных языков программирования является Turdo Pascal, который используется для создания программ решения задач из различных областей и сфер человеческой деятельности. Именно этот язык программирования и был использован для выполнения практической части курсовой работы.

Целью данной курсовой работы является практическое овладение навыками программирования на языке Turbo Pascal на примере задачи о фотоне из курса физики.

Для достижения поставленной цели решались следующие задачи:

1. Разработка алгоритма решения задачи на основании развернутой постановки задачи и обосновании выбора средств и способа решения поставленной задачи.

2. Составление алгоритмической блок-схемы и написание программы на языке программирования Turbo Pascal.

3. Отладка и тестирование готовой программы.

Объектом исследования является программирование на языке Turbo Pascal.

Предметом исследования является задача о рассеянии фотона при соударении со свободным электроном.

1. Развернутая постановка задачи

Энергия фотона рентгеновского излучения E=0,3 МэВ. Фотон рассеян при соударении со свободным покоящимся электроном, в результате чего его длина волны увеличилась на

Определить:

1.    

2.    

3.    

Скорость света в вакууме с=3·108 м/с.

h=6,63·10-34 Дж·с

Энергия покоя электрона

E0=mec2 =0,511 МэВ, где (1 МэВ=1,6·10-13 Дж)

2. Обоснование выбора средств и способа решения поставленной задачи

Язык программирования Pascal был разработан профессором швейцарского университета Николаусом Виртом в техническом институте В Цюрихе и опубликован в 1971 г. Язык назван в честь французского ученого Блеза Паскаля, разработавшего одно из первых суммирующих устройств. Pascal предназначался для обучения студентов программированию и был первым языком, в котором нашли отражение концепции структурного программирования, определенные Дейкстрой и Хором. Международный стандарт языка Pascal был утвержден  в 1982 г. Последующие совершенствования языка сделали его одним из самых распространенных в мире профессиональных алгоритмических языков, поэтому он наиболее удобен как первый изучаемый язык программирования. Наиболее популярным являются версии Turbo Pascal 6.0, Turbo Pascal 7.0 и модификация Turbo Pascal 7.1.

Большинство программ создаются для решения какой-либо задачи. Решение задачи достигается благодаря обработке информации или данных. При создании программы, мы должны знать: как ввести информацию в программу (ввод); как хранить информацию в программе (данные); как указать правильные команды для обработки данных (операции); как передать обратно данные из программы пользователю (вывод).

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

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

Данные

Это константы, переменные и структуры, содержащие числа (целые и вещественные), текст (символы и строки) или адреса (переменных и структур).

Операции

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

Ввод

Это означает считывание значений, поступающих с клавиатуры, с диска или из порта ввода/вывода.

Условное выполнение

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

Циклы

Благодаря циклам некоторый набор команд выполняется повторно или фиксированное число раз, или пока является истинным некоторое условие, или пока некоторое условие не стало истинным.

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

Var … – раздел описания переменных, которые используются в программе;

Begin … End – ключевые слова, обозначающие начало и конец программы, модуля, процедуры или функции, а также логического блока внутри программы;

Оператор присваивания (:= ) – позволяет записывать в переменные значения вычислений, константы и т.п.;

Write (WriteLn) – стандартная процедура вывода. Используется для вывода данных на дисплей, принтер или в файл.

ReadLn – стандартная процедура ввода. Применяется для ввода данных программой с клавиатуры или из файла.

If <условное_выражение> then – конструкция ветвления. Позволяет организовать выполнение отдельных операторов, в зависимости от значения параметра <условное_выражение>. В программе применяется для выяснения корректности исходных данных и предупреждения аварийных ситуаций.

While <условие>… do – цикл с предусловием. Позволяет организовать повторение выполнения оператора или группы операторов до тех пор, пока истинно <условие>. Цикл может не выполнится ни одного раза, если <условие> изначально ложно.

Repeat … Until <условие> – цикл с постусловием. Позволяет организовать повторение выполнения оператора или группы операторов до тех пор, пока ложно <условие>. Цикл выполняется минимум один раз, так как условие проверяется после выполнения тела цикла.

В задаче необходимо использовать величины вещественного (дробного) типа данных, так как все исходные данные – дробные числа, причем все имеют очень маленькие значения. Для этого в языке Паскаль можно использовать величины дробного типа:

Doudle (5*10-324 … 1,7*10308) или Extended (3,4*10-4932 … 1,1*104932). Вычисление значений данного типа обуславливает использование математического сопроцессора 8087.

Поставленная задача курсовой работы требует подробного рассмотрения вопроса энергии фотона при соударении с электроном. Рассмотрим немного общих вопросов.

В конце XIX века считалось, что развитие физики завершилось: механика и теория всемирного тяготения были известны более 200 лет, сформулированы фундаментальные законы сохранения энергии, импульса, электрического заряда, построена максвеловская теория электромагненизма.

Однако к началу XX века возникли проблемы, касающиеся физической природы излучения веществ, а также их  взаимодействия: в рамках классической физики возникали непреодолимые сложности при объяснении процессов поглощения и испускания света атомами. Анализ этих противоречий привел к научной революции, и в течение последующих 30 лет были заложены основы квантовой физики. Квантовая физика пришла на смену классической при рассмотрении явления на атомном и субатомном уровнях.

Свет – это электромагнитные волны, обладающие энергией и импульсом и распространяющиеся в вакууме со скоростью с=3·108

Спектр – распределение энергии, излучаемой или поглощаемой.

Изменение энергии  системы связано с изменением ее массы  следующими образом:

Инерциальными системами отсчета (ИСО) принято считать такие системы отсчета, в которых выполняется первый закон Ньютона. Любая система отсчета, движущаяся равномерно и прямолинейно относительно ИСО, также является инерциальной. Длина волны  связана с ее частотой  формулой  – скорость света. Электронвольт – энергия, которую приобретает частица с зарядом е при прохождении ускоряющей разности потенциалов в 1 В.

(1 эв=1,6·10-19ДЖ)

14 декабря 1900 г. Макс Планк в докладе на заседании Берлинского физического общества выдвинул революционную гипотезу, что излучение света веществом происходит не непрерывно, а порциями, или квантами.

Слово «квант» происходит от латинского слова quantum, означающего «сколько» или «как много». Это словом, вообще означает часть, долю или порцию.

Согласно гипотезе Планка наименьшая порция энергии, которую несет излучение частотой

         (1), где  называется постоянной Планка.

Ее значение

Планк поэтически назвал новую постоянную «таинственным послом» из реального мира»

Развивая идею Планка Альберт Эйнштейн в 1905 г. для объяснения внешнего фотоэффекта предложил  современную корпускулярную теорию света, предположив, что свет не только излучается, но распространяется и поглощается отдельными порциями, т. е. является «набором» движущихся элементарных частиц (корпускул)  – фотонов.

«Корпускула» по-латыни означает «тельце», «маленькая частица».

По Теории Эйнштейна, монохроматическая электромагнитная волна частотой  представляет собой поток частиц – квантов или фотонов. Название «фотон» было предложено в 1928 г. Американским физиком Артуром Комптоном. Каждый фотон всегда движется со скоростью света с и несет квант энергии. При взаимодействии с веществом фотон ведет себя как частица и передает свою энергию не веществу в целом и даже не атому, а только отдельным электронам.

Энергия фотона может быть выражена через длину волны :

Когда фотон взаимодействует «один на один» с электроном, электрон забирает всю энергию фотона, которого с этого мгновения больше не существует. В этом случае говорят, что электрон поглотил фотон.

Излучая фотон, электрон теряет  часть своей энергии, которая уносится светом. При этом масса тела согласно формуле Эйнштейна уменьшается. Оказывается, что фотон – это удивительная частица, которая обладает  своей энергией m=0).

Благодаря Эйнштейну фотон встал в ряд с другими элементарными частицами, только в отличие от них он не имеет массы и «обречен» всегда летать со скоростью света.

3. Разработка алгоритма решения задачи

Энергия фотона может быть выражена через длину волны

Когда фотон взаимодействует «один на один» с электроном, электрон забирает всю энергию фотона, которого с этого мгновения больше не существует. В этом случае говорят, что электрон поглотил фотон.

Энергия фотона после соударения со свободным покоящимся электроном может быть выражена через длину волны

из (1) следует

Исходя из данной формулы, выполнив расчеты, получим значение энергии рассеянного фотона

Из закона сохранения импульсов следует:

Ох:   

Оy:   

Разделим второе выражение на первое, получим:

         

 – импульс падающего фотона,

 – импульс рассеянного фотона.

             

Косинус угла рассеивания  определим, воспользовавшись формулой Комптона.

Рассчитаем комптоновскую длину волны электрона

                      

Рассчитаем угол, под которым вылетел электрон отдачи

       Итак                   

откуда       – угол вылета электрона отдачи.

Рассчитаем кинетическую энергию электрона отдачи

4. Блок-схема программы

 SHAPE  \* MERGEFORMAT

Начало

Конец

c=3*108

h=6.63*10-34

E0=0.511

E

E>0

Нет

Да

dl

dl>0

Нет

Да

E=E*n; dl=dl*nm; E0=E0*n

dl:=dl*nm;

E1=

lc=; f= 

Ek=

E1, f, Ek

5. Листинг программы

Program Foton;

uses crt;

const n=1.6E-13;  {1 Мэв=1.6*10 в -13 степени Дж}

      nm=1E-9;    {1 нанометр =10 в  -9 степени  метров}

var E,dl,c,h,e0,Temp:real;

{E - энергия фотона, dl - длина волны, Temp - временная переменная}

{c - скорость света, h - постоянная Планка,e0 - энергия покоя электрона}

  lc,E1,f,Ek:real;

    {E1 - энергия рассеянного фотона, f - угол вылета электрона

    Ek - кинетическая энергия фотона, lc - длина волны в вакууме}

  cod:char;             {код клавиши}

begin

clrscr;                         {очистка экрана}

Textcolor(2);                   {установка цвета символов}

Gotoxy(33,9);                   {перемещение в позицию с координатами 33,9}

Writeln('КУРСОВАЯ РАБОТА ');    {вывод сообщения на экран }

Textcolor(4);

Gotoxy(25,12);

Writeln('Расчет энергии рассеянного фотона,');

Gotoxy(28,13);

Writeln('угла вылета электрона отдачи');

Gotoxy(22,14);

Writeln('и кинетической энергии электрона отдачи');

TextColor(6);

Gotoxy(35,23);

Write('Для продолжения нажмите клавишу <ПРОБЕЛ>');

While cod<>#32 do  {пока не нажата клавиша с кодом 32 (ПРОБЕЛ)}

 cod:=readkey;     {записать код нажатой клавиши в переменную cod}

clrscr;

TextColor(4);

Gotoxy(15,1);

Writeln('Ввод исходных данных и определение постоянных величин');

Writeln;

Textcolor(15);

repeat               {повторять}

Writeln('Введите значение энергии фотона рентгеновского излучения в МэВ');

Write('E=');

Readln(e);           {ввести значение переменной e}

until e>0;           {проверить  ложное условие e>0}

Writeln;

repeat

Writeln('Введите значение увеличения длины волны в нм');

Write('dl=');

Readln(dl);

until dl>0;

c:=3E+8;       {присвоить с значение 3*10 в 8 степени - скорость света}

Writeln;

Writeln('Скорость света в вакууме с=',c:9,' м/с');

h:=6.63E-34;

Writeln;

Writeln('Постоянная Планка h=',h:9,' Дж');

E0:=0.511;

Writeln;

Writeln('Энергия покоя электрона E0=',E0:5:3,' МэВ');

TextColor(6);

Gotoxy(35,23);

Write('Для продолжения нажмите клавишу <ПРОБЕЛ>');

Cod:=#0;              {очистить код клавиши}

While cod<>#32 do cod:=readkey;

clrscr;

TextColor(4);

Gotoxy(25,1);

Writeln('Анализ исходных данных');

Gotoxy(1,3);

TextColor(15);

Writeln('Выполним перевод значения величины энергии фотона (E),');

Writeln('энергии покоя электрона (E0) из МэВ в Дж ');

Writeln('и значение длины волны (dl) из нанометра в метры учитывая, что:');

TextColor(14);

Writeln('1 МэВ=',n:10,' Дж');

Writeln('1 м=',nm:10,' нм');

Gotoxy(12,9);

TextColor(4);

Writeln('Результаты перевода исходных данных в систему СИ');

Writeln;

Temp:=e;

e:=e*n;

TextColor(15);

Writeln('E=',Temp:2:1,' МэВ=',e:9,' Дж');

Temp:=E0;

E0:=E0*n;

Writeln('E0=',Temp:4:3,' МэВ=',E0:9,' Дж');

Temp:=dl;

dl:=dl*nm;

Writeln('dl=',Temp:5:4,' нм=',dl:9,' м');

TextColor(6);

Gotoxy(35,23);

Write('Для продолжения нажмите клавишу <ПРОБЕЛ>');

cod:=#0;

While cod<>#32 do cod:=readkey;

clrscr;

TextColor(4);

Gotoxy(33,1);

Writeln('Решение задачи');

Gotoxy(23,2);

TextColor(3);

writeln('Расчет энергии рассеянного фотона');

TextColor(15);

{Вычисление энергии рассеянного фотона}

E1:=(E*h*c)/(h*c+E*dl);

TextColor(2);

Writeln('Энергия рассеянного фотона равна');

TextColor(15);

Writeln('E1=',E1:9,' Дж');

TextColor(14);

Writeln('Переведем Дж в МэВ');

TextColor(15);

Writeln('E1=',E1:9,' Дж = ',E1/n:2:1,'МэВ');

{Расчет угла вылета электрона отдачи}

TextColor(3);

Gotoxy(21,8);

Writeln('Расчет угола вылета электрона отдачи');

TextColor(14);

Writeln('Рассчитаем длину волны в вакууме');

TextColor(15);

lc:=h/E0*c;       {расчет длины волны в вакууме}

writeln('lc=',lc:9,' м');

TextColor(2);

Writeln('Угол вылета электрона отдачи равен');

TextColor(15);

{расчет угла вылета и перевод в градусы}

f:=arctan(sqrt((2*lc)/dl-1)/(E/E0+1))*180/pi;

Writeln('f=',f:4:2,'°');

{Расчет кинетической энергии электрона отдачи}

TextColor(3);

Gotoxy(18,14);

Writeln('Расчет кинетической энергии электрона отдачи');

TextColor(2);

Writeln('Кинетическая энергия электрона отдачи равна');

TextColor(15);

Ek:=(sqr(E)*dl)/(h*c+E*dl);

Writeln('Ek=',Ek:9,' Дж');

TextColor(14);

Writeln('Переведем Дж в МэВ');

TextColor(15);

Writeln('Ek=',Ek:9,' Дж = ',Ek/n:3:2,'МэВ');

TextColor(6);

Gotoxy(35,23);

Write('Для выхода нажмите клавишу <ПРОБЕЛ>');

cod:=#0;

While cod<>#32 do cod:=readkey;

end.

6. Результаты отладки и тестирования программы

Тест 1

Введите значение энергии фотона рентгеновского излучения в МэВ

E=0.3

Введите значение увеличения длины волны в нм

dl=0.0025

Скорость света в вакууме с= 3.00E+8 м/

Постоянная Планка h=6.63E-34 Дж

Энергия покоя электрона E0=0.511 МэВ

Энергия рассеянного фотона равна

E1= 3.0E-0014 Дж= 0.2 МэВ

Угол вылета электрона отдачи равен

f=31.5°

Кинетическая энергия электрона отдачи равна

Ek= 1.8E-0014 Дж= 0.11 МэВ

Тест 2

Введите значение энергии фотона рентгеновского излучения в МэВ

E=0.1

Введите значение увеличения длины волны в нм

dl=0.0015

Скорость света в вакууме с= 3.00E+8 м/

Постоянная Планка h=6.63E-34 Дж

Энергия покоя электрона E0=0.511 МэВ

Энергия рассеянного фотона равна

E1= 1.4E-0014 Дж= 0.1 МэВ

Угол вылета электрона отдачи равен

f=51.40°

Кинетическая энергия электрона отдачи равна

Ek= 1.7E-0017 Дж= 0.01 МэВ

Тест 3

Введите значение энергии фотона рентгеновского излучения в МэВ

E= 0.8

Введите значение увеличения длины волны в нм

dl=0.0030

Скорость света в вакууме с= 3.00E+8 м/

Постоянная Планка h=6.63E-34 Дж

Энергия покоя электрона E0=0.511 МэВ

Энергия рассеянного фотона равна

E1= 4.4E-0014 Дж= 0.3 МэВ

Угол вылета электрона отдачи равен

f=17.09°

Кинетическая энергия электрона отдачи равна

Ek= 8.4E-0014 Дж= 0.53 МэВ

Тест 4

Введите значение энергии фотона рентгеновского излучения в МэВ

E= 0.23

Введите значение увеличения длины волны в нм

dl=0.0045

Скорость света в вакууме с= 3.00E+8 м/

Постоянная Планка h=6.63E-34 Дж

Энергия покоя электрона E0=0.511 МэВ

Энергия рассеянного фотона равна

E1= 2.0E-0014 Дж= 0.1 МэВ

Угол вылета электрона отдачи равен

f=11.12°

Кинетическая энергия электрона отдачи равна

Ek= 1.7E-0014 Дж= 0.1 МэВ

Тест 5

Введите значение энергии фотона рентгеновского излучения в МэВ

E= 0.9

Введите значение увеличения длины волны в нм

dl=0.002

Скорость света в вакууме с= 3.00E+8 м/

Постоянная Планка h=6.63E-34 Дж

Энергия покоя электрона E0=0.511 МэВ

Энергия рассеянного фотона равна

E1= 5.9E-0014 Дж= 0.4 МэВ

Угол вылета электрона отдачи равен

f=23.44°

Кинетическая энергия электрона отдачи равна

Ek= 8.5E-0014 Дж= 0.53 МэВ

Тест 6

Введите значение энергии фотона рентгеновского излучения в МэВ

E= 0.4

Введите значение увеличения длины волны в нм

dl=0.0036

Скорость света в вакууме с= 3.00E+8 м/

Постоянная Планка h=6.63E-34 Дж

Энергия покоя электрона E0=0.511 МэВ

Энергия рассеянного фотона равна

E1= 3.0E-0014 Дж= 0.2 МэВ

Угол вылета электрона отдачи равен

f=18.40°

Кинетическая энергия электрона отдачи равна

Ek= 3.4E-0014 Дж= 0.21 МэВ

7. Выводы и предложения

В данной курсовой работе была рассмотрена тема «Энергия фотона рентгеновского излучения». При выполнении курсовой работы были рассмотрены вопросы из курса физики, которые позволили решить поставленную задачу. Программирование данной задачи на языке Паскаль состояло в линейном использовании физических формул. Следует обратить особое внимание на очень маленькие значения исходных данных, которые требовали применить тип данных Extended для результатов вычислений. Линейный алгоритм был дополнен циклической конструкцией Repeat … until, позволяющей ввести правильные исходные данные (не равные нулю). Программа  решения была реализована графически в виде блок-схемы, где четко прослеживается последовательность выполнения действий. Представленная курсовая работа наглядно демонстрирует практическую связь математики, физики и информатики, так как программировались математические вычисления решения задачи из курса физики.

Литература

1.     Абрамов С.А., Зима В.С. Начало программирования на языке Паскаль. – М.: Наука, 1987. – 112 с.

2.     Вальвачев А.Н., Крисевич В.С. Программирование на языке Паскаль для персональных ЭВМ ЕС: Справочное пособие. – Мн.: Вышэйшая школа, 1989. – 223 с.

3.     Дробышевский Р.В., Лифенко А.П., Персональный компьютер для начинающих. – Л.: ИМА–пресс, 1990. – 88 с.

4.     Жилко В.В., Лавриненко А.В., Маркович Л.Г. Физика; Учеб. пособие для 10-го кл. общеобразоват. шк. с рус. яз. обучения. – Мн.: Народная асвета, 2001. – 319 с.

5.     Жилко В.В., Лавриненко А.В., Маркович Л.Г. Физика: Учеб. пособие для 11-го кл. общеобразоват. шк. с рус. яз. обучения. – Мн.: Нар. асвета, 2002. – 382.

6.     Зуев Е.А. Язык программирования Turbo Pascal 6.0. – М.: Унитех , 1992. – 298 с.

7.     Котов В.М., Волков B.А., Лапо И.А., Методы алгоритмизации. – М.: Народная асвета, 1997. – 159 с.

8.     Павловский А.И., Пупцев А.Е., Гращенко П.Л, Информатика 10. – М.: Народная асвета, 2000. – 222 с.

9.     Фаронов В.В. Программирование на персональных ЭВМ в среде Турбо Паскаль. – М.: Изд-во МГТУ, 1990. – 590 с.

10.           Фаронов В.В. Турбо Паскаль 7.0. Начальный курс: Учеб. пособие. – М.: Нолидж, 1998. – 616 с.