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

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

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

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

> limit(exp(-x),x=infinity);

Или 1 будет вычисляться так:

n 1 2n

> sum(‘1/2^n’,’n’=1..infinity);

>

Подробнее – в Главе 4, см. раздел, посвященной пределам.

Задача 1.5

Сравните выполнение команд cos(pi) и cos(Pi). Объясните, почему происходит то, что получается на экране. (Подробнее об этом – в разделе об именах переменных, см. ниже).

Задача 1.6

 

Вычислите комплексную дробь

3 4i

в группе Maple. (Примеча-

 

 

7 6i

1 обозначается

ние: если быть внимательным, то видна ошибка: i

в Maple как I. Соответственно, следует записывать компоненты алгебраической формулы: например 4i ,означающее 4 i, следует писать как 4*I.)

Задача 1.7

Рассчитайте предел выражения

3

5x

при x, стремящимся к бес-

7

3x

конечности. (Снова: 5x – это 5 x)

 

 

 

 

Имена переменных / Variable names

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

Например, в C и Фортране нельзя назвать переменную «sin», так как это слово зарезервировано за функцией. То же касается и остальных зарезервированных слов, список которых известен в каждом языке. В Maple действует то же ограничение, но в нем около 3000 команд, чьи имена резервированы. Но при этом Maple подсказывает пользователю о неправильности выбора.

31

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

Кроме того, существуют вредные привычки, которые возникают от свободы выбора и которым не надо следовать. Например, закон Ньютона записывают в компьютерном коде так:

Newtons_Gravitational_Constant*Mass_1*Mass_2/Distance_Between_

The_Masses^2

Вгруппе это выглядит так:

>Newtons_Gravitational_Constant*Mass_1*Mass_2/Distance_ Between_The_Masses^2;

такая запись громоздка и неудобна в наборе текста. Подобных случаев надо избегать. Лучше применить простую конструкцию Maple:

> G*m1*m2/r12^2;

Метод обозначения переменных, использующий подчеркивание

изаглавные буквы следует применять экономно. Лучше обозначать переменные знаками, соответствующими их обозначениям в физических формулах, желательно, коротко, например, a, m, F, c, q, L, h,

ит. п.

Кроме английского алфавита Maple может использовать греческий.

Пример:

> alpha*beta/delta;

Доступны также заглавные буквы греческого алфавита:

> Alpha*A;Beta+B;Chi/Gamma;

Некоторые буквы можно получить так:

> CHI;

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

Несколько букв недоступны:

> gamma:=4;Chi:=3;

32

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

потому, что они используются системой. Можно применить для них unassign и использовать далее в ваших собственных расчетах, но делать это не рекомендую.

Также не рекомендуется ставить нижние индексы для перемен-

ных, даже если это позволяет Maple. Например, вы хотите работать с переменными x1 и x2, которые можно получить, записав в Maple:

> x[1]:=1;x[2]:=2;

Это выглядит хорошо, но что произойдет, если вы дадите x значение, а затем захотите посмотреть x1

>x:=3;

>x[1];

Такой подход не поможет работе с математическими формулами. Поэтому, если хотите работать с переменной x1, назовите ее x1.

Задача 1.8

Присвойте переменной theta значение 5/3 и затем подставьте в команду Maple cos(θ), что даст cos(5/3) как число с плавающей точкой.

Maple позволяет ставить специальные знаки в имена переменных, но тогда придется использовать специальный синтаксис.

Например, вы хотите определить выражение f, а затем присвоить его производную переменной с именем f'. Это делается так:

>f:=exp(y)*cos(y);

>`f'`:=diff(f,y);

Апострофы, в которые взята f' говорят Maple, что вы хотите использовать особый символ ( ' в нашем случае) в имени переменной и требуете принять это Maple-ом без возражений.

Что может представлять переменная?

В обычных языках программирования, вроде Fortran, C, а также в MatLab, переменные представляют ограниченное число разных типов данных: числа (целые, числа с плавающей запятой, комплексные), знаки, строки... Но в Maple переменная может описывать более

33

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

100 различных типов данных. Это сильно осложняет жизнь. Например в Fortran или MatLab оператор

a=5

означает, что переменной присвоено значение 5. Но в Maple оператор

> a=5;

вообще не имеет отношения к присваиванию. Кроме того, Maple может решить уравнение a = 5 и найти, что a – это 5, но это выражение не присваивает значение 5 переменной a. Чтобы помочь Maple работать напрямую с уравнениями (выражениями, которые содержат символ = ), оператору присваивания дана другая форма. Чтобы присвоить переменной a значение 5, оператор должен иметь вид:

> a:=5;

Чтобы яснее показать различие, отметим, что в Maple имеет смысл следующее выражение:

> Eq:=b=5;

Оно означает, что переменная Eq содержит уравнение b = 5. Еще один пример:

> Eq2:=x^2+y^2=R^2;

Это несколько странно почему 9 стоит вместо x? Может, и не так, в зависимости от того, каким путем вы сюда попали, но если в результате исполнения этой команды получили 9, то значит это так и есть. (Вспомните, что в предыдущем разделе (Имена переменных) х было задано как 3, и Maple это помнит. Самый быстрый способ исправить ситуацию (если вас не волнуют результаты расчетов) – применить ко-

манду restart:

> restart;

Теперь мышкой поставим курсор на красное выражение для Eq2, щелкнем и получим правильное исполнение. Важно отметить, что такое можно получить, даже если команда restart находилась ниже Eq2:=... . Maple не таков, как C или MatLab. Порядок рабочих листов не

34

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

важен, важнее время, проведенное за клавиатурой.

В следующих разделах дается часть списка возможных типов данных. Для полного обзора возможностей примените > ?type и прокрутите в открывшемся окне ответ вниз по большому списку возможных типов переменных (и всякого другого).

Если вы не уверены в типе переменной, названной, например, a, используйте команду Maple whattype(a).

> whattype(a);

Для проверки типа уравнения Eq2 надо написать:

> whattype(Eq2);

Задача 1.9

На чистом рабочем листе используйте команду b:=a=5 и затем используйте команду type для проверки типа переменой b, используя команды type(b,integer), type(b,float), и type(b,equation). Объясните

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

Примеры наиболее важных типов данных

Комплексные числа / Complex numbers

Учтите, что i 1 .

> cn1:=(1+3*I)*(5-2*I);whattype(cn1);

Уравнения / Equations

> Eq1:=sin(x)=x;

Числа с плавающей запятой / Floating point numbers

Обычно в расчетах Maple сохраняет 10 значащих цифр с плавающей запятой (числа типа real). Их количество можно увеличить, применив команду Digits:

> f1:=4./3.;

35

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

>Digits:=50;

>f1:=4./3.;

>Digits:=10;

>G:=6.673e-11;

Экспоненциальная форма числа представляется записью ви-

да e-11.

Нельзя применять запись вида 10^(-11).

Выражения и функции / Expressions and functions

Выражение – это комбинация переменных и функций Maple, записанное так:

> Fn1:=cosh(x^3)/(1+x^2);

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

Печатаете (вызываете) Fn1(x) и ничего не срабатывает! Вместо этого вам надо присвоить x значение:

> x:=2.;

затем вычислить Fn1

> Fn1;

Функция Maple определяется таким синтаксисом:

> Fn2:=x->cosh(x^3)/(1+x^2);

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

> Fn2(2.);

Или можно определить функцию многих аргументов, как ниже:

>Fn3:=(x,y,z)->x*y^2*z^3;

>Fn3(1,2,3);

Следовательно, знак -> обозначает функцию в том смысле, как вы

36

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

привыкли на занятиях по математике.

Так зачем же нужно вводить запутывающее ситуацию понятие выражения? Потому что зачастую Maple проще (и быстрее) работать с выражением: алгебраическими преобразованиями, дифференцированием, интегрированием, составлением ДУ, построением графиков. Вам надо к этому привыкнуть. Разницу между выражением и функцией можно понимать так:

выражение Maple подобно функции в книге

по математике, а функция Maple подобна устройству, которое имеет вход и выход.

Целые / Integers

> I1:=12345678987654321;

После ответа синим цветом щелкните правой кнопкой на нем чтобы посмотреть, что может сделать Maple с этим числом – например, выберите множители Integer и посмотрите, что получится.

>

Матрицы / Matrices

> M1:=matrix([[1,2],[3,4]]);

Полиномы / Polynomials

> P1:=y^3+y^2+y-1;

Строки / Strings

> S1:="Mary had a little lamb.";

Векторы / Vectors

> V1:=Vector([1,2,3]);

Списки и множества / Lists and sets

Список (list) – это последовательность чисел, выражений и других разрешенных типов данных, заключенная в квадратные

37

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

скобки. Их можно ввести либо вручную, либо с помощью коман-

ды seq.

>s1:=[1,2,4,6,8,12];

>s2:=[seq(2*n^2-3*n+2,n=1..6)];

Элементы списка вызываются в виде записи в квадратных скобках.

> s1[3];s2[2..5];

Множество (set) похоже на список, но не совсем. Оно записывается в фигурных скобках и Maple, в отличие от вас, решает сам, в каком порядке будут перечислены элементы. Наиболее важное различие состоит в том, что список (list) может содержать повторяющиеся элементы, а множество (set) – может и не содержать. Множества часто используются в качестве аргументов команд Maple. В приведенном ниже примере обратите внимание, что список (list) остается в том виде, в каком он был определен, а множество (set) пересматривается и вычищается, чтобы в нем остались только уникальные элементы.

>s1:=[1,3,2,6,4,3,2];

>s2:={1,3,2,6,4,3,2};

Последовательность (sequence) можно также получить при помощи оператора формирования последовательности – $.

> $ 2..5;

2, 3, 4, 5

Получение ответа

Мы пришли к наиболее разочаровывающей особенности Maple: иногда он не в состоянии ответить на ваш вопрос. Примеры:

Пусть нам надо узнать синус 1 (1 – в радианах). Вы думаете, что надо написать:

>restart;

>sin(1);

38

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

На самом деле эта запись – не то, что подразумевалось, и ответа не будет. Maple затрудняется дать ответ, поскольку не понимает, что именно вы имеете в виду (вспомним, что основное его назначение – символьные, а не числовые вычисления, т. е. 1 понимается, прежде всего, как символ, а не число). Чтобы получить искомое, надо указать число с десятичной точкой (указывающее на то, что это действительное число):

> sin(1.);

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

>sin(1);

>evalf(%);

Знак% означает, «последнийрезультат, вычислявшийсяMaple-ом» (про % – см. также краткую справку во Введении). В нашем случае это sin(1), и evalf говорит «вычисляй как величину с плавающей точкой». Применять evalf придется часто, поскольку Maple обычно выполняет символьные вычисления, а вам бывает нужен численный результат. Это и есть цена, которую приходится платить, чтобы иметь калькулятор совместно с символьными вычислениями.

Предостережение:

не привыкайте постоянно применять знак %, иначе будут ошибки. Делайте это экономно. Лучше присваивайте результат именованным переменным, а затем работайте с этими именами.

>s:=sin(1);

>evalf(s);

39

sin(ax)2

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

Отладка

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

• evalf (посмотрите на числа)

Пусть вам нужно узнать как выглядит функция sin(a2 x2 ) .

Команда Maple plot – великолепный способ для этого (команда restart поставлена для уверенности, что все начнется с чистого листа)

> restart: f:=x-> sin(a^2*x^2)/sin(a*2)^2;

затем используйте

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

Сообщение об ошибке скажет, что у Maple есть затруднения при переводе этой формулы в численные величины, необходимые для построения графика. Узнать причину ошибки позволяет применение функции evalf к значению функции:

> evalf(f(1.));

Это завуалированное сообщение об ошибке. Это означает, что Maple пытается вернуть вам число, но не может, так как вы не сказали, что такое a. Как только вы дадите a значение, график заработает. (Установите ниже в группе a равным 5 и вернитесь наверх и затем нарисуйте график.)

Еще пример. Пусть вы забыли значение sin и хотите, чтобы

2

Maple сказал его вам.

> s:=sin(pi/2);

Вы закричите «Нет!», «ДАЙ МНЕ ЧИСЛО!» Нужная для этого команда Maple будет выглядеть так:

> evalf(s);

40