МЕТОДИЧКА ПО MAPLE и MATHCAD
.pdf
|
|
121 |
|
[Ctrl]0 |
Больше равно |
x y |
[Ctrl]9 |
Меньше равно |
|
||
x y |
[Ctrl]3 |
Не равно |
A D |
где x, y - действительные числа, A, D- комплексные числа, векторы или матрицы.
Вместе с функцией if можно использовать и более сложные условия, так выражение
(x<1) (x>0)
соответствует логическому «и», возвращающему 1, если х лежит внутри интервала (0,1), а выражение
(x>1)+(x<0)
логическому «или» возвращающему 1, если или х>1, или x<0.
Знаки можно вводить также после нажатия иконки |
из палитры |
Boolean |
|
Пример применения функции if i: 1..10
h: 0.1 p: 1 q: 2
f (x,u1,u2): if (u1 u2,sin(x),cos(x)) yi : f (i h, p,q)
zi : f (i h,q, p)
т.е. yi=cos(i h), zi=sin(i h).
Функция until
Функция until используется, чтобы управлять процессом итераций. Это единственная функция Mathcad, специально предназначенная для работы с дискретным аргументом, она позволяет останавливать вычисления, когда выполняется определенное условие.
Синтаксис функции until yi+1:=until(f(i), yi), где f(i) - условие,
проверяемое на i- той итерации, yi - результат вычислений на i - той итерации.
Вычисления прекращаются, как только f(i) станет меньше нуля. Пример применения функции until (извлечь корень из 3 с погрешностью
122
err:=10-12) n:=100 i:=0..n y0:=1 err:=10-12 a:=3
Итерационная процедура вычисление корня квадратного из числа а
|
|
|
|
|
yi |
|
a |
|
|
||
|
|
|
|
|
|
|
|
||||
|
|
|
|
yi |
|||||||
y |
i 1 |
: until |
|
y2 |
a |
err, |
|
|
|
||
|
|
|
|
||||||||
|
|
|
i |
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
Ступенчатые и импульсные функции
Ступенчатая функция Хэвисайда Ф(х) - возвращает 1, если х 0, иначе 0.
Символ Кронекера (i,j) - возвращает 1, если i=j, и 0, если i j. С помощью функций Хэвисайда и if можно создавать различные
импульсные функции, например: p(x,w):=Ф(x)- Ф(x-w),
функция p(x,w) - равна 1 на интервале 0 х w и 0 вне него. q(x,w):=if((x u) (x v),1,0),
функция q(x,w) -равна 1 на интервале u x v и 0 вне него.
Операторы7 |
|
|
|||
Операция |
Обозначе- |
Клави- |
Описание |
||
|
|
ние |
ши |
|
|
Суммиро- |
n |
[Ctrl] |
Выполняет суммирова- |
||
вание |
X |
[Shift]4 |
ние Х по i=m,m+1,...,n. Х |
||
|
|
i m |
|
может быть любым вы- |
|
|
|
|
|
|
ражением дискретного |
|
|
|
|
|
аргумента i. m и n долж- |
|
|
|
|
|
ны быть целыми числа- |
|
|
X |
|
ми |
|
Суммиро- |
$ |
Выполняет суммирова- |
|||
вание по |
i |
|
ние Х по i. Х может быть |
||
дискрет- |
|
|
|
любым выражением |
|
|
|
|
|
|
|
7 |
Часть операторов была рассмотрена ранее, в том числе матричные опера- |
||||
|
торы, знаковые операторы.
ному ар- |
|
гументу |
|
Произве- |
n |
дение |
X |
|
i m |
Произве- |
X |
|
дение по |
i |
|
дискрет- |
|
|
ному ар- |
|
|
гументу |
|
|
Производ- |
d |
f (t) |
ная |
|
|
dt |
Производ- |
dn |
||
ная n-го |
|
|
f (t) |
dt |
n |
||
порядка |
|
|
|
|
|
|
Интеграл b
f (t)dt
a
123
дискретного аргумента i.
[Ctrl] Выполняет перемноже- [Shift]3 ние Х по i=m,m+1,...,n. Х
может быть любым выражением дискретного аргумента i. m и n должны быть целыми числами.
[Shift]# Выполняет перемножение Х по i. Х может быть любым выражением дискретного аргумента i.
[Shift]? Возвращает производную f(t) по t. Все переменные в f(t) должны быть определены. Функция f(t) - скалярная функция скалярного аргумента.
[Shift] Возвращает производ- [Ctrl]? ную n-го порядка f(t) по t. Все переменные в f(t)
должны быть определены. Функция f(t) - скалярная функция скалярного аргумента n должно быть целым между
0 -5.
[Shift]& Возвращает определенный интеграл от f(t) по интервалу [a,b]. a, b - вещественные числа.
Все переменные в f(t) роме переменной t должны быть определены. f(t) должна быть скалярной функцией.
124
Ввод выше перечисленных операторов может быть осуществлен также следующим образом:
нажать иконку и войти в палитру операторов,
нажать кнопку, соответствующую оператору, который необходимо ввести в программу.
Палитра операторов, кроме перечисленных выше, содержит так же оператор неопределенного интеграла и операторы предельного перехода. Для того чтобы вычислить любой из этих операторов, необходимо выполнить следующую последовательность операций:
нажать кнопку соответствующего оператора в палитре опера-
торов,
ввести значение функции и переменную, по которой будет осуществлять действие оператор,
нажимая нажать сочетание клавиш [Contrl] ., или нажать на символ из палитры Symbolic8
Пример: Неопределенный интеграл
В палитре Calculus щелкаем указателем мышки по значку неопределенного интеграла и затем вводим подынтегральное выражение
8 Палитра Symbolic содержит функции, предназначенные для символьных вычислений останавливаться на них мы не будем, поскольку для символьных вычислений целесообразно использовать пакет Maple, рассмотренный выше.
125
cos(x)dx,
нажимаем сочетание клавиш [Contrl] .
cos(x)dx sin(x),
аналогично для предела в палитре Calculus щелкаем указателем мыш-
ки по значку предела lim, вводим выражение, предел которого ищем,
a
переменную, по которой ищем предел и ее значение
limsin(ax),
x 0 x
нажимаем сочетание клавиш [Contrl] .
limsin(ax) a
x 0 x
Решение уравнений
Для решения одного уравнения с одним неизвестным используется функция root. Аргументами функции являются выражение и переменная, входящая в выражение. Ищется значение переменной, которое обращает выражение в ноль. Функция возвращает значение переменной, которое обращает выражение в ноль.
Синтаксис функции root x:=root(f(z),z),
где f(z)=0 - скалярная функция скалярного аргумента.
При использовании данной функции необходимо задать начальное (нулевое) приближение к решению уравнения. Если уравнение имеет не один корень, то решение следует выполнить для разных начальных приближений.
Пример:
OLDTOL:=TOL
TOL:=0.00001
x:=1 x1:=4
f(z):=x2+10z-ez
xкор:=root(f(x),x) x1кор:=root(f(x1),x1) xкор=0.11 x1кор=4.037
TOL:=OLDTOL
126
Предопределенная переменная TOL задает точность решения уравнения (чем меньше TOL, тем точнее решение, однако, тем больше время решения).
Для нахождения корней уравнения, имеющего вид
n
y(x) ai xi 0, i 0
следует воспользоваться функцией polyroots, для которой не требуется задания начального приближения.
|
Синтаксис функции polyroots x:=polyroots(a), |
||||
|
где а - вектор коэффициентов полинома y(x). |
||||
Пример: |
|
запоминаем TOL |
|||
OLDTOL:=TOL |
|||||
TOL:=0.00001 |
|
устанавливаем новое TOL |
|||
f (z): z3 2 z2 |
5 x 2 |
уравнение |
|||
|
2 |
|
|
|
|
|
|
|
|
|
|
5 |
|
|
|
||
a: |
2 |
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
xкор : polyroots(a) |
ищем корни уравнения |
||||
|
|
3.562 |
|
|
|
|
|
|
|
|
найденное решение |
xкор |
0.562 |
|
|||
|
|
1 |
|
|
|
|
|
|
|
|
|
TOL: OLDTOL |
|
восстанавливаем старое TOL |
Для решения системы уравнений необходимо выполнить следующую последовательность операций:
задать нулевое приближение для всех неизвестных, входящих
всистему уравнений,
напечатать ключевое слово Given. Оно указывает Mathcad, что далее будет решаться система уравнений,
ввести ниже Given систему уравнений. Между левой и правой частями уравнений должен стоять знак = ( [Ctrl]=),
введите имя переменной, в которой будет содержаться решение системы уравнений (если вы решаете задачу с n неизвестными, то переменную следует задать, как вектор размерности n, войдя в меню
127
Math подменю Matrices), введите знак присвоения (:=), напечатайте имя функции Find-, аргументами которой являются подлежащие определению неизвестные, записанные в скобках через запятую.
Пример:
OLDTOL:=TOL TOL:=0.0001
x: 0 y: 0
Given
x3 y2 sin(x) exp x2 y2 0 x y: 0.1
a
b : Find(x,y)
a 0.472
b 0.372
a3 b2 sin(a) exp a2 b2 0
TOL:=OLDTOL
начальное приближение
проверка
Решение дифференциальных уравнений
Для решения дифференциального уравнения необходимо задать:
начальные условия,
массив точек, в которых следует найти решение,
дифференциальное уравнение, записанное в специальном виде. Для решения дифференциального уравнения используется функция rkfixed, реализующая метод Рунге-Кутты четвертого порядка. Синтаксис функции rkfixed
z:=rkfixsed(y,x1,x2,n,D),
где y вектор начальных условий размерности n (n - размерность дифференциального уравнения),
x1, x2 начальная и конечная точки интервала, на котором ищется решение уравнения,
n - число точек, в которых ищется решение уравнения. При помощи этого аргумента определяется число строк (1+n) в матрице, возвращаемой функцией kfixed,
D(x,y) функция возвращает вектор размерности m-1 (m порядок дифференциального уравнения), содержащий производные до порядка m-1.
Рассмотрим решение дифференциальное уравнение первого порядка, которое в общем случае можно представить в виде:
128
d y F(x, y), y(0)=y0 - начальное условие, dx
где F(x,y) известная функция своих аргументов. Выражение для функции D(x,y) в этом случае будет иметь вид
D(x,y)=F(x,y). В качестве примера рассмотрим текст программы решения уравнение Бернулли
dy |
x (y2 3 y), |
y0 1, |
|
||
dx |
|
аналитическое выражение для решения этого уравнения известно оно для данного значения y0=1 имеет вид
|
|
|
3 x |
2 |
|
1 |
y 3 |
4 exp |
|
|
|
1 . |
|
|
|
|||||
|
|
|
2 |
|
|
|
|
|
|
|
|
|
Текст программы численного решения уравнения приведен ниже: n:=100 число точек, в которых ищется решение уравнения a:=0 начальная точка интервала
b:=0.9 конечная точка интервала y0:=1 начальное условие
D(x,y):=x ((y0)2+3 y0) z:=rkfixed(y,a,b,n,D)
извлекаем из матрицы z столбец, содержащий решение уравнения задаем дискретный аргумент
h: (b a)n задаем шаг изменения аргумента x задаем дискретное значение точного решения уравнения vi : 3 4 exp 1.5 i h 2 1
относительная погрешность численного решения уравнения di : ui vi vi
График относительной погрешности численного решения
129
Решение системы дифференциальных уравнений первого порядка
Рассмотрим в качестве примера решение следующей системы уравнений
dx1 |
x |
cos(t), |
x (0) 1 |
|
dt |
||||
1 |
|
1 |
dx2 x1 exp( sin(t)), x2(0) 1 dt
или в матричном виде
d |
x1 |
|
|
|
x1 cos(t) |
|
|
|
1 |
||
|
|
|
|
|
|
|
, |
x |
|
|
|
dt |
|
|
|
|
|||||||
x |
2 |
|
x |
exp sin(t) |
|
0 |
1 |
||||
|
|
|
|
1 |
|
|
|
|
|
|
Текст программы численного решения системы уравнений OLDORIGIN:=ORIGIN запоминаем старое значение ORIGIN ORIGIN:=1 устанавливаем новое значение
n:=100 число точек, в которых ищется решение уравнения. a:=0 начальная точка интервала
b:=2 конечная точка интервала
1
x: начальные условия
1
|
x cos(t) |
|
D(t,x): |
1 |
|
x1 |
exp( sin(t)) |
z:=rkfixed(x,a,b,n,D)
u:=z<1> |
извлекаем из матрицы z столбец, содержащий |
||
v:=z<2 > |
решение системы уравнений x1 |
||
извлекаем из матрицы z столбец, содержащий |
|||
i:=1..n |
решение системы уравнений x2 |
||
задаем дискретный аргумент |
|||
h: |
b a |
задаем шаг изменения аргумента t |
|
n |
|||
|
|
задаем дискретные значения точных решений системы уравнений
Ui: exp(sin((i 1) h)),
Vi: (i 1) h 1
относительные погрешности численного решения системы уравнений
d1 : |
ui Ui |
, |
d2 |
i |
: |
vi Vi |
|
|
|||||
i |
Ui |
|
|
Vi |
||
|
|
|
|
ORIGIN:=OLDORIGIN восстанавливаем старое значение.
График относительных погрешностей численного решения
130
Решение дифференциальных уравнений порядка выше первого
Рассмотрим уравнение
n |
n 1 |
i |
i |
||
d |
y fi(t,y) |
d |
y F(t, y), |
d |
y(0) ai, i=0,...,n-1 |
n |
i |
i |
|||
dt |
i 0 |
dt |
dt |
Введя замену переменных d yi 1 yi , преобразуем исходное уравне- dt
ние в систему уравнений
d |
y |
i 1 |
y |
, |
y |
(0)=a , i=1,2,...,n-1 |
|
dt |
|||||||
|
i |
|
i |
i |
|||
d |
|
|
|
|
|
n 1 |
|
yn 1 F(t,y0) fi (t,y0) yi |
|||||||
dt |
|||||||
|
|
|
|
|
i 0 |
Выражение для функции D(t,y) примет вид
|
y1 |
|
|
y2 |
|
|
|
|
D(t, y) |
: |
|
|
n 1 |
|
|
|
|
F(t, y0) fi |
(t, y) yi |
|
|
i 0 |
|
В качестве примера рассмотрим решение уравнения
d3 |
y 6 |
d2 |
y 12 |
|
d |
|
y 8 y exp(2 t) |
||
dt3 |
dt2 |
|
|
|
|||||
|
|
dt |
|
||||||
y(0) 1, |
d |
y(0) = 3, |
|
|
d2 |
y(0) 10 |
|||
dt |
|
dt2 |
|||||||
|
|
|
|
|
|
|
Текст программы
OLDORIGIN:=ORIGIN запоминаем старое значение ORIGIN ORIGIN:=1 устанавливаем новое значение n:=100 число точек, в которых ищется решение уравнения. a:=0 начальная точка интервала
b:=2 конечная точка интервала