Утвърдил: …………………..

                     

                      Декан

Дата .............................

СОФИЙСКИ УНИВЕРСИТЕТ “СВ. КЛИМЕНТ ОХРИДСКИ”

Факултет: Физически

Специалност: (код и наименование) Физика

 

 

 

 

 

 

 

 

 

 

....................................................................................

Магистърска програма: (код и наименование)

 

 

 

 

 

 

 

 

 

 

...................................................................................................................................................

 

УЧЕБНА ПРОГРАМА

 

 

 

 

Дисциплина:

Програмиране и изчислителна физика

Преподавател: доц. дфн Цветан Велинов

Асистент: ас Атанас Цонев

 

Учебна заетост

Форма

Хорариум

Аудиторна заетост

Лекции

30

Семинарни упражнения

15

Практически упражнения

45

Обща аудиторна заетост

90

Извънаудиторна заетост

Самостоятелна подготовка за тестове и практически задачи

25

Подготовка за изпити

60

Извънаудиторна работа над компютърните програми

50

Домашни упражнения

30

 

 

Обща извънаудиторна заетост

165

ОБЩА ЗАЕТОСТ

255

Кредити аудиторна заетост

3

Кредити извънаудиторна заетост

5.5

ОБЩО ЕКСТ

8.5

 

 


Формиране на оценката по дисциплината[1]

% от оценката

1.      

Изпит

50

2.      

Решаване на задачи по време на практическите упражнения

35

3.      

Тестове (два броя)

15

Анотация на учебната дисциплина:

Същността на курса е прилагане на числени методи с използване на компютри за изучаване на физични проблеми. В курса се набляга на физичните проблеми и основно внимание се отделя на последователността : физичен проблем – математично описание – числен метод- алгоритъм – програмна реализация – анализ на получените резултати. Този подход е следван системно навсякъде в разработените теми.

            Физичните проблеми разглеждани в курса засягат основни въпроси от интерес за студенти бакалаври и включват теми от: оптика, астрофизика, твърдо тяло, електрични вериги, механика, разпространение на вълни, дифузия и обработка на сигнали.

            Разгледани са следните числени методи:

-          методи за сумиране на редове;

-          методи за намиране на корен на едно нелинейно уравнение;

-          интерполация и екстраполация на данни;

-          методи за апроксимация на криви;

-          методи за намиране на екстремум на функция на една променлива;

-          методи за числено диференциране;

-          методи за числено интегриране;

-          методи за решаване на системи линейни уравнения;

-          методи за намиране на обратната матрица и изчисляване на детерминанта;

-          методи за намиране на собствени стойности и собствени вектори на симетрични матрици;

-          разлагане на периодична функция в ред на Фурие;

-          Фурие трансформация;

-          дискретно Фурие преобразование;

-          числено решаване на обикновени диференциални уравнения;

Езикът на програмиране е Фортран. Усвояват се и се затвърждават следните основни елементи: обща структура на програмата, типове данни и операции над тях, оператори за управление, масиви и работа с тях, оператори за въвеждане и извеждане на данни, подпрограми и работа с тях. В процеса на прилагане на числените методи с компютри студентите на практика се учат да използват различните елементи и структури на езика

Лекциите, задачите и различни допълнителни материали са качени на WEB страницата на факултета

Предварителни изисквания:

Познания за езика Фортран в рамките на курса “Начални компютърни знания”; математика, изучавана в задължителните курсове – математичен анализ, линейна алгебра, обикновени диференциални уравнения; физика в рамките на основните курсове по Механика, Молекулна физика, Електричество и магнетизъм и Оптика. Някои от тези курсове се четат паралелно с настоящия.

 

Очаквани резултати:

След завършване на курса студентите трябва да знаят и използват следните елементи на езика:

-          обща структура на една компютърна програма;

-           вътрешни (internal) функции;

-          типове данни и операции над тях;

-          логически оператори;

-          оператори за цикли;

-          подпрограми и работа с тях;

-          масиви и работа с тях;

-          четене и запис на данни във външен файл.

Успешно завършилите курса ще са в състояние да прилагат изброените в анотацията числени методи в работата си като физици за решаване на конкретни проблеми във физиката.

 

Учебно съдържание

Тема - лекции

часа

 

Елементи от програмирането. Данни и алгоритми

 

1

Езици за програмиране. Машинен език. Асемблер. Езици на високо ниво (алгоритмични езици). Етапи на писане и изпълнение на програмата. Обща структура на една програма на високо ниво (Фортран).

1

2

Представяне числата в изчислителните машини. Основни типове данни използвани при програмиране. Аритметика с цели и аритметика с реални числа. Понятие за структура на данни. Алгоритми.

1

 

Интерполация и екстраполация. Апроксимация на криви и пресмятане на функции

 

3

Интерполационна формула на Лагранж. Интерполиране със сплайн функции. Интерполация с рационални функции.

2

4

Методи за пресмятане на функции. Примери

1

 

Числено сумиране на редове, диференциране, интегриране

 

5

Константа на Маделунг – демонстриране на грешки от прекъсване и грешки от закръгляне. Разпространение на грешки. Демонстриране на важността на алгоритъма за бързината и точността на пресмятанията.

2

6

Дифракция на светлината. Интеграли на Френел. Методи на правоъгълниците, на трапеците и на Симпсон за пресмятане на интеграли. Контрол на грешката и адаптивна стъпка. Методи за числено диференциране.

3

 

Екстремуми и нули на нелинейни уравнения

 

7

Реликтово лъчение. Методи за намиране на корени на нелинейни уравнения – методи на разполовяването, на хордите и на Нютон.

2

8

Метод на златното сечение за намиране на екстремум.

1

 

Числени методи на линейната алгебра

 

9

Линейни електрични вериги. Решаване на системи линейни уравнения по метода на Гаус и разлагане на горна и долна матрица. Итерационен метод на Гаус-Зайдел.

4

10

Метод на Якоби за намиране на собствени стойности и собствени вектори на матрица. Намиране на собствените стойности на тридиагонални матрици.

2

 

Фурие анализ

 

11

Апроксимация на периодични сигнали с ред на Фурие. Фурие преобразование. Пример за Фурие преобразование: влияние на измервателния уред върху измервания сигнал. Конволюция

2

12

Корелация. Използване на корелацията за обработка на експериментални данни. Възстановяване на входния (измервания) сигнал:  деконволюция.

1

13

Честотен спектър на непрекъснат сигнал. Дискретно Фурие преобразование. Честота на Найквист. Изглаждане (филтриране) на експериментални данни с дискретно Фурие преобразование.

2

 

Обикновени диференциални уравнения

 

14

Движение на механични системи. Затихващи, периодични и непериодични движения на нелинейно махало – пример за неустойчивост на една механична система. Метод на Ойлер и подобни за решаване на обикновено диференциално уравнение.

2

15

Сходимост и устойчивост на методите за решаване на обикновени диференциални уравнения. Методи на Рунге-Кута.

2

16

Поведение на частица в потенциална яма. Задачи с гранични условия. Задачи за собствени стойности.

2

 

Тема – семинарни упражнения

 

1

Обща структура на една програма написана на език от високо ниво. Интегрирана среда за програмиране. Компилиране и създаване на изпълним код

1

2

Представяне на числата в компютрите. Бит, байт, дума. Двоична и шестнадесетична система.

1

3

Прости типове данни и операции над тях – цели, реални, логически, символни. Оператор за присвояване.

1

4

Ред на пресмятане на изразите. Вътрешни (internal) функции: абсолютна стойност, тригонометрични, логаритъм и други

1

5

Основни оператори. Логически изрази. Логически оператори if и case.

1

6

Оператори за цикли.

1

7

Архитектура на сложна програма. Подпрограми. Място на подпрограмите спрямо главната подпрограма и обръщение на главната програма към подпрограми.

2

8

Масиви от данни.

1

9

Входно-изходни операции. Текстов файл. Запис и четене от текстов файл.

1

10

Анализ и алгоритмизиране на задачи от лабораторните упражнения. Времето на тези занятия се избира така, че да съвпада с нови теми и основни програми за различни числени методи.

5

 

Тема – лабораторни упражнения (правене на компютърни програми)

 

1.

Пресмятане на машинния епсилон за данни от тип Real. Демонстриране на загуба на порядък при сумиране на числа.

3

2.

Числено пресмятане на функции

3

3.

Пресмятане на константата на Маделунг: директно и по метода на Евалд. Изчисляване на грешката от прекъсване.

3

4.

Намиране на температурата на реликтовото лъчение по метода на разполовяването и по метода на златното сечение.

6

5.

Изчисляване на интегралите на Френел с формулата на Симпсън. Пресмятане на интензитета на оптично поле зад екран с правоъгълен отвор.

6

6.

Решаване на система линейни уравнения по метода на Гаус. Прав и обратен ход. Избор на главен елемент.

6

7.

Разлагане на стъпковата функция в ред на Фурие. Визуализация и анализ на резултатите при различен брой членове на реда и дискутиране на феномена на Гибс.

3

8.

Използване на автокорелацията за изглаждане на експериментални данни. Визуализация на резултатите и обсъждане на степента на изглаждане в зависимост от броя данни, над които се извършва автокорелация.

6

9.

Числено пресмятане на движението на линеен осцилатор по метода на Ойлер и на Ойлер - Кромер. Демонстриране на неустойчивостта на метода на Ойлер за задачи с осцилиращи решения. Визуализация и обсъждане на резултатите

6

10.

Трептения на нелинеен осцилатор с триене. Демонстриране и обсъждане на трите режима: затихващ, осцилиращ и хаотичен.

3

 

 

Конспект за изпит

N

Въпрос

1.            

Езици на високо ниво. Етапи на реализиране на програма писана на език на високо ниво. Обща структура на програмата на Фортран.

2.            

Основни типове данни във Фортран и начин на съхранението им в паметта на компютъра. Аритметика с цели и аритметика с реални числа. Грешка от закръгляне и машинен епсилон. Ред на пресмятане на изразите.

3.            

Логически изрази, логически отношения и логически оператори. Структура за разклонение: блок IF.

4.            

Цикли и оператори за цикли.

5.            

Масиви и работа с тях.

6.            

Модулен принцип за създаване на една програма. Програмни единици и външни подпрограми във Фортран. Подпрограми процедури: структура и взаимодействие с главната програма.

7.            

Подпрограми функции: структура и взаимодействие с главната програма. Предаване на подпрограми като аргументи на други подпрограми.

8.            

Енергия на връзката на йонни кристали. Константа на Маделунг. Метод на Евжен за пресмятане на константата на Маделунг. Грешки от прекъсване.

9.            

Реликтово лъчене. Числено решаване на нелинейни уравнения – постановка на задачата. Метод на разполовяването.

10.        

Метод на секущите и метод на Нютон за намиране на корен на нелинейно уравнение.

11.        

Числено диференциране. Формули за първа и втора производна.

12.        

Дифракция на светлината и интеграли на Френел. Елементарни алгоритми за числено интегриране: метод на трапеците и метод на правоъгълниците.

13.        

Формули на Симпсън и Нютон – Коутс за числено интегриране. Адаптивни процедури.

14.        

Задачи на числените методи на линейната алгебра – общ преглед. Метод на Гаус за решаване на системи линейни уравнения. Частичен и пълен избор на главен елемент.

15.        

Геометрична интерпретация и матрична формулировка на задачата за система от линейни уравнения. Число на обусловеност и лошо обусловени матрици.

16.        

Метод на Гаус – Жордан. Метод на разлагане на горна и долна матрица.

17.        

Уточняване на решението на система линейни уравнения. Итерационен метод на Гаус-Зайдел.

18.        

Задачи възникващи при решаването на ОДУ. Елементарни числени методи за решаване на ОДУ – метод на Ойлер, подобрен и модифициран метод на Ойлер. Геометрична интерпретация.

19.        

Локална и глобална грешка при численото решение на ОДУ. Неустойчивост на метода на Ойлер за задачи с осцилиращи решения. Метод на Ойлер-Кромер.

20.        

Методи на Рунге – Кута за решаване на ОДУ. Точност и адаптивна стъпка при методите на Рунге – Кута.

21.        

Сходимост и устойчивост на методите за числено интегриране – общ случай. Видове неустойчивост.

22.        

Динамика на нелинейно махало.

23.        

Гранични задачи на ОДУ. Метод на пристрелката. Метод на крайните разлики.

24.        

Едномерно стационарно уравнение на Шрьодингер. Задача за собствени стойности. Собствени стойности на енергията на частица в едномерна потенциална яма.

25.        

Ред на Фурие. Условия за развитието на една функция в ред на Фурие. Фурие преобразование.

26.        

Свойства на преобразованието на Фурие. Конволюция. Използване на свойствата на коеволюцията за намиране на входния сигнал.

27.        

Корелация. Примери за използване на корелацията. Използване на автокорелацията за възстановяване на сигнал на фона на силен шум.

28.        

Дискретно Фурие преобразование.

 

Библиография

Основна литература:

1.      Лекциите към курса, качени на сайта: http://elearning-phys.uni-sofia.bg/~tvel/

2.       С. Кунин Вьчислительная физика, Мир (Москва 1992)

3.       Б. Сендов, В. Попов Числени методи, Наука и изкуство (София 1996)

4.       Дж. Форсайт, М. Малкълм, К. Молър Компютърни методи за математически пресмятания, Наука и изкуство (София 1986)

5.       N. Giordano Computational Physics, Prentice Hall (New Jersey 1997)

6.       W. Press, B. Flannery, S. Teukolsky, W. Vetterling Numerical Recipes: The art of Scientific Computing, Cambridge University Press (Cambridge, 1989)

7.       P. Devries, A first course in computational physics John Wiley & Sons (New York 1993)

8.       Всеки стандартен учебник по Fortran. Всяка година излизат нови, така че ми е трудно да препоръчам някоя конкретна книга

Допълнителна литература:

1.       P. MacKeown, D. Newman Computational Techniques in Physics, Adam Hilger (Bristol 1987)

2.       F. Vesely Computational Physics, Plenum Press (New York 1994)

3.       J. Thijssen, Computational Physics Cambridge University Press (Cambridge 1999)

4.       М. Нагао, Т. Катаяма, С. Уэмура, Структуры и базы данных Мир (Москва 1986)

5.       P. Harisson, Computational methods in Physics, Chemistry and Biology, John Wiley & Sons (Chichester 2001)

6.       А. Ралстон Начален курс по числени методи, Наука и изкуство (София, 1972)

 

 

 

Дата: 27. 02 2013 г.                                                   Съставил:

 

 

                                                                                     /доц дфн Цветан Велинов/