Что такое побочная диагональ
Диагональные матрицы: определение и свойства
Обновлено: 20 Июля 2021
Матрица — это прямоугольная таблица чисел, состоящая из определенного количества строк и столбцов. Существует множество матричных видов, и один из них — диагональный. Разберемся, что он из себя представляет.
Что такое диагональная матрица
У диагональной матрицы элементы, расположенные вне главной диагонали, равны нулю.
Напомним, что матрица считается квадратной, если количество строк равно количеству столбцов (m = n).
Особенности и свойства
Для начала нужно понять, что такое матричный определитель.
Определитель (детерминант) — это некоторая величина, с которой можно сопоставить любую квадратную матрицу.
Определитель А = (2×2), к примеру, вычисляется по формуле:
Из этого следует свойство №1: определитель диагональной матрицы равен произведению ее диагональных элементов.
Свойство №2: обратная матрица для диагональной равна:
Свойство №3: ранг равен количеству ненулевых диагональных элементов.
Главная и побочная диагонали
Побочной диагональю называют диагональ элементов от правого верхнего угла до нижнего левого. Эти диагонали параллельны друг другу.
Частные случаи диагональных матриц
Существуют три основных подвида: единичная, нулевая, скалярная.
Единичная матрица
У единичной матрицы все диагональные элементы равны единице.
В формулах ее обозначают буквой Е.
Нулевая матрица
В нулевой матрице все элементы, в том числе диагональные, равны нулю.
В формулах ее обозначают цифрой 0.
Скалярная матрица
В скалярной матрице все элементы на главной диагонали равны друг другу.
В некоторых случаях говорят, что скалярная матрица — это произведение скаляра на единичную матрицу Е. В ней диагональные элементы могут быть как положительными, так и отрицательными.
Примеры решения диагональных матриц
Иногда недиагональная матрица может быть приведена к диагональному виду.
Условие: дана матрица А
Задача: привести к диагональному виду.
Решение: характеристическое уравнение равно
Таким образом, диагональная матрица имеет вид:
Изучение данных математических объектов имеет свои подводные камни. Если у вас нет времени на учебу, Феникс.Хелп может помочь вам с решением контрольных, самостоятельных и иных проверочных работ.
Pascal: Занятие № 10. Двумерный массив в Pascal
Двумерный массив в Pascal
Матрица или двумерный массив – это прямоугольная таблица чисел (или других элементов одного типа). Каждый элемент матрицы имеет два индекса (номер строки и номер столбца).
Исходные данные для решения многих задач можно представить в табличной форме:
Таблица результатов производственной деятельности нескольких филиалов фирмы может быть представлена так:
zavod1: array [1..4] of integer; zavod2: array [1..4] of integer; zavod3: array [1..4] of integer;
Или в виде двумерного массива так:
var A: array[1..3,1..4] of integer; begin
begin var a := new integer[3,4]; <. >end.
Описание, ввод и вывод элементов двумерного массива
Варианты описания двумерного массива (традиционный pascal)
const N = 3; M = 4; var A: array[1..N,1..M] of integer;
const M=10; N=5; type matrix=array [1..M, 1..N] of integer; var A: matrix;
for i:=1 to N do for j:=1 to M do begin write(‘A[‘,i,’,’,j,’]=’); read ( A[i,j] ); end;
for var i:=0 to a.RowCount-1 do for var j:=0 to a.ColCount-1 do a[i,j]:=readinteger;
var a := MatrRandomInteger(3,4,0,10); // целые числа в диапазоне от 0 до 10 var a1 := MatrRandomReal(3,4,1,9) // веществ. числа в диапазоне от 1 до 9
Следующий фрагмент программы выводит на экран значения элементов массива по строкам:
for i:=1 to N do begin for j:=1 to M do write ( A[i,j]:5 ); writeln; end;
begin var a := MatrRandomInteger(3,4,0,10); var a1 := MatrRandomReal(3,4,1,9); a.Println; a1.Println(6,1) // 6 позиций всего на вывод, 1 знак после десят. запятой end.
Рассмотрим следующую задачу: Получены значения температуры воздуха за 4 дня с трех метеостанций, расположенных в разных регионах страны:
Номер станции | 1-й день | 2-й день | 3-й день | 4-й день |
---|---|---|---|---|
1 | -8 | -14 | -19 | -18 |
2 | 25 | 28 | 26 | 20 |
3 | 11 | 18 | 20 | 25 |
Т.е. запись показаний в двумерном массиве выглядела бы так:
t[1,1]:=-8; | t[1,2]:=-14; | t[1,3]:=-19; | t[1,4]:=-18; |
t[2,1]:=25; | t[2,2]:=28; | t[2,3]:=26; | t[2,4]:=20; |
t[3,1]:=11; | t[3,2]:=18; | t[3,3]:=20; | t[3,4]:=25; |
Или в pascalabc.NET:
var t := Matr(3,4,-8,-14,-19,-18,25,28,26,20,11,18,20,25); t.Println;
Объявление двумерного массива:
var t: array [1..3, 1..4] of integer;
Самостоятельно подумайте, как находится сумма элементов массива pascal.
Методы матриц для работы со строками и столбцами:
begin var a := MatrRandomInteger(3,4); a.Println; a.Row(0).Sum.Println(); a.Row(1).Average.Println; a.Row(2).Product.Println; a.Col(0).Min.Println; a.Col(1).Max.Println; end.
Главная и побочная диагональ при работе с двумерными матрицами в Pascal
Главная диагональ квадратной матрицы n x n (т.е. той, у которой количество строк равно количеству столбцов) проходит с верхнего левого угла матрицы (элемент 1,1) до правого нижнего угла матрицы (элемент n,n).
Побочная диагональ квадратной матрицы n x n проходит с нижнего левого угла матрицы (элемент n,1) до правого верхнего угла матрицы (элемент 1,n).
Формулу поиска элементов диагоналей проще всего искать, нарисовав элементы матрицы:
Если индексы начинаются с единицы (традиционный Паскаль):
1,1 | 1,2 | 1,3 | 1,4 |
2,1 | 2,2 | 2,3 | 2,4 |
3,1 | 3,2 | 3,3 | 3,4 |
4,1 | 4,2 | 4,3 | 4,4 |
Если индексы начинаются с нуля (pascalAbc.NET):
0,0 | 0,1 | 0,2 | 0,3 |
1,0 | 1,1 | 1,2 | 1,3 |
2,0 | 2,1 | 2,2 | 2,3 |
3,0 | 3,1 | 3,2 | 3,3 |
где n — размерность квадратной матрицы
Побочная диагональ матрицы в pascalAbc.Net имеет формулу:
n=i+j+1
где n — размерность квадратной матрицы
var i,j,n:integer; a: array[1..100,1..100]of integer; begin randomize; writeln (‘введите размерность матрицы:’); readln(n); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(10); write(a[i,j]:3); end; writeln; end; writeln; for i:=1 to n do begin for j:=1 to n do begin if (i=j) or (n=i+j-1) then a[i,j]:=0; write(a[i,j]:3) end; writeln; end; end.
var A:array[1..5,1..5] of integer; i,j:integer; sum,sum1,sum2:integer; begin randomize; for i:=1 to 5 do for j:=1 to 5 do A[i,j]:=random(10); write (‘Исходный массив A: ‘); for i:=1 to 5 do begin writeln; for j:=1 to 5 do write (A[i,j]:2,’ ‘); end; sum1:=0; for i:=1 to 5 do for j:=1 to 5 do if (i-j=1) then sum1:=sum1+A[i,j]; sum2:=0; for i:=1 to 5 do for j:=1 to 5 do if (j-i=1) then sum2:=sum2+A[i,j]; sum:=sum1+sum2; writeln; writeln(‘Сумма = ‘,sum); end.
Рассмотрим еще один пример работы с двумерным массивом.
var index1,index2,i,j,N,M:integer; s,min,f:real; a:array[1..300,1..300] of real; begin N:=10; M:=5; for i:=1 to N do begin for j:=1 to M do begin a[i,j]:=random(20); s:=s+a[i,j]; write(a[i,j]:3); end; writeln; end; f:=s/(N*M); writeln(‘srednee znachenie ‘,f); min:=abs(a[1,1]-f); for i:=1 to N do begin for j:=1 to M do begin if abs(a[i,j]-f)
Матрицы: определение и основные понятия.
Определение матрицы
Количество строк и столбцов задают размеры матрицы.
Обозначение
A = | 4 | 1 | -7 | ||
-1 | 0 | 2 |
Элементы матрицы
Элементы матрицы A4×4:
A = | 4 | 1 | -7 | 2 | ||
-1 | 0 | 2 | 44 | |||
4 | 6 | 7 | 9 | |||
11 | 3 | 1 | 5 |
Демонстрация нулевых и ненулевых строк матрицы:
4 | 1 | -7 |
0 | 1 | -7 | ||
0 | 0 | 2 | ||
sum:=0; for i:=1 to 4 do for j:=1to 4 do if i=j then sum:=sum + a[i, j]; | Другой вариант: sum:=0; for i:=1 to 4 do sum:=sum + a[i, i]; |
Задача 2. Найти сумму элементов матрицы а, расположенных выше ее главной диагонали.
var к, i, j : integer;
writeln (¢введите матрицу d¢);
в которой он находится>
Описание функции содержится в главной программе после раздела описания переменных (var) и перед началом (begin) программы.
В общем виде функция записывается следующим образом:
function имя(формальные параметры) :тип результата;
Раздел описаний
Begin
Раздел операторов
Формальные параметры – это наименования переменных (аргументы описываемой функции), через которые передаются входные данные из программы в функцию. Формальными параметрами функции, как правило, являются параметры – значения.
Само имя функции представляет собой идентификаторпараметр, значение которого после окончания работы функции равно результату вычисления. Тип результата (функции) указывается следом за списком параметров – после закрывающей скобки этого списка и двоеточия.
В разделе операторов функции обязательно должен присутствовать хотя бы один оператор присваивания, в котором переменной с именем, совпадающим с именем функции, присваивается определенное значение, тип которого совпадает с типом результата (функции). Если такого присваивание в разделе операторов функции не выполнено, то функция не возвращает никакого результата (точнее, возвратит произвольный результат).
Например, описания вычисления функции тангенса угла:
function tg(x:real): real;
Вызов и выполнение функции производится при вычислении указателя функции:
имя функции(фактические параметры ).
При этом вызов функции необходимо делать непосредственно внутри выражения, подобно тому, как используются стандартные встроенные функции, например синус sin(x). Фактические и формальные параметры должны согласовываться
¾ по порядку следования,
Например, вызов ранее описанной функции tg можно произвести так:
После выполнения функции выработанный ею результат используется в качестве значения указателя функции в том выражении, в котороe входит этот указатель. При вызове функции передача фактических параметров производится так же, как и при вызове процедуры.
Пример. Заданы стороны двух треугольников MNK (стороны m, n, k) и PLF (стороны p, l, f ). Переменной s присвоить значение –1, если площадь треугольника MNK меньше или равнa площади треугольника PLF, и значение 1 в противном случае.
Вычисление площади треугольников по формуле Герона оформить в виде функции pl.
Примечание. Формула Герона для вычисления площади треугольника со сторонами a, b, c:
,
где , где p – полупериметр треугольника.
var m, n, k, l, p, f, h, q: real;
function pl(a, b, c: real): real;
writeln(‘Введите стороны m, n, k, p, l, f’);
При передаче в функцию массива фактическим параметром является имя массива. Обратим внимание на то, что в заголовке функции для указания типов формальных параметров могут использоваться только имена типов, но не их описания.
Нельзя записать так:
function sum(a: array[1..5] of real; var : real):real;
Пример. Пусть заданы два вектора а(8) и b(12). Вычислить для каждого вектора произведение его элементов.
function prl(var x: vect; n: integer): real;
Пример выполнения задания 7
где Xk – наибольшее из значений элементов K – го столбца матрицы A.
Вычисление наибольшего значения оформить в виде функции.
type matr = array[1..4,1..4] of real;
function max(y:matr; k: integer): real;
writeln(‘введите матрицу a(4,4)’);
Тема 8
Организация программ
С использованием процедур
Довольно часто, уже на этапе разработки алгоритма программы, можно обнаружить, что некоторые одинаковые или очень похожие действия в программе должны выполняться несколько раз. Текст программы, реализующей такой алгоритм, будет содержать последовательность одинаковых операторов.
Избежать дублирования операторов можно, если оформить повторяющуюся последовательность как процедуру и в том месте программы, где надо выполнить эти инструкции, указать ее имя.
В Турбо Паскале процедурой называется часть программы, имеющая имя и предназначенная для решения определенной задачи (вместо термина «процедура», часто используют термин подпрограмма).
Описание процедуры включает заголовок и тело процедуры. Заголовок состоит из зарезервированного слова procedure, идентификатора (имени) процедуры и заключенного в круглые скобки списка формальных параметров с указанием типа каждого параметра.
В общем виде описание процедуры выглядит так:
procedure имя (формальные параметры);
Имя процедуры должно быть уникальным и не должно встречаться в разделе операторов данной процедуры.
Нетрудно заметить, что структура процедуры копирует структуру программы в целом, т. е. состоит из заголовка, раздела описаний и раздела операторов. Различия лишь в заголовках и в том, что в конце процедуры ставится точка с запятой вместо точки в конце программы. Процедура помещается в основной программе после раздела описания переменных и перед разделом операторов основной программы.
Все переменные, представленные в разделе описаний основной программы, называются глобальными. Они действуют как в разделе операторов основной программы, так и в любой процедуре. Переменные, представленные в разделе описаний процедуры, называются локальными. Они действуют только в рамках процедуры и недоступны операторам основной программы.
Формальные параметры – это наименование фиктивных переменных, через которые передается информация из программы в процедуру (входные параметры) либо из процедуры в программу (выходные параметры). Выходным параметрам присваиваются результаты вычислений.
Описание процедуры, расположенное в описательной части программы, само по себе никакого действия не производит. Выполнение программы начинается с выполнения раздела операторов основной программы. Для обращения к процедуре применяется оператор вызова процедуры, который имеет вид:
Имя процедуры(список фактических параметров).
Фактические параметры отделяются друг от друга запятыми и являются реальными объектами программы, замещающими в разделе операторов процедуры формальные параметры. Описание фактических параметров содержится в разделе описаний переменных основной программы.
При вызове процедуры компьютер производит следующие действия. Сначала устанавливает взаимно однозначное соответствие между фактическими и формальными параметрами.
Соответствие между фактическими и формальными параметрами должно быть следующим:
– число фактических параметров должно быть равно числу формальных параметров;
– соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.
Данные из основной программы поступают в процедуру. Затем управление передается процедуре. Результаты выполнения процедуры передаются в основную программу и управление передается на оператор, следующий за вызовом процедуры. Соответствующие формальные и фактические параметры во избежание путаницы обычно обозначают разными буквами.
Параметры
Параметры, перед которыми отсутствует зарезервированное слово var и за которыми следует тип, называются параметрами-значениями. Например, в описании
procedure korrect (s, к : real; x : integer);
s, k, x –параметры-значения. Фактический параметр, соответствующий параметру-значению, может быть выражением соответствующего типа, например:
Изменение формальных параметров-значений не влияет на значения соответствующих фактических параметров.
Параметры, перед которыми следует ключевое слово var и за которым следует тип, называются параметрами-переменными. Например, в описании
procedure obr(var s, k: real; var x : integer);
s, k, x – параметры-переменные. Фактический параметр, соответствующий параметру-переменной, может быть только переменной, например:
где а, b – переменные вещественного типа, а k –целого типа.
Любые изменения в значении формального параметра-переменной отражаются на фактическом параметре.
Параметр-переменная используется в том случае, если значение должно быть передано из процедуры в вызывающий блок.
Пример. Решить два квадратных уравнения и
,
считая, что его дискриминант неотрицателен.
procedure sq( a, b, с : real; var xl, x2: real);
- Что такое переуступка квартиры в новостройке
- Что такое невроз горла