Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Транспонирование матриц.

Двумерные массивы. Квадратные матрицы.

 

В квадратной матрице количество строк и столбцов - одинаково и равно n.

Любая квадратная матрица имеет элементы главной и побочной диагонали.

Диагональные элементы главной диагонали: a[1, 1]; a[2, 2]; a[3, 3]; ….; a[n, n].

Элементами побочной диагонали являются: a[1, n]; a[2, n-1]; a[3, n-2]; …; a[n-1, 2]; a[n, 1].

В качестве примера рассмотрим задачу формирования квадратной матрицы порядка n случайными числами и нахождения произведения элементов главной диагонали и суммы элементов ниже побочной диагонали.

Отметим элементы главной диагонали для нахождения их произведения. И элементы ниже побочной диагонали для поиска их суммы.

 


Program Prpizv_Summa;

Const

n=9;

Var

a: array [1..n, 1..n] of integer;

I, j, s, p: integer;

Begin

randomize;

for i: =1 to n do

Begin

for j: =1 to n do

Begin

a[ i, j ]: = random (101);

write (a[ i, j ]: 6);

end;

writeln;

End

p: =1;

for i: =1 to n do

p: =p*a[ i, i ];

s: =0;

for i: =2 to n do

for j: =n-i+2 to n do

s: =s+a[ i, j ];

writeln (p, s);

Readln;

End.


 

Транспонирование матриц.

 

В данном алгоритме транспонирования матрицы необходимо заменить строки матрицы ее столбцами, а столбцы - строками, т.е. вычислить b[ i, j ]: =a[ j, i ], где i=1, …, n; j=1, …, m.


Матрица А

         
      -7  
    -45    
      -45  
  -4 -8    
         
    -45 -37 -23
  -45   -3  

 

 

Матрица B

               
        -4     -45
    -45   -8   -45  
  -7   -45     -37 -3
            -23  



Program Prpizv_Summa;

Const

n=5;

m=7;

Var

i, j: integer;

a: array [1..n, 1..m] of integer;

b: array [1..m, 1..n] of integer;

Begin

randomize;

writeln (‘Сформирована матрица A’);

for i: =1 to n do

Begin

for j: =1 to m do

Begin

a[ i, j ]: = random (31)-15;

write (a[ i, j ]: 6);

end;

writeln (‘’);

end;

for i: =1 to n do

for j: =1 to m do

b[ j, i ]: =a[ i, j ];

writeln (‘Получена транспонированная матрица B’);

for i: =1 to m do

Begin

for j: =1 to n do

write (b[ i, j ]: 6);

writeln (‘’);

end;

Readln;

End.


 


Транспонированную матрицу можно получить в исходном массиве А. Для квадратной матрицы n*n для этого необходимо поменять местами каждый элемент верхнего треугольника с соответствующим элементом нижнего (диагональные элементы переставлять не нужно).

При этом для каждой строки нужно выполнять перестановку для элементов, расположенных правее главной диагонали, с элементами соответствующего столбца, расположенными ниже главной диагонали. При перестановке используем вспомогательную переменную tmp, помещая в нее для временного хранения один из переставляемых элементов, чтобы не потерять его значение.

 


Program Transpon;

Const

n=9;

Var

i, j, tmp: integer;

a: array [1..n, 1..n] of integer;

Begin

randomize;

writeln (‘Сформирована квадратная матрица A’);

for i: =1 to n do

Begin

for j: = 1 to n do

Begin

a[ i, j ]: = random (101)-50;

write (a[ i, j ]: 6);

end;

writeln (‘’);

end;

for i: = 1 to n-1 do

for j: = i+1 to n do

Begin

tmp: = a[ i, j ];

a[ i, j ]: = a[ j, i ];

a[ j, i ]: = tmp;

end;

writeln (‘Получена транспонированная матрица ’);

for i: = 1 to n do

Begin

for j: = 1 to n do

write (a[ i, j ]: 6);

writeln (‘’);

end;

Readln;

End.


 

 

<== предыдущая лекция | следующая лекция ==>
Ввод – вывод элементов двумерного массива. | Удаление строки матрицы.
Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.011 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал