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


 

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

20107. Статические и астатические САУ 31 KB
  Статические системы состоят из статических звеньев которые имеют зависимость Xвых = f Хвх Рассмотрим простейшую астатическую САР Степень открытия заслонки зависит от Q но поплавок при заданном значении уровня занимает одно и то же положение равного заданному. Особенности равновесие системы со астатическим регулированием имеет место при единственном значении РВ равной заданному. Различают системы статические и астатические по отношению к управляющему и возмущающему воздействиям.
20108. Математические модели САУ. Основные формы записи линеаризированных уравнений в автоматики 56.5 KB
  Для систем с распределёнными параметрами уравнение имеет вид уравнения в частных производных. Уравнение статики описывает поведение системы в установившемся режиме. Урие связи между вх и вых велми искомое урие то есть дифуравнение. В общем случае на динамическое звено кроме входной велны на выходную велну могут оказывать влияние возмущающие воздействия Пусть динамическое звено имеет статическую характеристику вида1 и описывается дифференциальным уравнением первого порядка.
20109. Временные характеристики линейных звеньев 49 KB
  Переходная функция и функция веса. Динамические свва звеньев можно определить по их переходным функциям и функциям веса. Переходная функция ht – такой переходной процесс который возникает на выходе динамического звена при подаче на вход звена единичного ступенчатого скачка. Весовая функция Rt представляет собой реакцию звена на единичную импульсную функцию поданную на вход.
20110. Передаточные функции динамических звеньев. Частотные передаточные функции и частотные характеристики 33 KB
  Их получают при рассмотрении вынужденного движения системы или звена когда на вход подаётся гармоническое воздействие вида : x1 = Aвхsin wt 1 Рассмотрим динамическое звено : При подаче на его вход сигнала 1 если звено линейное на выходе получается сигнал вида : y = Авыхsinwt j 2 j cдвиг фазы Для удобства принимают символическую форму записи sin or cos через ряд : sin wt = ejwt поэтому: sinwt j = еjwt ...
20111. Позиционные, интегрирующие и дифференцирующие типовые динамические звенья их частотные характеристики 45.5 KB
  Типовое динамическое звено описываемое уравнением не выше второго порядка так как реальные звенья составляются на основании законов выражаемых уравнениями не выше второго порядка.1 Безинерционное идеальное звено звено которое в установившемся режиме и в переходном режиме описывается уравнением y = kx На практике идеальным звеном принимают то звено у которого постоянная времени значительно меньше постоянной времени последующих звеньев 1.2 Апериодическое звено первого порядка звено которое...
20112. Структурные схемы систем автоматического управления 903 KB
  Структурной схемой называется схема отражающая взаимодействие динамических звеньев в процессе работы системы. Может содержать: 1 элемент с 1 входом и 1 выходом 1 элемент 2 входа и 1 выход узел сумматор сравнивающее устройство Последовательное соединение динамических звеньев Общая передаточная функция равна произведению составляющих функций динамических звеньев Параллельное соединение Встречнопараллельное соединение – общая передаточная функция если обратная связь отрицательна если обратная связь положительна Если в...
20113. Качество переходных процессов. Частотные показатели качества САР 44 KB
  При этом используют АЧХ замкнутой системы Фjw АЧХ разомкнутой системы Wjw ВЧХвещественночастотная характеристика замкнутой системы Uw.22π Wm 2Использование ВЧХ замкнутой системы для оценки качества. Для устойчивых автоматических систем ВЧХ связана с переходной функцией ht следующей зависимостью: Используя это соотношение можно косвенно оценить границы переходного процесса по амплитуде и длительности. Для того чтобы косвенно судить о качестве рассмотрим свойства ВЧХ и свойства и свойства соответствующих им переходных...
20114. Синтез последовательных корректирующих звеньев 130.5 KB
  Рассмотрим основные виды обр. Жесткая отрицательная обр. связь осуществляется за счет охвата некоторого элемента сисмы обр. связью с передаточной функцией усилительного звена то есть в цепи обр.
20115. Шлифовальные станки. Их классификация 7.26 MB
  Шлифовальные станки. В зависимости от вида обработки шлифовые станки подразделяются на: станки общего назначения; специализированные станки. Круглошлифовальные станкию.