вторник, 27 ноября 2007 г.

Maxima. Операции над матрицами

В мануале не нашел так часто употребляемых младшекурсниками процедур таких как:

  • умножение столбца на число;
  • умножение строки на число;
  • сложение одной строки с другой, умноженной на число;
  • сложение одного столбца с другим, умноженным на число.
Все эти процедуры не изменяют ранга матриц. Тем и хороши :)

M - матрица n на n

умножение j-го столбца на k
mulcol (M, j, k) :=
block ( _c: col (M, j) . k,
for i:1 thru n do M[i][j] : _c[i][1],
M );


умножение i-ой строки на k
mulrow (M, i, k) :=
block ( _r: row (M, i) . k,
for j:1 thru n do M[i][j] : _r[1][j],
M );

сложение i_to-ой строки с i_from-ой, умноженной на k
sumrows (M, i_from, i_to, k) :=
block( row_from : row (M, i_from) . k,
for j:1 thru n do M[i_to][j] : M[i_to][j] + row_from[1][j],
M );


сложение j_to-го столбца с j_from-ым, умноженным на k

sumcols (M, j_from, j_to, k) :=
block( col_from: col (M, j_from) . k,
for i:1 thru n do M[i][j_to] : M[i][j_to] + col_from[i][1],
M );

Комментариев нет: