Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Пример 3. Вычисление следа матрицы

Массивы

Массив состоит из нескольких элементов одного и того же типа. Можно выбирать любой элемент массива. Для этого необходимо задать индекс, который указывает относительную позицию элемента в массиве. Число элементов массива задается при его объявлении и в дальнейшем не меняется. Если массив объявлен, к любому его элементу можно обратиться следующим образом: указать имя массива и индекс его элемента в квадратных скобках.

Массивы объявляются так же, как и переменные. Например:

int a[100];

float c[10][20];

В первой строке объявляем массив а из 100 элементов целого типа: а[0],a[1], …,a[99] (индексация всегда начинается с нуля). Во второй строке объявлен двумерный массив вещественного типа. Двумерный массив представляется как одномерный, элементы которого являются тоже массивами. В первых квадратных скобках указывается количество строк в массиве, во вторых – количество столбцов.

 

Массив можно инициализировать, т.е. присвоить его элементам начальные значения. Это делается при объявлении типа массива, например: int a[5]= { 0, 0, 0, 0, 0};

 

Это значит, что все элементы массива получают нулевое значение.

При инициализации число элементов можно не указывать, т.к. в этом случае оно может быть вычислено по количеству присваиваемых значений (в фигурных скобках), например:

 

int a[] = {10,20,30,40,50};

 

Двумерный массив можно инициализировать следующим образом:

 

int a[][3] = {

{10,20,30},

{40,50,60},

{70,80,90}

};

Первая размерность массива будет определена автоматически.

 

Пример 1. Работа с одномерным массивом

 

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

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

float array [10];

int i;

String S;

 

for (i=0;i<10;i++)

array[i] = i*i;

for (i=9;i > -1;i --)

{

S.sprintf ("array[%2d] = %4.2f", i, array[i]);

Memo1->Lines->Add(S);

}

}

Пример 2. Создаем и выводим на экран единичную матрицу

 

Квадратная матрица размера (порядка ), где для всякого , и для всяких , называется единичной матрицей порядка . Единичная матрица размера обычно обозначается и имеет вид:

Так же используется и другое обозначение: .

Свойства

  • Произведение любой матрицы и единичной матрицы подходящего размера равно самой матрице:

  • Квадратная матрица в нулевой степени дает единичную матрицу того же размера:

  • При умножении матрицы на её обратную матрицу получается единичная матрица:

  • Единичная матрица получается при умножении ортогональной матрицы на ей транспонированную:

  • Определитель единичной матрицы равен единице:

.

 

void __fastcall TForm1::Button2Click(TObject *Sender)

{

float E[10][10];

int i, j;

String S;

 

for (i=0;i<10;i++)

for (j=0;j<10;j++)

if (i == j) E[i][j] =1.0;

else E[i][j] =0.0;

 

// вывод на экран

 

for (i=0;i<10;i++)

{

S.sprintf ("");

Memo1->Lines->Add(S);

 

for (j=0;j<10;j++)

S.cat_sprintf("%1.0f ",E[i][j]);

 

Memo1->Lines->Add(S);

}

 

return;

}

Пример 3. Вычисление следа матрицы.

След м а трицы – это сумма диагональных элементов матрицы. Это понятие устанавливается только для квадратной матрицы

След матрицы обозначается через Sp A (от нем. Spur — след) или Тr А (от англ. tract — след).

Таким образом: Sp А = a11+ a22 +... + ann.

void __fastcall TForm1::Button3Click(TObject *Sender)

{

float Tr = 0.0,A[][5]={

{1,2,3,4,5},

{6,7,8,9,5},

{5,6,7,8,9},

{2,3,5,6,5},

{1,2,3,4,5}

};

String S;

 

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

Tr = Tr + A[i][i];

S.sprintf ("Tr A= %4.2f", Tr);

Label1->Caption=S;

 

return;

}



<== предыдущая лекция | следующая лекция ==>
Марки и классы сталей и их структура после окончания термической обработки | Лабораторная работа 1. Матвед
Поделиться с друзьями:


Дата добавления: 2016-09-03; Мы поможем в написании ваших работ!; просмотров: 909 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Неосмысленная жизнь не стоит того, чтобы жить. © Сократ
==> читать все изречения...

2345 - | 2058 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.