34856

Матрицы (математика)

Лекция

Информатика, кибернетика и программирование

Для обработки наборов данных одного типа вводится понятие массива. Одномерные массивы Описание типа массива задается в разделе описаний TYPE следующим образом: имя типа =RRY [диапазон индексов] OF тип ; здесь имя типа правильный идентификатор; RRY OF – зарезервированные слова массив из; диапазон индексов – границы изменения индексов; тип – любой тип ТурбоПаскаля. Здесь 12345 – индексы элементов массива номера ячеек в которых они находятся; 5601029 – элементы массива типа INTEGER. Тогда тип данного...

Русский

2013-09-08

93 KB

0 чел.

Матрицы  (математика)

Матрица, имеющая только одну строку, называется матрицей-строкой (или вектором-строкой).

А=[a1 a2an]

Матрица, имеющая только один столбец, называется матрицей-столбцом (или вектором-столбцом)

Если число строк = числу столбцов – матрица называется квадратной.

Главной диагональю квадратной матрицы называется диагональ, проходящая через верхний левый и нижний правый углы, т.е. совокупность элементов вида aii, где i=1,2,…n 

Квадратная матрица, у которой все элементы, расположенные вне главной диагонали, равны 0, называется диагональной. Эта матрица имеет вид:

A=

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

E=

Квадратная матрица, в которой все элементы расположены симметрично относительно главной диагонали, называется симметричной (имеет место равенство ai j=aj i, ij)

Например:  A=

           Матрица, все элементы которой равны 0, называется нулевой.

Если в матрице размера mxn заменить строки соответственными столбцами, то получится матрица размера nxm, которая называется транспонированной по отношению к матрице А.

А=         АТ=

Структурированные типы данных. Массивы.

Типы данных в языке ПАСКАЛЬ делятся на простые и структурированные (сложные). К простым типам относятся стандартные, перечислимые и ограниченные; к структурированным типам — массивы, множества, записи, файлы. Элементами сложных типов могут быть простые типы, а также, в свою очередь, структурированные типы.

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

        Массив фиксированное количество упорядоченных однотипных данных, хранящихся последовательно. Массив обозначается одним именем. Он обязтельно имеет размеры.

Одномерные массивы

Описание типа массива задается в разделе описаний TYPE следующим образом:

<имя типа>=ARRAY [диапазон индексов] OF <тип>;

здесь

<имя типа> - правильный идентификатор;

ARRAY, OF  – зарезервированные    слова (массив, из);

диапазон индексов – границы изменения индексов;

<тип> – любой тип Турбо-Паскаля.

Например:
         Дан массив А, состоящий из 5 целых чисел.

Здесь 1,2,3,4,5 – индексы элементов массива (номера ячеек, в которых они находятся);

          56,0,10,-2,9 – элементы массива типа INTEGER.

Тогда тип данного массива можно записать:

TYPE

        Mass = ARRAY [1..5] OF INTEGER;

Массив описывается следующим образом:

Если массив – константа, то в разделе описания  CONST:

CONST  

<имя массива>:<тип массива>=(элемент1,элемент2,…,элементN);

Для нашего примера:

TYPE   mass=array [1..5] of INTEGER;

CONST 

            A:mass=(56,0,10,-2,9);

Определить константу как массив можно и непосредственно при описании этой константы, без предварительного описания типа массива:

CONST  A:array [1..5] of INTEGER =(56,0,10,-2,9);

 Если массив – переменная величина, то он описывается в разделе описания переменных:

TYPE mass=array [1..5] of INTEGER;

VAR   A:mass;

Определить переменную как массив можно и непосредственно при описании этой переменной без предварительного описания типа массива:

VAR  A: array [ 1..5] of INTEGER;

Ссылка на конкретный элемент массива осуществляется путем указания имени массива и порядкового номера этого элемента.

Таким образом,

A[1]:=56;

A[2]:=0;

A[3]:=10;

A[4]:=-2;

A[5]:=9;

-----------------------------------------------------

          В качестве значений диапазона могут использоваться идентификаторы, если их значения определены выше.

              const

                        N=10; L=5;

              var

massiv1: array [1..N] of real;

massiv2: array [1..L] of integer;

      Если несколько массивов имеют одинаковый тип индексов и одинаковый базовый тип, то допускается в описании объединять массивы в список, например

             var А, В, С : array [1..50] of real;

         Здесь объявлено списком три массива А, В, С действительных чисел, каждый из которых содержит по 50 элементов (от 1 до 50):

Нельзя путать понятия «индекс» и «тип индекса». Тип индекса используется только в разделе описания массива, а индекс указывается в разделе операторов для обозначения конкретных элементов массива.

В качестве индекса может быть выражение, частным случаем которого является константа или переменная. Элемент массива иначе называется переменной с индексом. В отличие от нее переменная без индекса называется простой переменной.

Элементы массива могут стоять как в левой части оператора присваивания, так и в выражениях. Над элементами массива можно производить те же операции, которые допустимы для данных его базового типа. Если базовый тип есть INTEGER, то допустимы все операции над данными целого типа, включая и стандартные функции.

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

Ввод массива

Если вы вводите значения элементов массива с клавиатуры, то получится следующая запись:

.

.

for i:=1 to 5 do

read(a[i]);

.

Можно заполнить массив с помощью генератора случайных чисел:

.

.

randomize;

for i:=1 to 5 do

a[i]:=random(50);

.

.

В этом случае массив заполнится случайными целыми числами от 0 до 49.

Если использовать запись a[i]:=random; массив заполнится случайными действительными числами от 0 до 1.

Вывод массива

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

вывод в одну строку –

.

.

for i:=1 to 5 do

write(a[i],’  ‘);

.

.

вывод в столбец

.

.

for i:=1 to 5 do

writeln(a[i]);

.

.

Примеры:

1. Вычислить сумму пятнадцати целых чисел. Для обозначения чисел введем имя массива x, элементы которого имеют индекс i. Сумму обозначим именем sum. Тогда sum=x[1] +x[2] + ••• +x[15].

----------------------------------------------

Program P1;

var

         x : array [1..15] of integer;

          sum, i: integer;

begin

      sum:=0;

             for  i:=1 to 15 do

              begin

                 read(x[i]);

                  sum:= sum + x[i];

                end;

        writeln(‘sum=’,sum);

  end.

Внутри цикла вводится значение одного элемента массива x[i] и оно прибавляется к значению текущей суммы sum. Цикл повторяется 15 раз. Элементы массива имеют целый тип (integer), а индекс — ограниченный тип 1..15.

Переменная i, с одной стороны, используется как параметр цикла, а с другой — в качестве индекса. В этом случае описать переменную i можно двояко:

а) в разделе переменных var указать переменную i как ограниченного типа, например

var

                           x : array [1..15] of integer;

   i :1..15;

б) учитывая, что элементами ограниченного типа являются целые числа, можно ввести описание integer, например

var

                         x : array [1..15] of integer;

 i : integer;

Так как в языке ПАСКАЛЬ требуется описание всех переменных, то необходимо описать еще и переменную sum. Естественно, что она имеет тип integer, так как все суммарные числа x[i] имеют целый тип

---------------------------------------------------------------------------------------

  1.  Рассчитать сумму элементов массива А из N элементов (7<N<10).

----------------------------------------------------------------------------------------

Program massiv;

var i,n:byte;

     s:integer;

     a:array [ 1..10] of integer;

       begin

         writeln(‘введите n от 7 до 10’);

            read(n);

                  s:=0;

                    for i:=1 to n do

                        begin

                          read(a[i]);

                            s:=s+a[i];

                        end;

                          writeln(‘s=‘,s);

            end.

-------------------------------------------------------------------

  1.  Вычислите произведение 10 элементов массива А вещественного типа.

-----------------------------------------------------------------------------------------------

Program  massiv1;

Var

       p : real;

        i : integer;

        a:array [1..10] of real;

          begin

              p := 1;

               writeln('Введите массив a');

                 for i: = 1 to 10 do

                   begin

                       read(a[i]);

                          p:=p*a[i];

                     end;

                               writeln('p=',p:10:4);

           end.

-------------------------------------------------------------------------------

  1.  Даны n натуральных чисел a1, a2, ... an. Определите среднее арифметическое членов последовательности, которые кратны 3 и не кратны 5.

--------------------------------------------------------------------------------

Program sr;

 Var  a : array [1..50] of integer;

     i, n, k : integer;

       s, sa : real;

   begin

    writeln('Bведите n');

         readln(n);

          writeln('Введите элементы массива a');

           for i:=l to n do

              read(a[i]);

             writeln;

               s:=0;

               k:=0;

                 for i:=1 to n do

                    begin

                      if (a[i] mod 3=0) and (a[i] mod 5<>0) then

                          begin

                                s:=s+a[i];   

                              k:=k+1;

                        end;   

                  end;

                      if k=0 then

                            writeln('Нет решения')

                        else

                                   begin

          sa:=s/k;

  writeln('sa=',sa:12:3);

                end;

             end.

---------------------------------------------------------------------------

Понятие многомерных массивов

До сих пор мы рассматривали массивы, каждый элемент которых содержал только один индекс. Такие массивы обычно называются одномерными. В математике часто используются многомерные массивы, т. е. массивы массивов. Особенно широкое распространение получили двухмерные массивы, иначе называемые матрицами. 

Описание двумерного массива: 

 Type

  <имя>=array[диапазон1,диапазон2] of <базовый тип>;

диапазон1, диапазон2 – диапазоны для двух индексов.

Например, изображение целых чисел последовательно в нескольких строках является матрицей:

                    5  4  3  6

                    2  8  1  7

                    4  3  9  5

Данная матрица имеет размер 3 на 4, т. е. она состоит из трех строк и четырех столбцов. Если всю матрицу обозначить одним именем, например А, то каждый элемент матрицы обозначается с двумя индексами, например A[I,J]. Здесь первый индекс I обозначает номер строки (I = 1, 2, 3), второй индекс J — номер столбца (J = 1, 2, 3, 4). Такую матрицу можно описать следующим образом (с использованием имени типа Т):

TYPE  

       Т=ARRAY [1..3, 1..4]  OF INTEGER;

VAR  А:Т;

ПРИМЕРЫ ПРОГРАММИРОВАНИЯ ЗАДАЧ С ИСПОЛЬЗОВАНИЕММАССИВОВ

Найти максимальный элемент массива В

а) массив – константа

Program m1;

 const

   B:array[1..2,1..5] of integer=((4,3,2,-1,0),(-7,0,13,2,8));

   var

     max,i,j:integer;

  begin

     max:=b[1,1];

     for i:=1 to 2 do

     for j:=1 to 5 do

      if b[i,j]>max then max:=b[i,j];

      writeln('max=',max);

      end.

--------------

Ответ

max=13

-----------------------------------------------------------

б) Массив – переменная величина; элементы массива задаются с клавиатуры.

Program m4;

  type

   mass=array[1..2,1..5] of integer;

   var

     B:mass;

     max,i,j:integer;

  begin

    writeln('введите массив В');

       for i:=1 to 2 do

       for j:=1 to 5 do

        read(b[i,j]);

         writeln;

         max:=b[1,1];

          for i:=1 to 2 do

          for j:=1 to 5 do

           if b[i,j]>max then max:=b[i,j];

            writeln('max=',max);

      end.

--------------------

Ответ

введите массив В

4 3 5 2 6

9 8 -4 67 2

max=67

--------------------------------------------------------------------------------

в) Массив – переменная величина; элементы массива задаются с помощью генератора случайных чисел RANDOMIZE.

Program m3;

  var

   B:array[1..2,1..5] of integer;

     max,i,j:integer;

  begin

   randomize;

    writeln('введите массив В');

       for i:=1 to 2 do begin

       for j:=1 to 5 do begin

        b[i,j]:=random(30)-10;

         write(b[i,j]:3,' ');

         end;

          writeln;

           end;

           writeln;

            max:=b[1,1];

             for i:=1 to 2 do

             for j:=1 to 5 do

              if  b[i,j]>max then max:=b[i,j];

               writeln('max=',max);

      end.

-----------------------------

Ответ

введите массив В

18  10  17  10  10

12  10   7   8  19

max=19

--------------------------------------------------------------------------------------------------

г) Описание типа массива задаётся в разделе описаний типа TYPE; массив – переменная величина; элементы массива вводятся  с клавиатуры.

Program m4;

  type

   mass=array[1..2,1..5] of integer;

   var

     B:mass;

     max,i,j:integer;

  begin

    writeln('введите массив В');

       for i:=1 to 2 do

       for j:=1 to 5 do

        read(b[i,j]);

         writeln;

         max:=b[1,1];

          for i:=1 to 2 do

          for j:=1 to 5 do

           if b[i,j]>max then  max:=b[i,j];

            writeln('max=',max);

      end.

------------------------------------

Ответ

введите массив В

5 6 7 8 4

9 8 7 6 -5

max=9

----------------------------------------------------------------------------------------------------

Пример (одномерные массивы)

Вычислить сумму действительных чисел.

Программу составим в трех вариантах: в варианте 1 массив не используется, в варианте 2 он описывается в разделе переменных, в варианте 3 массив определяется в разделе типов.

Для иллюстрации результата выполнения программы возьмем семь конкретных чисел 5.1, 6.4, 8,7, 1.9, 3.6, 2.0, 4,2

           PROGRAM АЗО;

               CONST N=7;                      (* КОЛИЧЕСТВО ЧИСЕЛ *) 

                  VAR

  A : REAL;            (* ВВОДИМОЕ ЧИСЛО *) 

        SUM : REAL;                 (* СУММА *)

       I: INTEGER;     (* ПАРАМЕТР ЦИКЛА *)

  BEGIN

  SUM:=0;

                       WRITELN('ВВЕДИТЕ ЧИСЛА ЧЕРЕЗ ПРОБЕЛЫ:');

             FOR 1:=1 TO N DO

               BEGIN

                 READ(A);

                   SUM:=SUM +A

                 END;

                     WRITELN('----------------------------------');

              WRITELN ('СУММА ЧИСЕЛ =', SUM:6:2 )

   END.

Здесь каждое число вводится внутри цикла и прибавляется к накапливаемой сумме SUM. Значение переменной А изменяется внутри цикла. После выполнения всего цикла значение А равно последнему введенному числу. Для А отведена одна ячейка памяти ЭВМ, если условно считать, что действительное число занимает одну ячейку.

    ВЫЧИСЛЕНИЕ СУММЫ,  2-й  ВАРИАНТ   

  

PROGRAM A31;

 CONST N=7;                                      (* КОЛИЧЕСТВО ЧИСЕЛ *) 

     VAR

        A : ARRAY[1..N] OF REAL;     (* МАССИВ ЧИСЕЛ *)

           SUM : REAL;                          (* СУММА  *)

    I : INTEGER;                            (* ПАРАМЕТР ЦИКЛА *)

       BEGIN

   WRITELN('ВВЕДИТЕ МАССИВ ЧИСЕЛ ЧЕРЕЗ ПРОБЕЛЫ:');

       FOR  I:=1 ТО  N DO

         RЕAD(А[i] ) ;

          SUM:=0;

               FOR  I:=1 ТО  N DO

                  SUM:=SUM +A[I] ;

                                WRITELN('----------------------------------'):

                WRITELN('СУММА ЧИСЕЛ = ‘, SUM:6:2 )

       END.

Здесь в разделе переменных VAR явно описан массив А. Для массива выделяется память в количестве семи ячеек, т. е. для каждого числа одна ячейка. В разделе операторов с помощью цикла сначала вводятся все значения элементов массива А. Затем организуется новый цикл для вычисления суммы. Применение массива приводит к увеличению используемой памяти ЭВМ - вместо одной ячейки (см. вариант 1) здесь выделено семь ячеек памяти. В то же время значения элементов массива сохраняются в памяти ЭВМ, и их можно использовать и после окончания выполнения циклической части.

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

ВЫЧИСЛЕНИЕ СУММЫ,     3-й ВАРИАНТ  

PROGRAM А32А;

      CONST N=7;                                      (* КОЛИЧЕСТВО ЧИСЕЛ *) 

   TYPE Т=ARRAY[1..N] OF REAL;      (* ТИП МАССИВА *)

VAR

А:Т;                                (* МАССИВ *)

 SUM:REAL;                (* СУММА *)

             I:INTEGER;        (* ПАРАМЕТР ЦИКЛА *)

     BEGIN

                   WR1TELN('ВВЕДИТЕ МАССИВ ЧИСЕЛ ЧЕРЕЗ ПРОБЕЛЫ:');

     FOR I:=1 ТО  N  DO

 READ(А[I]);

  SUM:=0;

       FOR I:=1TO N DO

          SUM:=SUM +A[I] ;

                         WRITELN('----------------------------------');

              WRITELN('СУММА ЧИСЕЛ = ', SUM:6:2 )

     END.

Вариант З отличается от предыдущего только введением типа массива, что делает программу более эффективной

PAGE  1


         

               1             2                3               4             5

6

10

-2

9

0


 

А также другие работы, которые могут Вас заинтересовать

3721. Разработка цифровой интегральной микросхемы 230.5 KB
  Элементная база экономики непрерывно развивается. На смену крупногабаритному оборудованию приходит оборудование малых размеров с более точными параметрами и высокой надежностью. Такое оборудование является менее энергоемким и требует меньш...
3722. Экономическая география и регионалистика 126.5 KB
  Экономико-географическое положение территории России Экономико-географическое положение (ЭГП) – это положение объектов в экономическом и социальном пространстве относительно друг друга, а также относительно границ (государственных, администрати...
3723. Экономика предприятия. Предприятие как хозяйствующий субъект 605.5 KB
  Предприятие — это самостоятельный хозяйствующий субъект, созданный в порядке, установленном действующим законодательством Российской Федерации, для производства продукции, выполнения работ и оказания услуг. Понятие предприятие в широком смысл...
3724. Рынок как экономическая система 314.5 KB
  Понятие рынка в общих чертах известно любому человеку, осуществляющему какие-либо покупки. В тоже время понятие рынка многопланово. Происходящие здесь изменения интересуют и затрагивают огромные количества людей, в том числе и таких, кому...
3725. Формы международного перемещения капитала 55 KB
  Назовите основные формы международного перемещения капитала. Что такое прямые инвестиции, портфельные инвестиции. Международное движение капитала - это помещение и функционирование капитала за рубежом, прежде всего с целью его самовозрастания. Вклад...
3726. Системный кризис в СССР ( 70-е -первая половина 80-х гг.) 35.5 KB
  Системный кризис в СССР ( 70-е -первая половина 80-х гг.) Уже в 70-е годы поиски теоретической мысли были направлены на оправдание просчетов в коммунистическом строительстве. Если поначалу появлялись робкие упреки в адрес авторов Программы коммунист...
3727. Эволюция представлений о строении атома. Есть ли предел системе элементов Менделеева. 375.5 KB
  Возникновение атомистики Вопрос о строении окружающего мира всегда волновал человека. Начало современной науке о строении вещества было положено в античном мире, работами древнегреческих ученых разных школ – ионийской, элеатской, пифагорейской....
3728. Эволюция вселенной 79 KB
  Введение Мир, Земля, Космос, Вселенная… Тысячелетиями пытливое человечество обращало свои взгляды на окружающий мир, стремилось постигнуть его, вырваться за пределы микромира в макромир. Величественная картина небесного купола, усеянного мириадами з...
3729. Управление обслуживание судов в порту 385.5 KB
  Введение В мировой практике торгового мореплавания под стивидорным сервисом (стивидорным обслуживанием) подразумевают комплекс услуг, представляемых судам в период пребывания их в порту. При этом понятие «обслуживание» используется в широком смысле ...