Maple для студентов физиков. Часть 1. Учебное пособие
.pdf
Глава 4. Расчеты
. . . |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f (a) (x a)2 |
|
|
|
|
|
|
|
|
|
|
x |
2 |
|
||||
|
|
|
|
|
|
|
|
|
|
|||||
f (x) f (a) |
|
f (a) (x |
a) |
|
|
|
|
|
|
|||||
x |
|
|
|
|
2! |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f (a) |
(x a)3 |
|
|
|
|
|
|
|
||
|
x |
3 |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
3! |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
. . .
Maple знает эту теорему и может ее применить для генерирования всевозможных рядов с помощью команды taylor.
Например, для функции sech:
> taylor(sech(x),x=0,20);
Опция x = 0 говорит Maple, что разложение надо делать вблизи 0. Цифра 20 говорит, что надо включать члены вплоть для x20.
Задача 3.19
Найдите разложение в ряд Тейлора для следующих функций вблизи x = 0 при сохранении членов до x10.
(a) sin(x) |
(b) cos(x) |
(c) arctan(x) |
(d) ex |
(e) ln(1 + x) |
(f) (1 + x)p |
Ответы выглядят впечатляюще, но в большинстве физически значимых задач оставляют первые два члена и поэтому можно работать, не загромождая выкладки, чему поможет команда taylor(f(x),x=0,3), которая дает члены до x2.
Получив разложение в ряд, вы захотите использовать это выражение в дальнейших расчетах. Maple позволяет свернуть выражение,
созданное в taylor в полином: convert(...,polynom), где ... – это имя,
которое вы давали ряду Тейлора. Например,
>f:=taylor((1+x^2)^(3/2),x=0,5);
>f:=convert(f,polynom);
101
Maple для студентов физиков
Задача 3.20
Maple также может разложить в ряд Тейлора специальные функции Найдите разложения:
(a)J0(x),
(b)I0(x),
(c)K(x) (полный эллиптический интеграл EllipticK),
(d)Γ(x).
Для (a)-(c) точка разложения x = 0, для (d) x = 1. Разлагать до x10. Ответ ужасен – посмотрите, можете ли вы получить нечто более приемлемое с помощью evalf, или, сказав Maple разложить вблизи x
= 1.0 (снова десятичная точка).
Задача 3.21
Теперь попробуем разложить функцию Бесселя K0(x) около x = 0. Maple не сможет это сделать, но сделайте предположение – и оно хорошее – если рассматриваемая функция имеет сингулярность некоторого рода в точке разложения, то либо функция, либо ее некоторые производные в этой точке не существуют и разложение в ряд Тейлора невозможно. Тогда есть еще другие виды разложений, которыми можно аппроксимировать функции и команда Maple series, которая
работает почти так же, как taylor (но более общая).
Попытайтесь применить series(BesselK(0,x),x=0,3); и посмотрите, что случится. Учтите, что игнорируя многие громоздкости и концентрируясь на ведущих членах, вы можете сказать, что K0(x) имеет логарифмическую сингулярность. (Учтите, что в разложении появляется постоянная Эйлера. Чтобы узнать о ней: запрос ?gamma.)
Окончив эту работу, сделайте то же для следующих функций:
(a) cot(x),
(b) |
1 |
|
, |
|
|
tanh(x) |
|||
|
|
|
||
(c) |
|
x |
. |
|
|
|
|
||
|
sin(x2 ) |
|
||
Вместо 3 попробуйте другие цифры в команде series и посмотрите, можете ли вы точно сказать, что это означает.
102
Глава 4. Расчеты
Задача 3.22
Еще один вид разложения, который очень полезен в математической физике: асимптотические разложения. Это разложения относительно , которые кажутся необычными, но все они означают, что мы хотим знать как ведет себя функция, если ее аргумент очень велик. Для этого применяется команда Maple asympt(f,x,2) (или series(f,x=infinity,2)), где f – выражение Maple. Попытайтесь сделать это для следующих функций с помощью series для (a)-(b) и asympt для
(c)-(d). Оставляйте только два члена, как показано в командах выше.
(a)J0(x),
(b)I1(x),
(c)K0(x),
(d)Γ(x).
Полагаю, что вы получили 2 в последнем случае, поскольку обычно мы заботимся о ведущем члене асимптотического разложения. Он обычно отвечает на два наиболее важных вопроса:
(1)функция растет или спадает?
(2)каким образом она себя так ведет?
Суммы / Sums
Ваши качества как расчетчика, в том числе, определяются и тем, как вы понимаете идею бесконечных сумм. Maple знает все о них и может выполнять достаточно впечатляющие вещи.
Рассмотрим любимую 1 .
n 1 n2
Команда Maple sum выполнит суммирование. Ее синтаксис почти такой же, как у команды int (учтите, что Sum – это инертная форма.)
>restart;
>sum(1/’n’^2,’n’=1..infinity);
прекрасный неожиданный результат. В этом виде первый аргумент sum – это выражение. Учтите особенности этой команды Maple: индекс n в одинарных кавычках. Вам не всегда надо действовать так, но если, все же, вы так не сделаете, то Maple даст ошибку на каком-то этапе вычислений, поэтому придется изучить правила для применения
103
Maple для студентов физиков
одинарных кавычек. (Одинарные кавычки говорят Maple использовать n как фиктивную переменную в данной команде, игнорируя все предыдущие присвоения чего-либо этой переменной n.)
В дальнейшем смысл кавычек поясняться не будет, да и печатать кавычки неудобно.
Команда sum и ее инертная форма Sum, работают как функции.
>fn:=n->1/n^2;
>s1:=Sum(fn(n),n=1..infinity);
>value(s1);
Посмотрим возможности суммирования в Maple, затратив минуту на просмотр ?sum.
Вот несколько упражнений для практики.
Задача 3.26
Найдите каждую из этих сумм в выражениях (a)-(c) и функций в
(d)-(f).
N |
|
n |
(a) n3 |
(b) |
( 1) |
2 |
||
n 1 |
n 1 |
n |
|
2n 2 |
|
(c) |
||
(n 1)(n 2)(n 3) |
||
n 1 |
|
N |
1 |
|
|
(d) lim |
|
|
|
ln(N) . |
|
||||
N n 1 n |
|
|||
Учтите: в обоих членах N стремится к бесконечности, причем не только в сумме. Небольшой полученный вами забавный символ – это не ошибка, а весьма известное число, обозначаемое символом гамма. Это – постоянная Эйлера. Ее значение получите с помощью evalf.
|
x |
n |
|
x |
n |
|
(e) |
|
(f) |
|
. |
||
|
|
|
|
|||
n 1 |
n |
n 1 n(n 1) |
||||
104
Глава 5. КОМПЛЕКСНЫЕ ЧИСЛА И ФУНКЦИИ
Рассматриваемые темы и задачи
сложить и вычесть |
add and subtract |
функции Бесселя, комплексные |
Bessel functions, complex |
разрезы |
branch cuts |
сопряжение, комплексное |
conjugate, complex |
электрические поля, углы |
electric fields, corners |
линейные заряды |
line charges |
формула Эйлера |
Euler's formula |
еvalc |
evalc |
экспоненциальная функция, ком- |
exponential function, complex |
плексная |
|
умножить и разделить |
multiply and divide |
фаза |
phase |
полярные координаты |
polar coordinates |
возведение в степень, комплекс- |
raising to a power, complex |
ное |
|
Re и Im |
Re and Im |
интерференция волн |
wave interference |
конформные отображения
Функции Maple и их опции
interface |
abs(z) |
polar |
conjugate |
expand |
plottools |
assume |
Re(z) |
fieldplot |
еvalc |
Im(z) |
|
105
Maple для студентов физиков
Разделы:
Комплексная арифметика Элементарные комплексные функции Описание команды evalc (из справки) Специальные комплексные функции Интерференция волн
Электростатика с линейными зарядами (конформные отображения)
Комплексная математика (ТФКП) является мощным инструментом моделирования в физике. Понятия комплексной единицы, комплексной плоскости и др. известны из курсов математики.
В Maple 1 обозначается I (заглавная буква I). Например, комплексное число 5 + 3i в Maple записывается так:
>restart;
>z1:=5 + 3*I;
Следует быть осторожным при записи таких чисел, поскольку использование i дает внешне похожее выражение, как ниже:
> z2:=5+3*i;
Выглядит неплохо, но комплексная арифметика с «i», конечно, работать не будет (к тому же, в примере i ничего не присвоено).
Только I – то, что нужно. (Если вас не устраивает такое обозначение, то можно переопределить I с помощью команды interface, но лучше этого не делать.)
В этой главе – обзор того, что можно сделать на комплексной плоскости: арифметика, расчеты, специальные функции вроде J0(z) и Γ(z). При работе с переменной, имеющей имя, начинающееся с z (z1, z2, и т. д.) имейте в виду, что это комплексная переменная вида z = x + iy.
Комплексная арифметика
Рассмотрим, что можно делать с комплексными числами. Вопервых, простое сложение – вычитание. Правила – как при сложении векторов на плоскости (ху):
106
Глава 5. Комплексные числа и функции
>z1:=5+3*I;
>z2:=1-6*I;
>z3:=z2+z1;
Смеха ради – нарисуем задачу о сложении в комплексной плоскости с помощью стрелок-векторов (заодно поучимся строить стрелки-век- торы). На картинке z1 – зеленый, z2 – синий, а сумма – красным (z3).
> with(plottools):
L1 := arrow([0,0], [5,3], .2, .5, .1, color=green): L2 := arrow([0,0], [1,-6], .2, .5, .1, color=blue): L3 := arrow([0,0], [6,-3],.2,.5,.1,color=red):
> plots[display](L1,L2,L3, axes=normal,view=[-10..10,-10..10]);
Умножение и деление не похожи на операции с векторами. Комплексное умножение выполняется путем обычного алгебраического умножения Re и Im частей каждого из чисел, при этом I2 = –1. А вот пример умножения:
(5+3I)*(1-6I) = (5 + 3I – 30I + 18) = 23 – 27I.
(Использован дистрибутивный закон):
> z1*z2;
Деление комплексных чисел выполняется исходя из идеи комплексного сопряжения (число с противоположным знаком комплексной части):
> conjugate(6+4*I);
Сопряженные полезны из-за того, что произведение числа на сопряженное есть действительное число
>conjugate(6+4*I)*(6+4*I);
>assume(x,real);assume(y,real);
>conjugate(x+y*I)*(x+y*I);
>expand(%);
Иэто действительное число равно квадрату амплитуды комплексного числа, рассматриваемого как вектор.
Ответ: 62 + 42 = 52.
107
Maple для студентов физиков
Это полезно для комплексного деления, потому что комплексная дробь умножается на сопряженное знаменателю число и тогда знаменатель становится чисто действительным, и нам не надо беспокоиться.
Задача 4.1
Выполните вручную комплексное деление 3 4I , а затем сделай- 2 5I
те это в Maple и покажите, что ответы совпадают.
Это решение достаточно простое. Можно нарисовать картинку для операции умножения. Но при этом придется перейти в иное представление комплексных чисел. В комплексной плоскости декартовы координаты заменяются на полярные координаты, и тогда число представляется в виде пары (модуль, угол). Угол отсчитывается против часовой стрелки, а модуль вычисляется как модуль длины вектора. Например,
2 |
|
2 |
|
|
4 |
|
|
для числа 5 + 4I амплитуда равна 5 |
4 |
|
|
41 , а arctan |
|
|
: |
|
5 |
||||||
|
|
|
|
|
|
|
> with(plottools):
L1 := arrow([0,0], [5,4], .2, .5, .1, color=green):
L2 := arc([0,0],4,0..arctan(.8),color=red):
>plots[display](L1,L2, axes=normal,view=[-5..5,-5..5],scaling=constrained);
Вполярных координатах хорошо визуализировать комплексные
числа.
Связь между декартовыми (x + iy) и полярными (r, ) координата-
ми простая: x = r cos( ) и y = r sin(θ).
Для комплексной экспоненты есть формула Эйлера e(i ) = cos( ) + i sin( ).
Тогда связь декартовой формы и полярной формы представления комплексных чисел: x + iy = r e(iθ).
С помощью этой формы можно переписать (в новом виде) прави-
ла умножения и деления чисел.
Для умножения: если z1 r1e i 1 и z2 r2e i 2 , то z1z2 r1r2e i( 1 2 ) . Умножение означает произведение амплитуд и сложение углов исходных векторов, что и нарисовано ниже (z1 и z2 зеленым, а произ-
ведение – красным).
108
Глава 5. Комплексные числа и функции
> with(plottools):
L1 := arrow([0,0], [1,2], .1, .3, .1, color=green): L1a := arc([0,0],1.5,0..arctan(2),color=green):
>L2 := arrow([0,0], [1,.8], .1, .3, .1, color=green): L2a := arc([0,0],.75,0..arctan(.8),color=green):
>L3 := arrow([0,0], [-.6,2.8], .1, .3, .1, color=red): L3a := arc([0,0],2.5,0..arctan(2.8,-.6),color=red):
>plots[display](L1,L2,L3,L1a,L2a,L3a, axes=normal,view=[-3..3,-3..3], scaling=constrained);
Деление работает аналогично, только амплитуды делятся, а углы
вычитаются: z1 r 1e i( 1 2 ) . z2 r2
Это – простая арифметика. В Maple есть удобные команды для ручной работы с комплексными числами:
Re(z) – извлекает действительную часть числа z, Im(z) – комплексную,
abs(z) – дает амплитуду, и arctan(Im(z),Re(z)) – дает угол:
>z:=5-3*I;
>Re(z);Im(z);abs(z);arctan(Im(z),Re(z));
ВMaple естькоманда, котораяконвертируетдекартовуформувполярную, но ее результат сложно использовать в последовательных расчетах:
>polar(z);
Но лучше применять форму arctan.
В Maple также есть команда для комплексно сопряженного числа conjugate.
> conjugate(3+4*I);
Задача 4.2
Выполните операции с комплексными числами z1 и z2 и представьте ответ в декартовой и полярной форме. Команда polar упрощает эти действия.
109
Maple для студентов физиков
Вот определения z1 и z2, которые предлагается использовать в задаче:
> z1:=3-5*I;z2:=-2+3*I; |
|
|
|
||
(a) z1 + z2 |
(b) z1 – z2 |
(c) z1z2 |
(d) |
z1 |
|
z2 |
|||||
|
|
|
|
||
Задача 4.3
Покажите графически – стрелками на графике (как выше), что поворот комплексного числа на угол в комплексной плоскости сопровождается умножением на множитель e(iθ).
Для этого вначале определите комплексное число z1 и нарисуйте его как стрелку, умножьте z1 на e(iθ) для некоторого угла по вашему выбору, затем нарисуйте этот новый вектор как стрелку. При выполнении будьте внимательны и используйте в аргументах команды arrow только числа с плавающей запятой. Вероятно, Maple вернет вам ответы, содержащие квадратные корни из целых чисел, и, если вы просто скопируете эти числа в команду arrow, то никакая стрелка не появится. Поможет в этом старая знакомая – команда evalf и команды: [Re(z),Im(z)], которые помогут вставить Re и Im части комплексного числа в команду arrow.
Элементарные комплексные функции
Начнем с экспоненты.
Формула Эйлера e(iθ) = cos( ) + isin( ) известна, и поэтому для ez (при том, что z = x + iy) можно переписать так: e(x + iy) = ex(cos(y) + isin(y)). Для изображения Re и Im частей этой функции нужна трехмерная гра-
фика plot3d.
>restart;
>plot3d(Re(exp(x+I*y)),x=-6..6,y=-6..6,shading=z,axes=framed,labels= ["x","y","Re(f)"],orientation=[-60,60],title="Real Part");
>plot3d(Im(exp(x+I*y)),x=-6..6,y=-6..6,shading=z,axes=framed,labels= ["x","y","Im(f)"],orientation=[-60,60],title="Imaginary Part");
Заметьте, что для отрицательных х она очень мала, а для положительных очень велика – так ведет себя ex.
110
