Выпускная работа - Брестский государственный

advertisement
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Выпускная работа по
«Основам информационных технологий»
Аспирант кафедры теоретической физики
Тригук Валерий Владимирович
Руководитель:
профессор Феранчук Илья Давыдович
Минск – 2008 г.
Содержание
Содержание .................................................................................................................. 2
Применение системы символьных вычислений Maple в сфере квантовой
механике ....................................................................................................................... 3
Введение ................................................................................................................... 3
Численные вычисления против символьных. Обзор литературы ...................... 3
Использование готовых функций, определение новых ....................................... 6
Аналитическое и численное интегрирование ....................................................... 9
Программирование с помощью Maple ................................................................ 11
Примеры визуализации данных – построение графиков .................................. 14
Заключение ............................................................................................................. 16
Список литературы ................................................................................................ 16
Предметный указатель .............................................................................................. 18
Интернет-ресурсы в предметной области исследования ...................................... 19
Личный сайт в WWW ............................................................................................... 21
Граф научных интересов .......................................................................................... 22
Презентация кандидатской диссертации ................................................................ 23
Приложения ............................................................................................................... 24
2
Применение системы символьных вычислений Maple в
сфере квантовой механике
Введение
Современный персональный компьютер – это универсальный
инструмент, предназначенный для широчайшего круга задач. Один и тот же
набор компонентов, купленный однажды в магазине, может быть использован
для подготовки деловых документов, проведения финансовых операций. Этот
же набор может быть использован для хранения огромных массивов
информации, и для предоставления доступа к этой информации удалённо. Без
всяких изменений тот же набор может быть использован в качестве DVDплеера, музыкального центра и прочих аудио-видео развлекательных
устройств; а если в комплекте имеется ТВ-тюнер, то и телевизора. Тот же
компьютер может затем быть использован и в качестве игровой консоли,
поскольку для управления большинством современных компьютерных игр
достаточно клавиатуры и мыши. В этом списке намеренно пропущен один
важный пункт.
Многие современные пользователи компьютеров и не подозревают, что
само название «Computer» исторически сложилось от основного на тот момент
применения компьютера – проведения расчётов. Можно, конечно, возразить,
что все перечисленные выше применения компьютера действительно сводятся
к вычислениям – будь то определение суммы налога, прорисовка очередного
видеокадра или кадра в игре, наложение аудиофильтра при воспроизведении
звука и т.д. И это действительно так, причём вычислениями теперь занимается
не только центральный процессор, но и видеоускоритель, и даже звуковая
карта, сетевая контроллер, модем. Но речь не идёт о внутренних процессах,
происходящих «внутри» компьютера. Речь идёт непосредственно о
вычислениях, когда целью работы человека на компьютере является получение
результатов расчётов.
Незаменимыми помощниками ученых и инженеров стали системы
символьных вычислений. Многие математические операции, которые ранее
требовали многих часов работы с карандашом, бумагой и справочниками
(взятие производных, вычисление интегралов, аналитическое решение систем
дифференциальных уравнений) теперь выполняются с помощью доступного
персонального компьютера или ноутбука. О применении систем символьных
вычислений в физике и пойдёт речь в этой работе.
Численные вычисления против символьных. Обзор литературы
С появлением компьютеров появилась возможность проводить
алгебраические операции с целыми и вещественными числами. Вычисление
различных функций сводилось к разложению в ряд и ограничением некоторым
количеством слагаемых разложения. Поскольку разрабатывавшиеся программы
3
могли работать только с числами, многократно возросло значение различных
численных методов. Стали появляться и новые численные методы, не удобные
для применения «вручную», но дающие высокую точность при машинной
реализации. Уже этого было достаточно для выполнения сложнейших
вычислительных работ. В качестве примера можно привести статьи [1,2],
содержащие результаты вычисления волновых функций электронов,
радиальных плотностей и других характеристик атомов, полученных в рамках
метода Хартри — Фока. Следует также отметить, что название одного из
первых языков программирования – FORTRAN – расшифровывается как
FORmula TRANslator (перевод формул).
Применение компьютера в таком ракурсе не утратило своего значения и в
наши дни. Весьма успешно продаются различные специализированные
коммерческие комплексы. Хороший пример – комплекс для проведения
расчётов физических свойств твёрдых тел WIEN2k [3], с которым приходилось
много работать автору этой работы. Популярны и некоммерческие проекты –
abinit [4], SIESTA [5] (предназначенные для тех же целей). Все эти комплексы
разработаны на языке FORTRAN, который, к слову, к нынешнему времени
претерпел множество изменений. Компиляторы фортрана поддерживают
расширенные наборы команд современных процессоров, что позволяет
значительно повысить скорость вычислений и увеличить количество значащих
цифр.
Однако суть производимых операций осталась той же – это операции над
целыми и вещественными числами, не более того. Простой, и в то же время
наглядный пример такой машинной арифметики: 2  1,414213562373 . Такое
значение не является точным, а имеет погрешность порядка 10 13 .
Использование этого значения в качестве эталонного неизбежно приводит к
накоплению ошибок. Это может быть непринципиально, если требуемая
точность – 8 цифр, однако зачастую приходится контролировать процесс
накопления ошибок. При проведении операций сравнения чисел приходится
учитывать некоторую численную толерантность.
Естественно, подобные методы неспособны на выполнение операций
дифференцирования, неопределённого интегрирования, разложения в ряд и
многих других, если на входе и на выходе – алгебраическое выражение. Можно
вычислить производные в различных точках и протабулировать, но это будет
лишь таблица чисел.
Указанные недостатки привели к созданию систем символьных
вычислений (symbolic calculations), оперирующих не с числами, а с символами.
Их также называют системами компьютерной алгебры (Computer Algebra
Systems), хотя сфера их применения далеко не ограничивается одной алгеброй.
Результат вычисления квадратного корня из двух может озадачить: 2  2 . Но
это именно то представление, с которым привык работать физик или
математик. Решение уравнения x 2  2 как раз и будут представлены парой
чисел (или скорее выражений) 2 и  2 . Попытка вычислить производную
4
d sin 2 x
даёт значение 2 sin xcos x . Вычисление определённого интеграла также
x
сводится к получению некоторого точного символьного выражения, а не
численного значения с ограниченной точностью.
Одной из таких систем является коммерческий продукт Maple компании
Maplesoft, подразделения канадской Waterloo Maple inc. В одной из версий на
загрузочной заставке (именуемой на Западе просто как splashscreen) был девиз
– «Управляйте интеллектом тысяч математиков». И это действительно так –
объём встроенных функций в данной системе огромен. Большинство из них,
разумеется, предназначены для символьных вычислений. Поддерживаются и
операции с вещественными числами. Следует отметить, что точность таких
вычислений ограничивается уже не разрядностью регистров процессора и
может задаваться пользователем.
Существуют, конечно, и альтернативы. Система Mathematica компании
Wolfram Research, по многим оценкам, пользуется даже большей
популярностью. И хотя выбор той или иной системы можно списать на
банальную привычку, у автора сложилось несколько негативное отношение к
системе Mathematica из-за непривычного синтаксиса команд и медлительности
вычислений. Синтаксис Maple ближе к языкам программирования, а у автора
работы есть немалый опыт написания различных прикладных программ на
языках C++ и Java. Кроме того, некоторые конструктивные особенности языка,
применяемого в Maple, позволяют с лёгкостью реализовывать сложные
структуры и алгоритмы, реализация которых на Mathematica представляется
более затруднительной. Сравнивать скорость работы двух систем символьных
вычислений не так просто (различные операции могут требовать различного
времени), однако было надёжно установлено – скорость аналитического
интегрирования у Mathematica 6 примерно в 5 раз ниже, чем у Maple 10. Речь в
данном случае идёт не о работе интерфейса, отвечающего за прорисовку
красивых формул, а именно о работе ядра – «мозга» системы.
Разумеется, о такой сложной и столь же полезной системе на
сегодняшний день имеется огромное количество литературы. В большинстве
своём – это руководства, написанные как разработчиками, так и сторонними
авторами. Можно встретить как зарубежные издания [6, 7], так и
русскоязычные [8 — 14]. Отличным выбором для начинающих пользователей
будет любая из книг В.П. Дьяконова [8 — 10]. Следует сразу отметить, что
прекрасным руководством является весьма обширное описание, поставляемое
вместе с самим комплексом. Каждая функция, оператор, структура — имеют
детальное описание, получить которое можно с помощью сочетания клавиш
Ctrl+F1 (если курсор установлен на искомый символ). Кроме справочных
данных, в составе комплекса есть большое количество примеров использования
различных функций, организованное по разделам математики и других наук. С
другой стороны, хорошее печатное руководство предпочтительнее для
начинающих пользователей.
Кроме справочников и руководств, сегодня можно найти и приличный
объём литературы, посвящённый применению Maple для решения конкретных
5
задач [15 — 19], в том числе посвящённых именно вопросам квантовой
механики [20]. Это связано также и с возможностью расширения
функциональности Maple благодаря наличию в этой системе простого, но
достаточно эффективного языка программирования сверхвысокого уровня.
Кроме того, пользователь может расширять существующие возможности
встроенных функций, задавая новые правила и определения. Поскольку сама по
себе система Maple имеет весьма обширные возможности, то ни одна книга,
пожалуй, не в состоянии охватить весь спектр решаемых с помощью Maple
задач.
В этой работе не ставится цель систематизировать существующие
наработки в этой области или максимально заполнить существующие пробелы.
Вместо этого целью работы является демонстрация того, насколько удобна и
полезна система Maple применительно к использованию в сфере теоретической
физики. Автору хотелось бы привести примеры применения системы Maple из
собственного опыта. Поскольку работа автора связана с одним из разделов
теоретической физики – квантовой механики, основной упор будет сделан
именно на это направление. Работа ориентирована на читателя, не знакомого с
системой Maple, поэтому приводимые примеры подробно описаны.
Использование готовых функций, определение новых
Из квантовой механики известно, что в кулоновском
потенциальной энергией U r   
Ze
r
2
поле
с
нормированная радиальная волновая
функция электрона имеет вид
l
Zr
2 Zr   n
 2Zr  
f nl r   N nl 
 F  n  l  1, 2l  2,
e ,
n 
 n  
где F(a,b,c) – вырожденная гипергеометрическая функция,
нормировочный множитель:
1
Nnl
-
3
1  (n  l )!  2  2Z  2
N nl 

 .
2l  1!  2nn  l  1!  n 
Пусть перед нами стоит задача получить аналитический вид радиальной
волновой функции при заданных квантовых числах n и l, заряде ядра Z как
функцию от координаты r. В указанных формулах встречаются следующие
функции: возведение в степень, экспоненциальная функция, факториал и
вырожденная гипергеометрическая функция. Рассмотрим на примере каждую
из них.
Возведение в степень аналогично некоторым языкам программирования
(Бейсику, например):
> 5^(3/2);
6
5 5
Снова наглядно видно отличие символьных вычислений от «обычных».
Получить привычный численный результат можно с помощью встроенной
функции evalf:
> evalf(5^(3/2));
11.18033988
Довольно неприятной особенностью Maple является «нежелание»
упрощать алгебраические выражения:
> 16^(3/2);
16 16
Разумеется, решение всегда есть под рукой. Для упрощения выражения
достаточно использовать универсальную функцию simplify:
> simplify(16^(3/2));
64
Экспоненциальная
программистов образом:
функция
записывается
также
привычным
для
> exp(2);
e2
Вычислим численное значение этого выражения:
> evalf(exp(2));
7.389056099
Вычисление факториала может несколько озадачить программистов
формой записи, зато очень привычно для математиков:
> 23!;
25852016738884976640000
С вырожденной гипергеометрической функцией несколько сложнее. В
Maple определена наиболее общая форма гипергеометрической функции
hypergeom([n1, n2, ... ], [d1, d2, ... ], z), где [n1, n2, ... ] – список верхних
параметров, [d1, d2, ... ] – список нижних параметров. Для случая вырожденной
гипергеометрической функции следует указать по одному параметру для
каждого списка:
> hypergeom([-2],[2],x);
7
hypergeom ( [ -2 ], [ 2 ], x )
Чтобы получить явный вид этого выражения, воспользуемся функцией
simplify:
> simplify(hypergeom([-2],[2],x));
1
1x x2
6
Поставим задачу – определить f как функцию нескольких переменных –
квантовых чисел n, l, заряда ядра Z и координаты r. Задание функции в Maple
можно продемонстрировать простым примером:
> f1:=(a,b,c)->a^3+b^2+c;
f1 := ( a, b, c ) a 3b 2c
> f1(1,2,3);
8
Обращаю внимание читателя, что в качестве параметров функции могут
использоваться не только числа, но и любые другие символы и выражения:
> f1(2,x,y);
8x2y
> f1(sin(x),x+y,sqrt(z));
sin ( x ) 3( xy ) 2 z
Сначала определим нормировочный множитель как функцию от n, l, Z:
> N:=(n,l,Z)->simplify(1/(2*l+1)!*((n+l)!/(2*n*(n-l1)!))^(1/2)*(2*Z/n)^(3/2));
( 3/2 )


( n l )!
Z
2

 


n ( n l1 )!  n 


N := ( n , l, Z ) simplify 

( 2 l1 )!


И затем саму функцию f:
> f:=(n,l,Z,r)->simplify(N(n,l,Z)*(2*Z*r/n)^l*hypergeom([n+l+1],[2*l+2],2*Z*r/n)*exp(-Z*r/n));
f := ( n , l, Z, r )
l


2Zr
2 Z r   



simplify  N( n, l, Z ) 
 hypergeom  [ nl1 ], [ 2 l2 ],
e
n 

 n 

8
Zr

n  



Для примера определим вид радиальной волновой функции 3s-электрона
(n=3, l=0) в поле с Z=6:
> f(3,0,6,r);
4
( 2 r )
2 ( 312 r8 r2 ) e
3
Аналитическое и численное интегрирование
Для демонстрации возможностей интегрирования вспомним, что
радиальная волновая функция электрона будет нормированной в том случае,
если выполняется условие:

 f r r
2
dr  1
0
Аналитическое интегрирование в Maple выполняется командой int.
Синтаксис вызова продемонстрируем на примере:
> int(sin(x)^2,x=0..Pi);

2
Pi – это, конечно, константа  . Некоторое неудобство может вызвать тот
факт, что символ pi на выводе обозначается той же малой греческой «pi», но не
имеет какого-то значения. Например:
> int(sin(x)^2,x=0..pi);
1

 sin (  ) cos (  )
2
2
Итак, проверим, удовлетворяет ли заданная нами функция f(n,l,Z,r) этому
условию. Поскольку гипергеометрическая функция сводится к простому
полиному только при определённых условиях, накладываемых на параметры a
и b, зададим в явном виде квантовые числа n и l, а также заряд Z:
> int(f(2,0,8,r)^2*r^2,r=0..infinity);
1
Здесь следует обратить внимание на некоторые моменты. Символом
infinity обозначается бесконечность. Результат интегрирования – единица, и
этот результат является абсолютно точным. Дело в том, что интегрирование
проводилось аналитически. Но его можно провести и численно:
> evalf(Int(f(2,0,8,r)^2*r^2,r=0..infinity));
9
1.000000000
Теперь результат представляет собой вещественное число. Количество
нулей указывает на точность результата. Следует обратить внимание на форму
записи – команда Int записана с прописной буквы. Это так называемая инертная
форма, при которой значение интеграла не вычисляется:
> Int(f(2,0,8,r)^2*r^2,r=0..infinity);

2
( 4 r )

 256 ( 14 r )2 ( e
)
r2 d r

0
Команда evalf, о которой упоминалось ранее, в данном контексте
предназначена для численного вычисления интеграла.
Попробуем проверить выполнение условия нормировки для
произвольного значения Z:
> int(f(2,0,Z,r)^2*r^2,r=0..infinity);
1 ( Z r ) 2 2 1 ( Z r ) 4 4
( Z r )
( Z r )
lim e
e
Z r e
Z r  e
Z r 1
2
8
r
Вместо привычной единицы получен, казалось бы, довольно странный
результат. Всё дело в том, что Maple не знает ничего о параметре Z. Следует
ввести некоторые ограничения:
> assume(Z>0);
> int(f(2,0,Z,r)^2*r^2,r=0..infinity);
1
Теперь Maple достоверно известно, что заряд положительный, и интеграл
вычисляется без проблем.
Для иллюстрации операций интегрирования приведём ещё один пример.
При вычислении матричных элементов двухчастичного оператора
кулоновского отталкивания
1
 
r1  r2
приходится иметь дело с интегралами вида

 r1 r2k
 2
r1k
'
2
'
2












R
r
R
r
R
r
R
r
r
dr

R
r
R
r
r
dr

0 1 1 1 0 r1k 1 2 2 2 2 2 2 r r2k 1 2 2 2 2 2 2  r1 dr1
1



'
1
10
Основная сложность здесь – переменные пределы интегрирования
«внутренних» интегралов. Такие интегралы лучше всего вычислять
аналитически. Приведём пример вычисления подобного интеграла для случая
k=0, все радиальные волновые функции соответствуют состоянию 1s:
> assume(Z>0);
> R1:=f(1,0,Z,r1);R2:=f(1,0,Z,r2);
R1 := 2 Z~
( 3/2 )
( 3/2 )
e
( Z~ r1 )
( Z~ r2 )
R2 := 2 Z~
e
> inner1:=int(1/r1*r2^2*R2^2,r2=0..r1);
1e
( 2 Z~ r1 )
2 e
( 2 Z~ r1 )
( 2 Z~ r1 )
Z~ r1 2 e
inner1 := 
r1
> inner2:=int(1/r2*r2^2*R2^2,r2=r1..infinity);
Z~ 2 r1 2
( 2 Z~ r1 )
inner2 := ( 12 Z~ r1 ) Z~ e
> inner_integral:=simplify(inner1+inner2);
1e
( 2 Z~ r1 )
( 2 Z~ r1 )
e
Z~ r1
inner_integral := 
r1
> outer_integral:=int(R1^2*r1^2*inner_integral,r1=0..infinity);
5 Z~
outer_integral :=
8
Знак «~» после Z указывает на то, что на величину Z наложены
некоторые ограничения командой assume.
Программирование с помощью Maple
Выполнение команд пошагово не всегда бывает удобным. В «реальных
условиях» бывает необходимым составление алгоритмов с ветвлениями и
повторениями. Maple позволяет реализовывать такие алгоритмы в виде
процедур, причём в тексте этих процедур пользователь может использовать как
всё богатство встроенных функций Maple, так и определённые самим
пользователем функции.
Поскольку на данном этапе обучения в аспирантуре основной задачей
автора этой работы является исследование новых методов вычисления
физических характеристик реальных атомных систем, возникла необходимость
«передать» Maple сведения о заполнении электронных оболочек в атомах
согласно периодической системе элементов Менделеева. Как известно, для
элементов от первого (водород) до восемнадцатого (аргон) заполнение
электронных оболочек происходит по тривиально простому правилу – по
возрастанию квантовых чисел n,l.
Приведу пример процедуры, предназначенной для формирования
массива, содержащего количество электронов на каждой из оболочек с
данными n и l:
> make_simple:=proc(Z)
11
local i,n,l,m,s,occ;
for n from 1 to 7 do
for l from 0 to n-1 do
occ[n,l]:=0;
end do;
end do;
n:=1;l:=0;m:=0;s:=0;
for i from 1 to Z do
occ[n,l]:=occ[n,l]+1;
s:=s+1;
if s>1 then s:=0;m:=m+1; end if;
if m>l then l:=l+1;m:=-l; end if;
if l>(n-1) then l:=0;m:=0;n:=n+1; end if;
end do;
return occ;
end proc:
make_simple – имя процедуры. По сути, это такой же символ, как и любой
другой символ в Maple, только ему присвоено не численное значение и не
простая формула. Значением данного символа является процедура. Вызов этой
процедуры возможен только с указанием одного и только одного параметра – Z.
Далее, следует обратить внимание на вторую строку. Директива local
указывает, что в данной строке описываются локальные переменные. Значения
этих переменных внутри процедуры изначально не определены, даже если вне
процедуры переменные с такими же именами имеют конкретные значения.
Далее в тексте процедуры приводится вложенный цикл «for». Синтаксис
похож на синтаксис языка Бейсик с некоторыми отличиями. Внимательный
программист может удивиться – почему не определён массив, не указана его
размерность. Действительно, в Maple массивы можно определять и явно, с
указанием диапазона изменения каждого индекса. В то же время возможно и
неявное задание так называемого хешированного массива. В этом случае
память выделяется динамически на каждый новый элемент массива, а в
качестве индексов массива может использоваться любое выражение (в данном
случае – пара чисел n,l).
Далее в тексте процедуры читатель может увидеть пример применения
оператора if. В предпоследней строчке директивой return укащывается
возвращаемое процедурой значение. Если эта директива отсутствует, то
процедура возвращает результат последней операции, что далеко не всегда
может быть удобно. Кроме того, при выполнении директивы return процедура
немедленно завершает работу.
Чтобы продемонстрировать «осязаемый» пример работы такой
процедуры, добавим ещё одну и посмотрим результаты выполнения:
> make_formula:=proc(occ)
local n,l,s,lnames;
lnames:=["s","p","d","f","g","h","i"];
s:="";
12
for n from 1 to 7 do
for l from 0 to n-1 do
if occ[n,l]>0 then
s:=cat(s,n,lnames[l+1],occ[n,l]," ")
end if;
end do;
end do;
return(s);
end:
> make_formula(make_simple(4));
"1s2 2s2 "
> make_formula(make_simple(9));
"1s2 2s2 2p5 "
> make_formula(make_simple(12));
"1s2 2s2 2p6 3s2 "
> make_formula(make_simple(18));
"1s2 2s2 2p6 3s2 3p6 "
Здесь демонстрируется возможность работы Maple со строковыми
величинами. Функция cat предназначения для объединения строк.
Поскольку дальнейшее заполнение электронами оболочек в соответствии
с периодической системой элементов Менделеева является не настолько
тривиальным, код для генерации заполнения для всей таблицы здесь не
приводится.
В качестве ещё одного примера можно привести процедуру вычисления
эффективных зарядов и энергии атома в нулевом приближении согласно работе
[21]:
Z n2,l
 pˆ 2 Z n,l 
E Z , N    g nlms Rn,l Z n,l , r   
 Rn,l Z n,l , r    g nlms 2 ;
r 
2n


 2
n 1 n1 1 l1
1 n 1 l1
Z n ,l  Z     g nlms n ,l1     g nl1m1s1  n ,l ;
4 l1 m1  ll s 1
n1 1 l1 1 m1   l1 s  1
0 
 n ,l  1 

N n ,l

l l  1
1
l l  1
;  n ,l  1   
;
2
6
n
n2
nmax n 1
l
  

1;
n 1 l  0 m   l s  1
> Z_effnl:=proc(occ,Z_ya,n,alpha,beta,l0)
local Zeff,i,l;
Zeff:=Z_ya;
for i from 1 to n-1 do
for l from 0 to i-1 do
Zeff:=Zeff+alpha-occ[i,l]*(1-beta*l*(l+1)/n^2);
end do;
end do;
for l from 0 to n-1 do
#print(l,l0,Zeff,occ[n,l]-1);
if l<>l0 then
Zeff:=Zeff-occ[n,l]/4*(1+1/6+beta*l*(l+1)/n^2);
else
Zeff:=Zeff-(occ[n,l]-1)/4*(1+1/6+beta*l*(l+1)/n^2);
13
end if;
#print(l,l0,Zeff);
end do;
#Zeff:=Zeff+1/4;
return Zeff;
end proc:
> E_nl:=(occ,Z_ya,Z_eff,n,alpha,beta,l)->-occ[n,l]*Z_eff^2/2/n^2:
> calculate_energy:=proc(occ,Z_ya,alpha,beta)
local E,Zya,mm,n,l,i,densities,density,radiuses,radius;
E:=0;Zya:=Z_ya;
for n from 1 to 7 do
for l from 0 to n-1 do
if occ[n,l]>0 then
E:=E+E_nl(occ,Z_ya,Z_effnl(occ,Z_ya,n,alpha,beta,l),n,alpha,beta,l
);
end if;
end do;
end do;
return evalf(E);
end proc:
> calculate_energy(make_simple(4),4,0.576,0.412472);
-15.05628080
> calculate_energy(make_simple(12),12,0.576,0.412472);
-207.1390730
> calculate_energy(make_simple(18),18,0.576,0.412472);
-546.3125362
Примеры визуализации данных – построение графиков
Полученные в результате расчётов численные данные чаще всего бывает
удобно представить в виде графиков. К примеру, одной из характеристик атома
является радиальная электронная плотность D(r). Ниже приведена процедура
вычисления радиальной плотности и результат вычисления для атома аргона.
> calculate_density:=proc(occ,Z_ya,alpha,beta)
local E,Zya,mm,n,l,i,densities,density,radiuses,radius;
E:=0;Zya:=Z_ya;
density:=0;
for n from 1 to 7 do
for l from 0 to n-1 do
if occ[n,l]>0 then
density:=density+occ[n,l]*f(n,l,Z_effnl(occ,Z_ya,n,alpha,beta,l),r
)^2;
end if;
end do;
end do;
return density;
end proc:
14
>
plot(subs(r=10^r1,calculate_density(make_simple(18),18,0.576,0.412
472)*r^2),r1=-3..0.5);
>
plot3d(subs(r=10^r1,calculate_density(make_simple(18),18,alpha,0.4
12472)*r^2),r1=-3..0.5,alpha=0..1,axes=boxed);
Первый график демонстрирует изменение радиальной плотности с
изменением координаты r, причём ось r — логарифмическая. Второй график
демонстрирует зависимость радиальной плотности от величины параметра
alpha. Команда subs предназначена для замены одного выражения другим.
К сожалению, возможности Maple по построению графиков неидеальны,
и для построения готовых к печати высококачественных графиков чаще
приходится прибегать к помощи специализированных программ (автор
предпочитает gnuplot), способных более тонко настроить параметры
отображения кривых, осей, подписей и т.д. В то же время с помощью Maple
несложно реализовать процедуру для вывода полученных результатов в
текстовый файл, готовый к обработке сторонней программой:
> log_line_to_file:=proc(delimiter,output,fd)
local i;
for i from 1 to nops(output) do
FileTools[Text][WriteFloat](fd,evalf(output[i]));
if i<nops(output) then
FileTools[Text][WriteString](fd,delimiter) end if;
end do;
15
end proc:
> log_data_to_file:=proc(filename,delimiter,output)
local i,fd;
fd:=FileTools[Text][Open](filename,overwrite=true);
for i from 1 to nops(output) do
log_line_to_file(delimiter,output[i],fd);
if i<nops(output) then FileTools[Text][WriteString](fd,"\n") end
if;
end do;
FileTools[Text][Close](fd);
end proc:
Процедура log_data_to_file позволяет выводить табличные данные output
(они должны быть организованы в виде двухуровневого списка или двумерного
массива) в файл с именем filename, используя для отделения одного значения от
другого разделитель delimiter.
Заключение
В этой работе были продемонстрированы широкие возможности системы
Maple применительно к некоторым проблемам квантовой механики. Дано
подробное описание самого принципа символьных вычислений и их коренного
отличия от численных. Подробно рассмотрены вопросы, связанные с
определением функций пользователя, аналитическим и численным
интегрированием. Приводится ряд примеров программирования на встроенном
в Maple языке программирования из опыта автора. Даны примеры визуализации
полученных численных результатов на двумерных и трехмерных графиках.
Приведён пример процедуры для экспорта табличных данных в текстовый файл
для последующей обработки другими программными комплексами.
Ограничение, накладываемое на объём работы, не позволяет рассмотреть
другие весьма полезные возможности – аналитическое и численное решение
дифференциальных уравнений и систем; операции с векторами, матрицами,
тензорами; различные операции и формулы из комбинаторики и т.д.
Резюмируя изложенное, следует отметить: Maple – весьма удобный и
полезный инструмент любого физика. Множество имеющихся функций и
встроенный язык программирования позволяют сократить время выполнения
рутинных операций на многие порядки. В то же время Maple никоим образом
не должен заменять самого учёного или его работу целиком. Любой
полученный результат следует тем или иным способом проверить. Даже
простая программа не защищена от скрытых ошибок, а такая колоссальная
система как Maple – тем более.
Список литературы
1 Fischer, F.C. Average-energy-of-configuration Hartree-Fock results for the atoms
helium to radon/ F.C. Fischer // At. Data Tables. 1972, vol. 4. P. 301 — 399.
2 Desclaux, J.P.. Relativistic Dirac-Fock expectation values for atoms with Z = 1 to
Z = 120 / J. P. Desclaux // At. Data Tables. 1973, Vol. 12. — P. 311-406
16
3 Blaha, P. WIEN2k: an augmented plane wave + local orbitals program for
calculating crystal properties / P. Blaha [et al] // Vienna University of
Technology. – 2001. – 180 p.
4 Gonze, X. First-principles computation of material properties : the ABINIT
software project. / X. Gonze [et al] // Computational Materials Science 25, 2002.
P. 478-492.
5 J. M. Soler. The Siesta method for ab initio order-N materials simulation / Soler
J.M. [et al] // J. Phys.: Condens. Matter 14, 2002. P. 2745-2779
6 Char, B.W. First Leaves: A Tutorial Introduction to Maple V. / B. W. Char. —
New York: Springer, 1992. — 253 p.
7 Corless, M.R. Essential Maple 7: an introduction for scientific programmers / R.
M. Corless. — New York: Springer, 2002. — 282 p.
8 Дьяконов, В.П. Математическая система Maple V R3/R4/R5 / В.П. Дьяконов.
— М.: Солон, 1998. — 399 с.
9 Дьяконов, В.П. Maple 7: учебный курс. / В.П. Дьяконов. — Спб.: Питер,
2002. — 672 с.
10 Дьяконов, В.П. Maple 9.5/10 в математике, физике и образовании. / В.П.
Дьяконов.— М.: СОЛОН-Пресс, 2006. — 720 с.
11 Говорухин, В.Н. Компьютер в математическом исследовании / В. Н.
Говорухин , В. Г. Цибулин. — Спб.: Питер, 2001. — 624 с.
12 Прохоров, Г.В. Пакет символьных вычислений Maple V / Г.В. Прохоров,
М.А. Леденев, В.В. Колбеев. — М: Компания Петит, 1997. — 200 с.
13 Сдвижков, О.А. Математика на компьютере: Maple 8 / О.А. Сдвижков. М.:
СОЛОН-Пресс, 2003. — 176 с.
14 Аладьев, В.З. Эффективная работа в Maple 6/7 / В. З. Аладьев. — М.:
Лаборатория Базовых Знаний, 2002. — 336 с.
15 Аладьев, В.З. Решение физико-технических и математических задач с
пакетом Maple V. / В.З. Аладьев, М.А. Богдавичюс. — Вильнюс: Техника,
1999. — 686 с.
16 Аладьев, В.З. Maple 6: Решение математических, статистических и физикотехнических задач / В.З. Аладьев, М.А. Богдавичюс. — Москва:
Лаборатория Базовых Знаний, 2001 — 824 с.
17 Матросов, А.В. MAPLE 6. Решение задач высшей математики и механики
/А.В. Матросов. — СПб.: БХВ-Петербург, 2004. — 526 с.
18 Аладьев, В.З. Дополнительные функциональные средства математического
пакета Maple релизов 6 и 7 / В.З. Аладьев, В.А. Ваганов. — Таллинн:
Международная Академия Ноосферы, 2002, 312 с.
19 Гандер, В. Решение задач в научных вычислениях с применением Maple и
MATLAB / В. Гандер, И. Гржебичек; пер. с англ. Иордана Тончева
Иорданова. — Минск: Вассамедиа, 2005. — 520 с.
20 Horbatsch, М. Quantum Mechanics Using Maple / M. Horbatsch. New York:
Springer, 1995.
21 Тригук В.В., Феранчук И.Д. О нулевом приближении для гамильтониана
атома //Весці НАН Беларусі. Сер. фіз.-мат. навук (в печати).
17
Предметный указатель
subs, 14
A
W
abinit, 3
assume, 9
Waterloo Maple inc, 4
WIEN2k, 3
C
А
calculate_density, 13
calculate_energy, 13
Computer, 2
Аналитическое интегрирование, 8
Б
E
Бейсик, 11
evalf, 6, 9, 13, 15
exp, 6
В
Возведение в степень, 5
вырожденная гипергеометрическая функция, 5, 6
F
for, 11
FORTRAN, 3
Г
график, 13
G
М
gnuplot, 15
матричный элемент, 9
H
О
hypergeom, 6
Определение функции, 7
I
П
if, 11
int, 8, 9, 10
процедура, 10
L
Р
log_line_to_file, 15
радиальная волновая функция, 5
M
С
make_formula, 12
make_simple, 11
Maple, 4
система символьных вычислений, 3
Ф
P
факториал, 6
Pi, 8
proc, 11, 12, 13, 14, 15
Ч
Численное интегрирование, 9
R
Э
return, 11
Экспоненциальная функция, 6
S
SIESTA, 3
simplify, 6, 7, 10
18
Интернет-ресурсы в предметной области исследования
Успехи физических наук [Электронный ресурс]. Режим доступа:
http://ufn.ru/. – Дата доступа: 17.12.2008.
Сайт российского журнала «Успехи физических наук». Статьи доступны
в электронном виде.
The journals published by Ioffe Institute [Electronic resource]. Mode of access:
http://www.ioffe.ru/journals/ . Date of access: 17.12.2008.
Журналы, публикуемые Физико-техническим институтом им.А.Ф.Иоффе
РАН. Доступны электронные версии статей.
JETP Letters [Electronic resource]. Mode of access: http://jetpletters.ac.ru/ .
Date of access: 17.12.2008.
Журнал «Письма в ЖЭТФ». Статьи доступны в электронном виде.
Журнал
«Квант»
[Электронный
ресурс].
Режим
доступа:
http://kvant.mirror1.mccme.ru/. – Дата доступа: 17.12.2008.
Сайт известного российского журнала «Квант». Выпуски журнала
доступны в электронном виде.
arXiv.org e-Print archive [Electronic resource] . Mode of access:
http://arxiv.org/ . Date of access: 17.12.2008
крупнейший бесплатный архив электронных препринтов научных статей
по физике, математике, астрономии, информатике и биологии.
Physical Review Online Archive (PROLA) [Electronic resource]. Mode of
access: http://prola.aps.org/ . Date of access: 17.12.2008
Сайт научных журналов Physical Review. Электронные версии статей
доступны только платно. Абоненты ЦНБ имеют возможность загружать статьи
по очень низким ценам.
ScienceDirect
[Electronic
resource].
Mode
of
access:
http://www.sciencedirect.com/ . Date of access: 17.12.2008
Сайт научных журналов издательства Elsevier. Электронные версии
статей доступны только платно. Абоненты ЦНБ имеют возможность загружать
статьи по очень низким ценам.
Библиотека научной литературы LIB.org.by [Электронный ресурс]. Режим
доступа: http://lib.org.by/. – Дата доступа: 17.12.2008.
Сайт содержит огромное количество книг по различным отраслям науки,
в том числе физики. Единственное пожелание — antileech-система на сайте
работает довольно странно.
19
Поиск электронных книг [Электронный ресурс]. Режим доступа:
http://www.poiskknig.ru/. – Дата доступа: 17.12.2008.
Ресурс, предоставляющий возможность поиска по различным
электронным библиотекам.
Электронный каталог ЦНБ [Электронный ресурс]. Режим доступа:
http://libcat.bas-net.by/ .– Дата доступа: 17.12.2008.
Очень удобный и быстрый электронный каталог ЦНБ им. Я.Коласа НАН
Беларуси. Позволяет сделать заказ на литературу и следить в реальном времени
за его выполнением.
Wikipedia [Electronic resource]. Mode of access: http://wikipedia.org/ . Date
of access: 17.12.2008
Известнейшая свободная и открытая многоязычная электронная
энциклопедия. Открытость позволяет быстрыми темпами наращивать
содержание и качество. В то же время некоторые статьи содержат мало
информации или непроверенную инфромацию.
Citizendium
[Electronic
resource].
Mode
of
access:
http://en.citizendium.org/wiki/Welcome_to_Citizendium
. Date of access:
17.12.2008
Менее известная свободная электронная энциклопедия. Старается
избежать ошибок Википедии; их девиз - «We aim at reliability and quality, not
just quantity».
20
Личный сайт в WWW
Личный сайт доступен по адресу http://trigukvv.narod.ru/
21
Граф научных интересов
Аспиранта Тригука Валерия Владимировича, физический факультет
Специальность «теоретическая физика»
Смежные
специальности
Основная специальность
Сопутствующие
специальности
01.01.03 –
математическая
физика
01.04.02 –
теоретическая физика
01.04.07 - физика
конденсированного
состояния
1. Развитие
математических
методов теоретической
физики
1. Математические методы
теоретической физики
(развитие и применение
теории операторов,
алгебр, групп и их
представлений,
геометротопологических
подходов).
2. Квантовая механика.
Математические
вопросы квантовой
механики (операторные,
теоретико-групповые,
геометрические и
другие методы
описания стационарных
и нестационарных
квантовых систем).
1. Химическая связь и
кристаллическая
структура материалов.
2. Атомная и электронная
структуры
конденсированного
состояния, их
формирование и
перестройка при
внешних воздействиях.
01.01.07 –
вычислительная
математика
1. Теория и методы
параллельных
вычислений.
2. Численные методы и
алгоритмы решения
прикладных задач,
возникающих при
математическом
моделировании
естественнонаучных,
научно-технических,
социальных и других
проблем.
22
Презентация кандидатской диссертации
Оригинал
презентации
http://trigukvv.narod.ru/presentation.zip
доступен
23
по
адресу:
Приложения
24
25
26
Download