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


 

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

28706. Разработка и принятие Конституции СССР 1977 г. Ее основные положения. Закрепление однопартийной системы в стране 12.86 KB
  Политическую основу СССР составляют Советы народных депутатов, Основой эк-кой системы признана социалистическая собст-ть на средства пр-ва. В Конст. констатировались построение развитого социалистического общества и создание общенародного гос.ва. В ней закреплялись «руководящая и направляющая» роль Коммунистической партии и новые формы
28707. Правовые взгляды 60 - 80-х гг. Развитие идеи социального общенародного государства и его правовой основы 12.99 KB
  Стабильность общго и госго строя в рассматриваемый период обусловливает и устойчивое развитие советского права для которого не свойственны какиелибо существенные изменения однако в связи с большим объемом нормативноправовых актов требуется проведение систематизации и кодификации. Завершаются проводившиеся более 20 лет работы по кодификации основных отраслей права. В самой системе права можно выделить три тенденции: 1 образование одной отрасли права в результате объединения различных актов регулирующих сходные группы отношений...
28708. Меры по укреплению законности, трудовой дисциплины, совершенствованию и углублению самоуправления народа и дальнейшей демократизации общества (1-ая половина 80-х гг. XX в.) 11.41 KB
  Меры по укреплению законности трудовой дисциплины совершенствованию и углублению самоуправления народа и дальнейшей демократизации общества 1ая половина 80х гг. Радикальная реформа общества начавшаяся сверху в 1985 г. Быстро происходи размежевание общества на демократов националпатриотов и коммунистов.
28709. Государство «развитого социализма» и нарастание кризиса социалистической государственности и права (сер. 70-х - авг. 1991 г.) 13.29 KB
  Съезд народных депутатов СССР становится высшим органом гос. на основе нового Закона выборы депутатов съезда народных депутатов СССР были первыми демократичными выборами. Верховный Совет СССР потерял роль органа олицетворяющего полновластие Советов. Длительное время фактическим руководителем в СССР являлся глава КПСС.
28710. Крах социалистической государственности и становление Российского демократического государства 13.6 KB
  По мере ослабления СССР и укрепления суверенитета республик поднимается волна сепаратизма движя за выход из состава СССР. СССР положение о праве союзных республик на выход из состава СССР никогда не рассмлось как осуществимое. в ряде союзных республик наблюдается движение за выход из СССР. В этих условиях Верховный Совет СССР 3 апреля 1990 г.
28711. Конституция РФ 1993 г. и ее основные положения 14.17 KB
  Конституция РФ 1993 г. Всероссийский референдум по проекту новой Конст. Конст. В конст.
28712. Совершенствование государственного аппарата. Укрепление правовой основы государственной жизни в современных условиях 12.78 KB
  Руководству России предстояло продолжить курс на демократическое преобразование общества и создание правового государства. В 19921993 в России существовало три ветви власти: законодательная съезд народных депутатов России и избираемый ими Верховный Совет; исполнительная президент и назначаемое им правительство; и судебная во главе с Конституционным судом. Ельцин издал указ в котором объявил о роспуске съезда народных депутатов РФ и Верховного Совета проведении в декабре выборов нового органа законодательной власти Федерального...
28713. Обновление законодательства и приспособление его к условиям рыночной экономики в современных условиях 12.52 KB
  Государственное регулирование экономики ставит своей целью соблюдать интересы государства общества в целом социально незащищенных слоев населения. Налоговое регулирование осуществляется путем установления тех или иных объектов налогообложения назначения и дифференциации налоговых ставок введения налоговых льгот освобождение от налогов. Денежнокредитное регулирование состоит в воздействии государства на денежное обращение и объем денежной массы. Бюджетное регулирование заключается в том что государственные органы обладают возможностью...
28714. Силовые структуры, их место и роль в Российском демократическом государстве 13.09 KB
  Помимо вопроса безопасности мирных граждан и реформирования армии есть еще один аспект который не может не волновать общество при поиске места и задач для силовиков в современных условиях. Особенности функционирования силовых институтов на современном этапе их развития предполагают некоторые выводы: вопервых функции армии и милиции как инструментов власти являются частью государственных функций и находятся в прямой зависимости от природы правящего в стране политического режима проводимой им политики; вовторых основным предназначением...