Материал: Основные математические операции в Maple. методические указания к выполнению лабораторных работ по курсам «Информатика» и «Практикум по информационным технологиям». Кострюков С.А., Пешков В.В

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

 

1

5

 

-1

 

 

 

 

 

 

 

 

 

 

8

24

24

 

 

 

 

 

 

 

 

 

 

 

 

 

-5

-1

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A1 :=

8

24

24

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

-1

 

-1

 

 

 

 

 

 

 

24

8

 

24

 

 

 

 

Умножение матриц использует специальный символ &*

> evalm(A&*A1);

1

0

0

 

 

 

 

 

0

1

 

 

0

 

0

0

 

 

1

То же самое можно найти командой

> multiply(A,A1);

Одной из важнейших задач линейной алгебры является решение систем линейных алгебраических уравнений (СЛАУ).

Пусть требуется решить систему уравнений Ax = b, где

5

матрица A введена ранее, а вектор правых частей b равен 6 .

1

Сначала осуществим ввод вектора b одним из способов:

>b:=matrix(3,1,[5,6,1]); # вводится вектор-столбец

или

>b:=vector([5,6,1]); # вводится вектор-строка

или даже так:

> b:=[5,6,1]; # вводится также вектор-строка

а) решение линейной системы с помощью функции linsolve

> linsolve(A,b);

 

11

-19 3

 

 

 

,

 

 

,

 

 

6

6

 

2

 

 

 

 

 

б) решение линейной системы с помощью обратной матрицы

> multiply(inverse(A),b);

в) решение линейной системы методом Гаусса

Вводим расширенную матрицу:

> Z:=matrix([[2,1,3,5],[5,1,0,6],[7,8,9,1]]);

11

>rref(Z);

Впоследнем столбце результата – решения системы.

Зададим векторы u и v:

>u:=[2,3,5]; v:=[-2.3,4,10];

Скалярное произведение векторов:

>dotprod(u,v);

57.4

Векторное произведение:

> crossprod(u,v);

[10, -31.5, 14.9]

Угол между векторами в радианах:

>psi:=angle(u,v);evalf(psi);

:= arccos(0.1371563117 38 )

 

 

 

 

0.5633174125

 

 

 

 

 

 

Задания для самостоятельной работы

 

 

 

1. Вычислить:

 

 

 

 

 

 

 

 

 

 

 

2

1 2

 

3

1

2

 

 

2 3

2

1

0

 

 

 

 

 

а)

1

 

 

0

3

4

 

; б)

 

 

7

1

.

0

4

 

1

2

2

 

 

1 1

4

 

 

 

 

 

 

 

 

 

 

 

 

2. Решить СЛАУ: а) методом Гаусса; б) с помощью обратной матрицы; в) с помощью функции linsolve:

2x

x

3x

1,

 

1

2

 

3

 

 

x1

4x2

 

2x3

5,

 

3x

2x

 

x

2.

 

1

2

 

3

 

3. Для матрицы системы из задачи 2 найти определитель, транспонированную матрицу, след, ранг.

4. Для векторов p {2, 1, 4}, q { 3, 2, 2} , r {2, 1, 1}

найти смешанное и двойное векторное произведения.

12

4. Операции математического анализа

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

Вычисление производной функции x2 arctg(x – 2) может быть оформлено через функцию diff:

> diff(x^2*arctan(x-2),x);

2 x arctan( x 2 ) x2

1 ( x 2 )2

Обратите внимание на следующую возможность вывода результата (слева так называемая инертная форма функции):

> Diff(x^2*arctan(x-2),x)=diff(x^2*arctan(x-2),x);

d

 

( x2 arctan( x 2 ) ) 2 x arctan( x 2 )

x2

dx

1 ( x 2 )2

 

Рекомендуется сначала набрать и запустить на выполнение левую половину выражения (с функцией Diff), чтобы проверить правильность исходной функции, а затем скопировать ее через буфер обмена и заменить в правой половине D на d.

Производная восьмого порядка:

> Diff(x^2*ln(x-2),x$8)=diff(x^2*ln(x-2),x$8);

d8

 

( x2 ln( x 2 ) )

6720

 

11520 x

 

5040 x2

dx8

( x 2 )6

( x 2 )7

( x 2 )8

 

 

 

Можно попытаться упростить этот результат:

> simplify(");

d8

( x2 ln( x 2) )

240 ( x2 16 x 112)

dx8

( x 2)8

 

Частная производная по x функции двух переменных cos(x/y + 1) x2y:

> diff(cos(x/y+1)*x^2*y,x);

x

 

2

x

 

sin

 

1 x 2 cos

 

1 x y

 

 

y

 

 

y

 

Частная производная по x 2-го порядка:

> Diff(cos(x/y+1)*x^2*y,x$2)=diff(cos(x/y+1)*x^2*y,x$2);

13

Для вычисления производных неявно заданных функций используется функция implicitdiff.

> f:=y^x+ln(y)–1=0; # вводится неявная функция

f:= yx ln( y ) 1

>implicitdiff(f,y,x); # производная функции y(x) по x

yx y ln( y )

yx x 1

> implicitdiff(f,x,y); # производная функции x( y) по y

yx x 1 yx ln( y ) y

> implicitdiff(f,y,x,x); # 2-я производная функции y(x) по x yx y ln( y ) ( ln( y ) 2 ( yx )2 x 2 yx ( yx )2 x ln( y ) yx ln( y ) )

( yx )3 x3 3 x2 ( yx )2 3 yx x 1

Для создания функций с производными может использоваться дифференциальный оператор D. В форме D(f)(x) этот оператор подобен diff(f(x),x).

Чтобы определить функцию u(x), в каждой точке равную производной функции f (x) = sin x2, используем не diff, а оператор D.

>f:=x->sin(x^2);

>u:=D(f);

u := x 2 cos( x2 ) x

Теперь функцию u(x) можно использовать для вычисления значения в точке, построения графика, и т.д.

> u(1.); # значение функции f (x) в точке x=1 1.080604612

4.2. И н т е г р и р о в а н и е а) Неопределенные интегралы

Для вычисления неопределенных интегралов в Maple служит функция int. При этом если аналитического значения интеграла не существует, возвращается исходная запись.

> int(a*x^n,x);

a x( n 1 )

n 1

14

Можно использовать инертную форму функции int:

> Int(ln(x)^3,x);

3

ln( x ) dx

В таком представлении интеграл записывается, но не вычисляется, а чтобы его вычислить, служит функция value:

> value(");

ln( x )3 x 3 x ln( x )2 6 x ln( x ) 6 x

> Int(x^2*sin(x),x)=int(x^2*sin(x),x);

 

2

sin( x ) dx x

2

cos( x ) 2 cos( x ) 2 x sin( x )

x

 

 

 

 

 

 

> Int(sin(x)/x,x)=int(sin(x)/x,x); # эта функция на-

зывается интегральный синус

 

 

 

sin( x )

dx Si( x )

 

 

 

 

x

 

 

 

 

б) Определенные интегралы

Для вычисления определенных интегралов используются те же функции int и Int, в которых надо указать пределы интегрирования, например, x=a..b, если интегрируется функция переменной x.

> Int(sin(x)/x,x=a..b)=int(sin(x)/x,x=a..b);

b

sin( x )

 

 

dx Si( b ) Si( a )

 

 

 

 

x

 

 

 

 

a

 

 

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

Si(1)

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

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

0.9460830704

15

Источник: https://studfile.net/preview/16564688/