Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Maple для студентов физиков. Часть 1. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

Глава 2. Начало работы

Примените Maple для получения этого результата. Подсказки:

Есть несколько источников ошибок.

(1)Вы можете грубо напутать, применив знаки % при решении. Если так получится, то перейдите в

Tools->Options->Display->Output Display и выберите 2-D Math Notation вместо Typeset Notation.

(2)Даже без знаков % вы все еще получаете RootOf. Вы можете заставить Maple решать эти квадратные уравнения, используя команду allvalues. Найдите ее в online help и посмотрите, как она работает, а затем следуйте примеру ниже:

>eq1:=2*x+y^2=5;eq2:=x+3*y=3;

>s:=solve({eq1,eq2},{x,y});

>allvalues(s);

Даже после того как вы это сделаете, ваш ответ не будет выглядеть так же, как в задаче выше.

Чтобы приблизиться к нему, примените команду simplify(...,symbolic);. В этой команде ... означает выражение, которое вы пытаетесь упростить.

Решение дифференциальных уравнений

Пусть вам нужны два общих решения ДУ второго порядка

f'' + xf' + f = 0

где символ ' означает дифференцирование по x. Примените команду dsolve для решения ДУ:

>restart;

>dsolve(diff(f(x),x$2)+x*diff(f(x),x)+f(x)=0);

Переменная _C1 – это произвольный множитель первого общего решения и _C2 – это множитель второго. Оно содержит функцию erf(x), с которой вы пока не встречались (но придется). Решению ДУ посвящена Глава 8.

51

Maple для студентов физиков

Задача 1.19

Найти решение ДУ d y(x) x y(x) . После того, как Maple находит dx

общее решение, найдите значения произвольных констант из условия, что y(0) = 1 путем замены в решении x на 0, замены y на 1, и решении получившегося уравнения относительно _C1. Поставьте в тексте над и внутри группы комментарий к тому, что вы делаете.

В предыдущей задаче пришлось немного поработать, чтобы получить правильные начальные условия. Maple может это сделать сам:

 

 

 

2

(используя в ДУ f(0) = 1 и

 

 

f (0)

x

 

 

 

 

d2

 

d

 

 

 

 

f (x) x

 

f (x)

f (x) 0 )

dx

2

 

 

dx

 

 

>Eq:=diff(f(x),x$2)+x*diff(f(x),x)+f(x)=0;

>dsolve({Eq,f(0)=1,D(f)(0)=2},f(x));

Подробнее об этом – в главе 8.

Работа с матрицами и решение систем линейных уравнений

В Maple есть целый пакет посвященный матрицам, векторам, линейной алгебре (cм. главу 6).

Рассмотрим небольшой пример решения системы линейных уравнений:

x + 2y + 3z = 6 4x + 5y + 6z = 15

7x + 8y + 10z = 25,

которая построена так, что решением будет [x,y,z] = [1,1,1]. Maple решит эту задачу так: сначала с помощью команды with(LinearAlgebra) надо подключить пакет линейной алгебры. Затем с помощью команды Matrix загрузить матрицу, с помощью команды Vector загрузить вектор правых частей и, последнее, решить систему с помощью команды

LinearSolve.

52

Глава 2. Начало работы

>restart;

>with(LinearAlgebra);

(Если не нужен вывод на экран – ставьте : после выражения)

>A:=Matrix([[1,2,3],[4,5,6],[7,8,10]]);

>b:=Vector([6,15,25]);

>c:=LinearSolve(A,b);

Задача 1.20

Jack вдвое старше, чем Jill. Сумма возрастов Jill и Jack равна возрасту Joan. Сумма трех возрастов равна 48. Определить возраст каждого. Решите задачу, изменяя приведенный выше пример. Прокомментируйте свои действия между командами Vector и LinearSolve.

Алгебраические действия

Это очень большая тема и одна из причин возникновения Maple. В главе 10 описаны алгебраические команды, которые вы будете применять в этом курсе. Используйте главу 10 в качестве справочника во всех случаях, когда вид ответа вас не устраивает. Затратьте несколько минут и просмотрите «по диагонали» главу 10 до раздела, посвященного матрицам. Пока не стоит вникать во все подробности. Просто ознакомитесь с возможностям, чтобы впоследствии знать, где искать ответ на интересующий вас вопрос. Затем вернитесь в это место и выполните задачу.

Задача 1.21

Используйте команды Maple для упрощения выражения

1

 

x

 

x

.

 

 

 

x

x 1

x 1

Вставьте комментарии к тому, что вы делаете (внутри и вне группы). И, в завершение, рассмотрим команды Maple для работы со слу-

чайными числами.

53

Maple для студентов физиков

Функции генерирования случайных чисел и переменных

randomizeO: k:=rand(a..b): k(); with(Statistics): X:=RandomVariable(Normal(a,b));

with(RandomTools): Generate(float(range=(a..b),digits=n)); AddFlavor(x=rand(a..b); SetState(state=value); with(LinearAlgebra): M:=RandomMatrix(n,n,generator=a..b, outputoptions=[shape=triangular[upper]]);

Выполните команды:

iquo(25,3);

irem(25,3); type(x^3*y+sqrt(y)*y,'polynom');

RandomTools[Generate](float(range=(2..9),digits=10)); with(combinat): fibonacci(10000); time(%);

54

Глава 3. ГРАФИКА

Эта глава посвящена методам построения графиков и их применению в физических задачах.

Рассматриваемые темы и задачи

Анимация

Групповая скорость

Биения

Данные: чтение и рисование

Волновые пакеты

Лежандра полиномы

Полная Ширина на Поло-

Неопределенности принцип

вине Ординаты Максимума

Фазовая скорость

 

(ПШПМ) (англ. – Full Width at

Фурье

 

Half Maximum, – FWHM)

суммы

 

распространение

теорема

Графики

свойство рядов (сходимость)

 

векторного поля

особенности Гиббса

контурные

Функции

параметрические

Бесселя: J, Y, I, K

эллипсы, гиперболы, пара-

гамма

болы

ошибок erf

2D

Интегралы

3D

эллиптические K(k), E(k)

Функции Maple и их опции

Display

constrained

Plot

scaling

thickness

 

numpoints

 

discont (разрыв)

labels

color

title

55

Maple для студентов физиков

labelfont

fieldplot

coords

pointplot

plot3d

inifcns

grid

erf(z)

labels

P(n,x)

orientation

GAMMA

axes

EllipticK(k)

view

EllipticE(k)

shading

 

 

currentdir

contourplot(

readdata

contours

seq

 

grid

subs

 

coloring

textplot

animate

sinh, cosh, tanh

Создание 2D (x-y) графиков

Простейший график – это 2-d, или x-y график. Maple легко рисует и функции и выражения , но синтаксис команд разный и зависит от того, что именно рисуется: функция или выражение.

x 1

Вот график рационального выражения x 1 от x = –5 до x = 0.

Первым делом присваиваем это выражение переменной g и затем рисуем ее.

Учтите, что g – это выражение, а не функция, поэтому для того,

чтобы ее нарисовать нельзя использовать обозначение g(x).

>restart;

>g:=(x+1)/(x-1);

>plot(g,x=-5..0);

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

> f:=(x,y)->(x+y)/(x-y);

56

Глава 3. Графика

Чтобы сделать график с осью х, просто задавайте у значения в списке аргументов (у = 1 воспроизводит предыдущий график)

> plot(f(x,1),x=-5..0);

Нарисуем график в большем диапазоне. Заметьте, что вы можете просто ввести выражение внутрь команды plot, без присвоения его переменной.

> plot((x+1)/(x-1),x=-5..5);

Это не единственный график, который нам нужен. Проблема в том, что наша функция сингулярна при х = 1, поэтому Maple пытается показать нам большой диапазон по оси у. Поэтому мы ограничим диапазон по вертикали:

> plot((x+1)/(x-1),x=-5..5,-5..5);

Теперь это выглядит корректнее, но неправильно смотрится вертикальная линия при х = 1.

Maple просто соединяет точки, включая в график скачок от – до. Линию можно вычистить специальной опцией.

Опций много и, чтобы вполне овладеть графикой Maple, их надо знать. Поэтому напишем запрос:

>?plot[options]

инайдем, что нам нужна discont=true, которая говорит, чтобы Maple искал разрыв (duscontinuty) на графике и отключал рисование от точки к точке.

>plot((x+1)/(x-1),x=-5..5,-5..5,discont=true);

Поищемчто-тоболееэкзотическое, ипостроимдвекривыхнаодном графике, выделив их двумя разными цветами. Запрос для цвета:

> ?plot[color]

Можно взять стандартные цвета, можно выбрать какие-то другие. Например, для публикаций лучше, чтобы линии были потолще :

>plot([(x+1)/(x-1),cos(x)],x=-5..5,-5..5,discont=true,color=[navy,tan],thic kness=2);

57

Maple для студентов физиков

Вкоманде список функций помещается в квадратные скобку [ ],

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

Предупреждение: Maple не всегда следует вашему порядку цветов.

Пример:

Пусть надо нарисовать график движения гармонического осцил-

лятора с затуханием, формула для которого имеет вид e t cos(t) ,

100

от t = 0 до t = 600.

Пишем:

> plot(exp(-t/100)*cos(t),t=0..600);

иувасвозникаетвпечатление, чточто-тонетак. ВынесказалиMaple (а сам он не догадался), сколько точек на графике, поэтому, если функция на графике дергается как сумасшедшая, нужно кое-что исправить.

Примените опцию numpoints, чтобы увеличить разрешение графика:

> plot(exp(-t/100)*cos(t),t=0..600,numpoints=400);

Пример 2: вам часто понадобится определить свое выражение для графика, применяя знак присвавивания (:=):

> F:=cos(omega*t)^3;

Поскольку оно явно зависит от t, мы сможем построить график

> plot(F,t=0..20);

но это не работает.

Получается пустой график – это Maple сообщает вам об ошибке. Причина ее в том, что пока не имеет значений, Maple график построить не может. Исправим ситуацию, задавая значения t и вычисляя соответствующее F.

> t:=7.;F;

но здесь не имеет значения, хотя и присутствует. Тогда присвоим ему значение:

58

Глава 3. Графика

> omega:=1.;plot(F,t=0..20);

– опять не срабатывает. Ну а в чем же дело теперь?

Проблема тоньше, и вы с ней встретитесь неоднократно, при таком способе построения графика.

Вы могли увидеть причину ошибки, вспомнив, что раньше задавали t значение равное 7. Maple помнит это присваивание и не хочет позволить применять t как текущую переменную на графике.

Чтобы исправить ситуацию, нужно отменить это присваивание командой unassign, аргументом которой будет 't', и затем запустить снова.

> unassign(‘t’);omega:=1;plot(F,t=0..20);

или применить сокращенную версию команды unassign:

> t:=’t’;omega:=1;plot(F,t=0..20);

Читается это так: «присвоить t ей самой (вернуть t собственному имени), стерев любые предыдущие присваивания».

Более «чистый» способ – никогда не делать присваивания с помощью знака :=, а применять команду замены subs, как ниже:

>restart;

>F:=cos(omega*t)^3;

>plot(F,t=0..20);

>subs(t=7.,F);

>plot(subs(omega=1,F),t=0..20);

Команды t = 7 и omega = 1 применяются только внутри команды subs. После этого переменные t и omega остаются неприсвоенными:

> t;omega;

Чтобы строить неплохие графики вам нужно знать как строятся надписи.

Чтобы ввести подписи к осям примняется опция: labels=["x","y"]. Для маленького заголовка – опция title="This is the title".

А если надо ввести текст где-то еще в графике – см. textplot в

Maple help.

Вот несколько примеров.

59

Maple для студентов физиков

> plot(sin(x^2),x=0..2*Pi,labels=["x","y(x)"],title="sin(x^2) function");

Заметьте, что в Maple sin(x^2) не печатался в принятом в математике виде. Хотелось бы знать, как такое сделать на графике. В ограниченномвидедоступныгреческиебуквыпутемзаменышрифтаlabelfont или titlefont на SYMBOL, как ниже (греческий алфавит специально подавлен , так что вы видите, как он кодируется)

>plot(exp(x/6),x=0..2*Pi,labels=["abcdefghijklmnopqrstuvwxyz","y(x)"], title="ABCDEFGHIJKLMNOPQRSTUVWXYZ",labelfont=[SYMBOL],titlefo nt=[SYMBOL]);

Ксожалению, я не знаю, как поставить смесь латинского и греческого алфавитов в знаках и заголовках.

Здесь нужны возможности работы с текстом, как в LaTex или MatLab, где такое возможно.

Обзор основных функций

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

Задача 2.1

Нарисуйте на одном графике функции sin(x), cos(x) и tan(x) в масштабе по горизонтали от –2π до 2π и по вертикали от –2 до 2. Список функций поместите в команду plot, задав каждой функции свой цвет.

Задача 2.2

 

 

 

ex

 

 

 

e x

 

 

 

 

, и

Нарисуйте на одном графике функции sinh(x),

 

 

 

мас-

2

2

 

 

 

 

 

 

 

штабы по горизонтали и по вертикали от –3 до 3.

 

 

 

 

 

 

 

Цвет у каждой функции свой.

 

 

 

 

 

 

 

 

 

На другом графике нарисуйте функции

ex

 

и

 

e x

 

вместе с

2

 

2

 

 

 

 

 

 

 

 

cosh(x).

И наконец, на том же графике нарисуйте функции sinh(x), cosh(x) и tanh(x) и смотрите на них, пока не запомните, как они выглядят.

60