Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Построение матриц



Выделим некоторые подтипы таких задач.

1. Элементы матрицы зависят от своих же индексов, т. е. от номера строки и (или) столбца.

Пример 16 (см. пример 3). Построить матрицу по правилу Aij = (i+1)*(j+1);

2. При построении матрицы используется одно число.

Пример 17. Для заданных значений x и n построить квадратную матрицу размерности n:

1 x x2 x3 … xn-1

x 0 0 0 … xn-2

x2 0 0 0 … xn-3

… … … … … …

xn-1 xn-2 xn-3 x… 1

Предлагается следующий алгоритм. Очередной элемент “периметра” матрицы получаем так: умножаем предыдущий элемент на x и помещаем его в первую и последнюю строки, в первый и последний столбцы. Для этого достаточно одного цикла. const n=5; float A[n][n], x, T=1;

cin>> x; /* Ввели только одно число */

A[0][0]= A[n-1][n-1]=1;

for (int i=1; i<n; i++) { T*=x;

A[0][i]= // элементы 0 –й строки,

A[i][0]= // элементы 0 –го столбца,

A[n-1][n-1-i]= // элементы(n-1) –й строки,

A[n-1-i][n-1]= T; } // элементы (n-1) –го столбца

/* Все “центральные” элементы обнуляем */

for (int i=1; i<n-1; i++)

for (int j=1; j<n-1; j++) A[i][j]=0;

3.Матрицу можно построить, используя один или несколько одномерных массивов.

Пример 18. Дан одномерный массив b[n]. Построить матрицу A[n][m] по следующему правилу:

b0 b0+1 b0+2 … b0 +(m-1)

b1 b1+1 b1+2 … b1 +(m-1)

… … … …

bn-1 bn-1 +1 bn-1 +2 bn-1 +(m-1).

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

for (int i=0; i<n; i++)

for (int j=0; j<m; j++) A[i][j]=b[i]+j;

4. Новая матрица строится на основе одной или нескольких определённых к этому времени матриц.

Пример 19. Из вещественной матрицы С[n][m]. получить новую матрицу такой же размерности A[n][m] по правилу: положительные числа исходной матрицы увеличим в 10 раз, а отрицательные уменьшим в 10 раз:

for (int i=0; i<n; i++)

for (int j=0; j<m; j++)

{ t= C[i][j]; A[i][j] = t>0? t*10: t/10; }

Заметим, что старая матрица С не изменилась, а построенная разместилась на новом месте.

Следует отличать такую задачу от задачи, в которой исходная матрица преобразуется, а изменённые её значения сохраняются на том же месте. Для решения в такой постановке достаточно с помощью тех же циклов записать

t= C[i][j]; С[i][j] = t>0? t*10: t/10;. В таком варианте матрица С задана, она же в результате преобразований изменяется, то есть новые значения заменяют старые на том же месте оперативной памяти. Новая матрица А в таком случае не нужна.

Этот параграф, безусловно, не претендует на полное исследование всех типов матричных алгоритмов. Приведены основные наиболее простые из них, которые можно использовать при начальном изучении программирования с минимальным знанием математической теории матриц. Более сложные задачи состоят, как правило, из отдельных рассмотренных выше “кирпичиков”.





Дата публикования: 2015-02-18; Прочитано: 206 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...