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


 

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

38820. Анализ финансового состояния предприятия ООО «2 ГИС» 656 KB
  Актуальность тематики обусловила цель дипломной работы –оенка финансового состояния ООО 2 ГИС Для этого были поставлены и решены следующие задачи: обобщить теоретические основы управления финансовым состоянием организации; выполнить техникоэкономическую характеристику фирмы; провести анализ финансового состояния ООО 2 ГИС; выявить резервы улучшения финансового состояния фирмы; разработать рекомендации по использованию выявленных резервов; сделать экономическое обоснование предложенных мероприятий....
38823. Оценка экономической эффективности мероприятий по снижению пожарного риска 4.56 MB
  Определение расчетных величин пожарного риска на объекте осуществляется на основании: анализа пожарной опасности объекта; определения частоты реализации пожароопасных ситуаций; построения полей опасных факторов пожара для различных сценариев его развития; оценки последствий воздействия опасных факторов пожара на людей для различных сценариев его развития; наличия систем обеспечения пожарной безопасности зданий сооружений и строений. Количественной мерой возможности реализации пожарной опасности объекта является риск гибели людей в...
38824. ПІДВИЩЕННЯ ЕФЕКТИВНОСТІ ДІЯЛЬНОСТІ ДП «ЗАРІЧНЕНСЬКИЙ ЛІСГОСП» 741.09 KB
  Теоретичні аспекти підвищення ефективності господарської діяльністі підприємства. Суть поняття ефективності та аналізу господарської діяльності підприємства. Фактори підвищення ефективності діяльності підприємства. Диверсифікація як один із заходів вдосконалення господарської діяльності підприємства.
38825. Транснаціональні корпорації в конкурентному середовищі національної економіки ( на прикладі України) 1.49 MB
  Діяльність ТНК в конкурентному середовищі приймаючої країни . ДІЯЛЬНІСТЬ ТНК В КОНКУРЕНТНОМУ СЕРЕДОВИЩІ УКРАЇНИ 2. Передумови входження ТНК на український ринок харчової промисловості. Стратегії діяльності ТНК на вітчизняному ринку харчової промисловості53 РОЗДІЛ 3.
38827. Особенности нервной системы подростков, занимающихся спортивными единоборствами (на примере самбо и кикбоксинга) 273 KB
  2 Особенности нервной системы детей школьного возраста 1.3 Изменения свойств нервной системы у детей и подростков под влиянием различных факторов 1.4 Влияние свойств нервной системы на двигательные способности человека 1.