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

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

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

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

Опять появится сообщение об ошибке, в котором говорится, что Maple пытается дать вам число, но не может, так как не знает, что такое . (Это ведь просто греческая буква, а не то, что вы хотите). Нужно было набрать Pi. Как только вы это сделаете, все заработает:

> sin(Pi/2.);

>

Если Maple, пытаясь получить число, дает неожиданный результат, это можно проверить с помощью evalf. При попытке вывести (это) число, вы поймете в чем причина ошибки.

check := vs =

>

Ошибка повторяется: для уравнений применяют только =; а присвоение – это a:=5.

plot (создание рисунка)

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

>restart;

>int(sin(x)/(1-cos(x)),x=0..Pi);

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

> sin(1.)/(1-cos(1.));

Чтобы просмотреть все числа, нужен график команда Maple plot

> plot(sin(x)/(1-cos(x)),x=0..Pi);

>

Теперь видно, что подынтегральное выражение сингулярно в точке x = 0, так что ответ Maple был верен.

41

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

assume

Иногда Maple не может сделать то, что вы хотите потому, что вы

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

>restart;

>int(exp(-a^2*x^2),x=0..infinity);

Вам нужна формула, содержащая a, а вместо этого получаете предельное выражение. При этом Maple дает вам сообщение об ошибке, которое поможет, напомнить, что поскольку Maple может работать с комплексными величинами, то он не может сразу сказать, является ли a2 положительным или отрицательным. Все получится, если вы в команде assume укажите, какой должна быть величина а.

>assume(a,real);

>int(exp(-a^2*x^2),x=0..infinity);

посмотрите help команды assume, там сказано, как получить нужный результат.

Предупреждение: Применив assume к переменной, можно получить проблемы. Они возникнут в следующей цепочке:

пусть нечто задано для a, которую затем вы используете в выражении и присвоите ее другой переменной (например, b), потом дадите а значение, и попытаетесь вычислить b. Посмотрите:

>restart;

>assume(a,real);

>b:=cos(a);

>a:=2.;

>evalf(b);

Теперь посмотрим, что получилось с той же последовательностью без assume

>restart;

>b:=cos(a);

>a:=2.;

>evalf(b);

42

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

Урок в том, чтобы применять assume только в случае крайней необходимости.

Окончательно вам может понадобится предположить два условия для переменной, например, одновременно c > 0 и c < 1. Maple дает два пути сделать это. Можно поставить оба условия в одну команду assume

> assume(c>0,c<1);

или сделать это в два (или больше) шага, применяя команду additionally

>assume(c>0);

>additionally(c<1);

Причина: нельзя одновременно применять две команды assume, поскольку второе применение команды assume к той же переменной сотрет предыдущие установки, сделанные этой командой для этой переменной.

restart

Иногда Maple тратит много времени на расчеты из-за того, что за-

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

Простой пример того, когда проще начинать расчеты с начала. Пусть вы используете функцию Бесселя J0 (x)

>restart;

>x:=1.5;BesselJ(0,x);

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

>plot(BesselJ(0,x),x=0..5);

Возникает непонятная ошибка, от которой легче всего избавиться, начав все заново

> restart: plot(BesselJ(0,x),x=0..5);

43

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

Команда restart – это эквивалент перезагрузки, и вы будете пользоваться ею регулярно.

(Примечание: график не получился из-за того, что мы пытались построить график с помощью переменной х, которой до того присвоили значение 1.5. Если применить неприсвоенную заранее переменную, то все получится):

> plot(BesselJ(0,t),t=0..5);

Важные мелочи, которые можно сделать прямо сейчас

Пока вы знаете немного, но, все равно, интересно применить свои знания на практике.

Интегрирование

Интегрирование выполняется с помощью команды int. Неопределенный интеграл e( x) sin(x) dx вычисляется так:

>restart;

>int(exp(-x)*sin(x),x);

Другой способ: запишите функцию в группу, щелкните правой кнопкой на записи и в меню выберите Integrate:

> exp(-x)*sin(x);

При использовании правого щелчка Maple автоматически присваивает результат переменной, начинающейся с буквы R.

При первом использовании это будет R; следующая – R0, затем

R1, R2, и т. д.

Можно выбрать команду интегрирования из палитры Expression (слеваотрабочеголиста). Курсорустанавливаетсявгруппе, авпалитре Expression выбирается символ интегрирования. Появившаяся команда требует небольшого редактирования в соответствии с вашей задачей.

Определенный интеграл 01 e( x) sin(x) dx

44

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

> s1:=int(exp(-x)*sin(x),x=0..1);

Это правильное выражение, но вам, возможно, нужно число?

> evalf(s1);

Этого Maple сделать не может.

> s2:=int(exp(-x^4)*cos(x),x=0..1);

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

> evalf(s2);

Задача 1.10

Найдите численное значение интеграла 02 e x dx . Комментарий вставьте в строку Maple с помощь знака #.

Дифференцирование

Возьмите производную с помощью команды diff

>restart;

>f:=sin(x)/sqrt(1+x^2);

>d1:=diff(f,x);

(Или примените правый щелчок мыши)

Возможно, вам не нравится получавшееся, и вы хотите иметь результат в нормальной форме. Как это сделать обсуждено в Главе 10.

> normal(d1);

Можно взять вторую производную

>d2:=diff(exp(-x)*tan(x),x$2);

Результат можно упростить:

>simplify(d2);

изатем представить tan(x) полиномом по степеням x

>sort(%);

45

Задача 1.11

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

Теперь имеем красивый ответ и присвоим его переменной d2. В этом вычислении впервые применен значок %, означающий

переменную, содержащую результат предыдущего вычисления.

Это полезно, поскольку, если одна из команд примененных для улучшения не сработает, то неизвестно что будет в d2, и придется искать ошибки, то лучше записать так:

> d2:=%;

Эти алгебраические команды обсуждены в Главе 10. Привыкайте использовать Главу 10, чтобы получать результаты вы-

числений Maple – выражения в красивой и устраивающей вас форме.

Возьмите первую производную от функции cos cos cos cos x . Прокомментируйте в пределах группы и над командой diff то, что вы делаете.

Построение последовательности

В расчетах исследуются последовательности чисел, сходящихся к пределу и бесконечные суммы таких последовательностей. В Maple последовательности строятся командой seq. Она работает так:

>restart;

>s:=seq((5+n)/(3+n),n=1..50);

или

> evalf(s);

что дает нам подсказку, что в пределе последовательность сходится к 1.

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

> seq(x^n/n!,n=1..20);

46

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

Задача 1.12

Сгенерируйте первые 15 членов последовательности с общим

членом вида

sn

dn cos(x)

. Вставьте комментарий к тому, что вы

 

 

 

 

 

dx

n

1 x

 

 

 

 

 

 

делаете внутри группы под командой seq.

Суммирование рядов / Sum a series

Найдите формулу для суммы целых чисел до 6-й степени с помощью команды sum

>restart;

>s1:=sum(k^6,k=1..N);

>simplify(s1);

>sort(%);

Найдите результат суммирования обратных величин целых чисел до 6-й степени от 1 до

> s2:=sum(1/n^6,n=1..infinity);

и затем переведите результат в число

> evalf(s2);

Задача 1.13

Найдите сумму обратных квадратов целых нечетных чисел от 1 до. Вставьте комментарий к тому, что вы делаете в строку текста над группой, содержащей команду sum.

Ряды Тейлора / Taylor series

Всложных задачах физики любят строить приближенные решения

спомощью рядов Тейлора.

Напомню, что любая функция f(x), дифференцируемая бесконечное число раз, может быть аппроксимирована в окрестности точки x = a полиномом по (x a) в виде ряда Тейлора:

f(x) = f(a) + f'(a)(x-a) + f''(a) (x-a)^2/2! + f'''(a)(x-a)^3/3! + ...

47

 

 

 

 

 

 

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

 

 

Это очень полезно для получения приближений. Например, вели-

чина

1

, появляющаяся в теории относительности. Иногда, если

 

 

 

 

1

v2

 

 

v

 

c2

 

 

 

 

мало, ее удобно представить в приближенном виде. Используйте

 

 

c

для этого команду taylor.

>restart;

>taylor(1/sqrt(1-x^2),x,5);

где число 5 означает, что в разложении требуются члены вплоть до x5. Член (x6) в ответе означает, что погрешность разложения имеет порядок x6.

А если вам надо работать с этим разложением на полиномы? Вы можете конвертировать этот ряд в полином с помощью команды convert(...,polynom):

> convert(%,polynom);

Задача 1.14

Найдите приближенную формулу для функции ecos(x) включая члены вплоть до x10. Покажите коэффициенты этого разложения в виде рациональном и с плавающей точкой. Вставьте в текст комментарий того, что вы делаете, сразу под командой taylor.

Построение функций / Plot functions

Для быстрого построения функции используйте plot

>restart;

>plot(exp(sin(x)),x=0..50);

Задача 1.15

Постройте график функции e x cos(x) от x = 0 до x = 100. По-

25

ставьте комментарий о том, что вы делаете в разделе над командой plot.

48

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

Задача 1.16

Однородно заряженный диск радиусом a с плотностью заряда σ создает электрическое поле Ez вдоль оси z (ось проходит из центра диска по нормали к поверхности), которое записывается так:

 

 

 

 

z 0a

r

 

 

dr

 

2

 

 

 

Ez (z)

 

(r2 z2 )

3

 

 

 

.

 

 

 

2 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Найти простое алгебраическое выражение для Ez (z) . Затем задай-

те значения σ = 10–6

C

, 0

8.854 10 12 Nm2

, и a = 0.1cm и постройте

2

 

 

m

C

 

 

 

 

 

график Ez от z = –5a до z = 5a. Примечание: применение чисел в виде:

1e-6 и 8.854e-12

ускоряет расчеты численных значений.

Решение трудных уравнений

Пусть требуется решить уравнение e x x . Применим solve к этому уравнению

>restart;

>sol:=solve(exp(-x)=x,x);

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

> evalf(sol);

Другой способ. Он применяется, если вы достаточно уверены, что вам нужно символьное, а численное решение, и можно указать область, где его искать. Указанием для Maple, что вам нужно только численное решение уравнения, является команда fsolve. В нашем случае укажем, что Maple должен начать искать решение вблизи x = 1:

49

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

> fsolve(exp(-x)=x,x=1);

Если вы не угадали, где искать решение, то поиск займет больше времени, или вы его вообще не получите, если ответ – в бесконечности.

Задача 1.17

Найти решение уравнения cos(x) = x. В группе поместите комментарий к тому, что вы делаете, сразу после команды. В этом тексте используйте математический режим Maple (примените Ctrl-r) чтобы ввести в текст уравнение cos(x) = x.

Maple будет также выдавать символьное решение уравнений (систем уравнений). Например, вот как Maple символьно решает квадратное уравнение:

>Q:=a*x^2+b*x+c=0;

>solve(Q,x);

Авот как выглядит символьное решение общей задачи двух уравнений с двумя неизвестными х и у и коэффициентами от a до f :

>E1:=a*x+b*y=e;E2:=c*x+d*y=f;

>solve({E1,E2},{x,y});

Это проще, чем применять пакет линейной алгебры Maple.

Задача 1.18

При расчете работы трубки Вентури уравнение Бернулли имеет

вид:

P1 v12 P2 v22

2 2

и уравнение непрерывности

A1v1 = A2v2

следует решать совместно, чтобы получить формулу для v2:

v2 A1

2(P1 P2 )

 

 

.

2

2

 

(A1

A2 )

50