- •Вывод данных
- •Условная инструкция «if»
- •Цикл «for»
- •Цикл «while»
- •Процедуры
- •Команды ввода/вывода
- •Самостоятельные упражнения
- •Тема 5. Решение дифференциальных уравнений в системе Maple
- •Тема 6. Линейная алгебра в системе Maple
- •Матричные и векторные операции
- •Математические операции с матрицами и векторами
- •Команды работы со структурой матриц и векторов
- •Примеры применения некоторых команд линейной алгебры
- •Основные операции векторного анализа
Команды работы со структурой матриц и векторов
rowdim(M) число строк матрицы M.
coldim(M) число столбцов матрицы M.
vectdim(v) число элементов вектора v.
addcol(M,i1,i2,expr) формирование новой матрицы, получаемой из матрицы M прибавлением к столбцу i2 столбца i1, умноженного на выражение expr.
addrow(M,i1,i2,expr) аналогична addcol, только для работы со строками матрицы M.
row(M,i) выделение i-ой строки из матрицы M.
col(M,j) выделение j-го столбца из матрицы M.
сoncat(M1,M2) cлияние матриц M1 и M2.
submatrix(M,i1..i2,j1..j2) выделение подматрицы из матрицы M со строками от i1 до i2 и столбцами от j1 до j2.
subvector(v,i..j) выделение подвектора из v с элементами v[i],...,v[j].
delrows(M,i..j) уничтожение столбцов с номерами от i до j у матрицы M.
delcols(M,i..j) уничтожение строк с номерами от i до j у матрицы M.
Примеры применения некоторых команд линейной алгебры
Поясним работу некоторых из перечисленных команд следующими примерами.
> with(linalg):
> M:=matrix(3,3,[[1,2,3],[4,5,6],[7,8,9]]);
> det(M);
(Отметим здесь, что идентификатор M и m – это разные объекты !).
> rank(M);
Добавление 1 к диагональным элементам матрицы M:
> M:=evalm(M+1);
Вычисление обратной к M матрицы (здесь в качестве матрицы M берется матрица с диагональными элементами, увеличенными на 1 по сравнению с первоначально определенной матрицей):
> A:=evalm(1/M);
Проверка правильности определения обратной матрицы:
> B:=evalm(M &* A);
Матрица B – единичная матрица, т.е. обратная матрица определена правильно.
Задание вектора v с элементами x,y,z:
> v:=array(1..3,[x,y,z]);
Умножение матрицы M на вектор v:
> u:=multiply(M,v);
Определение размерности вектора v:
> vectdim(u);
Вычисление cкалярного произведения векторов v и u:
> f:=dotprod(u,v);
> simplify(f);
Основные операции векторного анализа
Gradient(v,x) вычисление градиента вектора v по совокупности переменных x.
Divergence(f,x) вычисление дивергенции функции f по совокупности переменных x.
Curl(v,x) вычисление ротора трехмерного вектора v по трем переменным x.
Laplacian(f,x) вычисление Лапласиана функции f по совокупности переменных x.
Jacobian(v,x) вычисление матрицы Якоби для вектора v по совокупности переменных x.
Приведем некоторые простые примеры:
Подключение необходимой библиотеки и определение рабочей (декартовой) системы координат (x1,y1,z1):
> with(VectorCalculus): SetCoordinates( 'cartesian'[x1,y1,z1] );
Вычисление градиента функции t:
> t := x1^2*y1^2*z1^2;
> r:=Gradient(t);
Задание векторного поля F и вычисление его дивергенции:
> F := VectorField( <x1^2,y1^2,z1^2> );
> r:=Divergence( F );
Задание векторного поля F и вычисление его ротора:
> F := VectorField( <y1*z1,-x1,z1*x1*y1> );
> r:=Curl( F );
Задание функции f и вычисление оператора Лапласа от нее:
> f:=x1^2+y1^2+z1^2;
> t:=Laplacian( f, [x1,y1,z1] );
Задание векторного поля F и вычисление для него матрицы Якоби:
> F := VectorField( <x1^2+z1^3,y1^2,z1^2+x1*y1> );
> M:=Jacobian(F,[x1,y1,z1]);