Задачи по матрицам – Решение задач по физике и математике. » Blog Archive » Матрица и ее свойства. Операции с матрицами

С++. Задачи с решениями. Матрицы

int itmathrepetitor_ru()

{

       int** a;

    int n,m;

    cout<<“input n: “;

    cin>>n;

    cout<<“input m: “;

    cin>>m;

// www.itmathrepetitor.ru

    a=new int* [n];

 

    for (int i=0; i<n; i++)

      a[i]=new int [m+1];

 

    for (int i=0; i<n; i++)

      for (int j=0; j<m; j++)

        a[i][j]=-5+rand()%12;

 

    cout<<“Start matrix: “<<endl;

    for (int i=0; i<n; i++)

    {

      for (int j=0; j<m; j++)

        cout<<a[i][j]<<” “;

      cout<<endl;

    }

// www.itmathrepetitor.ru

    for (int j=0; j<m; j++)

    {

       int sum=0;

       for (int i=0; i<n; i++)

          sum+=a[i][j];        

       cout<<“sum = “<<sum<<endl;

       if (sum>0)

       {

          //удаление j столбца

          for (int k=j+1; k<m; k++)

          {

             for (int i=0; i<n; i++)

                a[i][k-1]=a[i][k];

          }

          m–;

          j–;

       }

    }

 

    for (int j=m-1; j>=0; j–)

    {

        for (int i=0; i<n; i++)

          a[i][j+1]=a[i][j];

    }

    m++;

 

    for (int i=0; i<n; i++)

    {

        int min=a[i][1];

        for (int j=1; j<m; j++)

          if (a[i][j]<min)

            min=a[i][j];

 

        a[i][0]=min;

    }

 

    cout<<“End matrix: “<<endl;

    for (int i=0; i<n; i++)

    {

      for (int j=0; j<m; j++)

        cout<<a[i][j]<<” “;

      cout<<endl;

    }

 

    for (int i=0; i<n; i++)

      delete [] a[i];

    delete [] a;

www.itmathrepetitor.ru

Сайт преподавателей информатики КМТТМП – Примеры и задачи для самостоятельного решения.

    I. Сложение матриц

Рассмотрим пример сложения двух матриц размером 2х3.

Пример 1. 

Даны две матрицы одинакового размера.

Найти сумму А+В двух матриц.

Решение.


Пример 2.

Пусть даны матрицы:


Решение.


II. Умножение матрицы на число

Пусть


Найти результат умножения матрицы  А  на число  4.


III. Вычитание матриц

Пример 3. 

Даны две матрицы одинакового размера  4х4


Найти разность двух матриц

Решение.


Примеры для самостоятельного решения

Пример 4. 

Найти сумму двух матриц  А  и  В  в каждом из следующих случаев:


Пример 5. 

Найти матрицу: С=-5А+2В


IV. Транспонирование матриц

Транспонирование матриц – переход от матрицы  А  к матрице, в которой строки и столбцы поменялись местами с сохранением порядка.

 Пример 5. 

Составить транспонированную матрицу, полученную из А:


Решение: 

Поменяем местами строки и столбцы, сохраняя порядок:


Примеры для самостоятельного решения:

 Пример 6. 

Составить из исходной матрицы транспонированную матрицу:


II. Умножение матриц

Пример 7. 

Решение:


Пример 8. 

Найти произведение двух матриц:


Решение: 

В первом случае найдем произведение:


Во втором случае найдем произведение:


Пример 9.

Вычислить значение многочлена f(x)=2x2-5x+3  от матрицы:


Решение. 

В многочлен f(x) подставим вместо  х  матрицу  А, вместо числа 3 используем матрицу  3Е, где  Е – единичная матрица 2-го порядка.


Теперь получим окончательный результат


Примеры для самостоятельного решения

I. Найти произведение матриц:


II. Найти значение многочлена  от матрицы А:


emit.do.am

Две красивые задачи по алгоритмам / Блог компании Computer Science Center / Хабр

На этой неделе я начал читать бакалаврам Академического университета базовый курс по алгоритмам. Начинал я совсем с основ, и чтобы тем, кто с базовыми алгоритмами уже знаком, было чем заняться, я в начале пары сформулировал две, наверное, самые свои любимые задачки по алгоритмам. Давайте и с вами ими поделюсь. Решение одной из них даже под катом подробно расскажу. Но не отказывайте себе в удовольствии и не заглядывайте сразу под кат, а попытайтесь решить задачи самостоятельно. Обещаю, что у обеих задач есть достаточно простые решения, не подразумевающие никаких специальных знаний по алгоритмам. Это, конечно, не означает, что эти решения просто найти, но после пары один из студентов подошёл и рассказал правильное решение первой задачи. =) Если же вам интересно посмотреть на начало курса или порешать больше разных задач — приходите к нам на (бесплатный) онлайн-курс, который начнётся 15 сентября.
Задача 1. Дан массив A длины (n+1), содержащий натуральные числа от 1 до n. Найти любой повторяющийся элемент за время O(n), не изменяя массив и не используя дополнительной памяти.

Сразу поясню. В условии не говорится, что каждое число от 1 до n встречается в массиве, поэтому повторяющихся элементов там может быть сколько угодно (если бы все числа входили по разу, а одно — дважды, то задача была бы гораздо проще). Ограничение на использование дополнительной памяти означает, что нельзя заводить дополнительный массив линейной длины, но можно заводить переменные.

Задача 2. Дана матрица nxn, содержащая попарно различные натуральные числа. Требуется найти в ней локальный минимум за время O(n).

Локальным минимумом матрицы называется элемент, который меньше всех своих четырёх соседей (или трёх, если этот элемент лежит на границе; или двух, если это угловой элемент). Обратите внимание, что от нас требуется линейное по n время, хотя в матрице квадратичное по n число элементов. Поэтому мы предполагаем, что матрица уже считана в память. И нам нужно найти в ней локальный минимум, обратившись лишь к линейному количеству её ячеек.

Под катом — решение первой задачи. Ещё раз призываю вас заглядывать под кат только после того, как порешаете задачу. По второй задаче могу какую-нибудь подсказку сказать.

Попытаюсь рассказать не только решение, но и то, как до него можно было бы догадаться. Пояснять буду сразу на примере. Из него, надеюсь, будет понятно, как алгоритм работает в общем случае. Рабочий пример:

То есть нам дан массив длины 9, содержащий числа от 1 до 8, и наша цель — найти двойку или пятёрку.

Как мы помним, использовать дополнительную память в условии задачи запрещено. Давайте, однако, поймем, чем она могла бы нам помочь. Мы бы тогда завели новый массив размера n и одним проходом по исходному массиву A посчитали бы, сколько раз каждое из чисел от 1 до n входит в A. По этому массиву было бы сразу видно, кто в A повторяется.

Это в дальнейшем не особо нам поможет, но всё же.

Ограничение на дополнительную память не даёт нам собрать и записать вспомогательную информацию о массиве. Значит, повторяющийся элемент нам нужно найти, как-то «гуляя» по массиву. Гулять по массиву можно слева направо, например, но непонятно, какую информацию можно при этом извлечь. Поэтому попробуем гулять по-другому. Встанем в первый элемент нашего массива и посмотрим, что там написано. Написано там число 7, поэтому давайте посмотрим на седьмой элемент массива. Там записано число 1. Прогулка получилась недолгой, мы зациклились. То, что в массиве есть какие-то циклы, очень нам поможет в дальнейшем. Для примера давайте ещё попробуем прогуляться из второго элемента: оттуда мы пойдём в элемент номер 5, из него — в элемент номер 3, а из элемента номер 3 опять вернёмся обратно в элемент номер 2. То есть нашли ещё один цикл. Давайте изобразим найденные нами два цикла:

И раз уж мы осознали, что наш массив неявно задаёт некоторый граф, то давайте явно этот граф нарисуем. Формально, вершины графа — это числа от 1 до n+1; мы проводим ориентированное ребро из i в j, если A[i]=j.

Интересуют нас в этом графе вершины, в которые входят хотя бы два ребра (если в вершину j входят рёбра из вершин i и k, то A[i]=A[k]=j, то есть j повторяется в массиве A). Нам и так ясно, что такая вершина в графе есть, но давайте это осознаем ещё раз, в терминах графов. В нашем графе из каждой вершины выходит ровно одно ребро (и значит, в графе (n+1) ребро), но есть одна вершина, в которую ничего не входит: это вершина (n+1). Значит, найдётся вершина, в которую входит хотя бы два ребра. В общем-то, это и так было ясно, но вот замечание про вершину (n+1) нам в дальнейшем поможет.

Давайте встанем в вершину (n+1) и будем переходить в нашем графе по исходящим рёбрам. Когда-нибудь мы зациклимся, конечно, но важно то, что мы не вернёмся в вершину (n+1). В нашем рабочем примере мы выйдем из вершины 9 и дойдём до цикла (5,2,3). Видно, что точка входа в этот цикл — это и есть повторяющийся элемент: ведь в эту точку и по ребру цикла можно войти, и по ребру на пути из вершины (n+1) в цикл. В нашем примере такая точка входа — это вершина 5.

Нахождение этой точки — отдельная не слишком простая задача, но её решение очень похоже на решение стандартной задачи о зацикленности списка. Длину цикла найти несложно. Например, сделаем n+1 шаг из вершины n+1. После этого мы обязательно окажемся в вершине на цикле. Запомним эту вершину и будем продолжать шагать, пока не вернёмся в неё. Тем самым узнаем длину цикла k. Теперь сделаем следующее. Поставим два указателя в вершину n+1. Первым указателем сделаем k шагов. После этого будем двигать каждый из указателей на один шаг вперёд, пока они не встретятся (таким образом, первый указатель всегда будет обгонять второй на k шагов). Ясно, что встретятся эти ребята как раз в нужной нам точке входе. В нашем примере длина цикла равна трём. После трёх шагов первый указатель окажется в вершине 2. В этот момент мы начнём двигать и второй указатель. Через два шага указатели встретятся в вершине 5.

На закуску. Мы не обсудили, почему же было запрещено модифицировать массив (и наш алгоритм массив, действительно, не трогал). Придумайте более простое решение, если разрешается портить массив.

habr.com

Упражнения. Сложение и вычитание матриц.


Правила. Сложение и вычитание матриц.

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

Сложение матриц (сумма матриц) A + B есть операция нахождения матрицы C, все элементы которой равны попарной сумме всех соответствующих элементов матриц A и B, то есть каждый элемент матрицы C равен
сi,j = ai,j+bi,j

Вычитание матриц (разность матриц

) A – B есть операция нахождения матрицы C, все элементы которой равны попарной разности всех соответствующих элементов матриц A и B, то есть каждый элемент матрицы C равен
сi,j = ai,j-bi,j

Упражнения. Сложение двух матриц (сумма матриц) и вычитание двух матриц (разность матриц).

Дано две матрицы A и B:

A =

12

9

8

-16

8

-11

-11

-14

-20


B =

4

0

8

-4

5

14

-2

-1

3

Найдите значение матрицы: C = A

B

Выберите размер матрицы С:
Количество строк: 012345
Количество столбцов: 012345

Запишите ответ и нажмите кнопку “проверить”.
C =

Для перехода к следующему заданию нажмите кнопку “Следующий пример”.
Внимание!!! При переходе к новому заданию этот пример станет недоступным.



Любые нецензурные комментарии будут удалены, а их авторы занесены в черный список!

Ваши результаты

Пройдено задач

0

Решено

0

   Решено с первого раза

0

Пропущено

0

Не решено

0


0oq.ru

Решение задач по физике и математике. » Blog Archive » Матрица и ее свойства. Операции с матрицами

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

Если этот материал так и не помог вам разобраться с матрицами, посмотрите наш видеоурок. В нем объяснены все основные операции над матрицами и разобраны простые наглядные примеры.

Определение матрицы

Матрица – это таблица чисел, состоящая из m строк и n столбцов. Называется такая таблица матрицей m на n. Каждый элемент матрицы обозначается aij – где индекс i – номер строки, а индекс j – номер столбца. Суммой двух (m×n) матриц А и В называется такая (m×n) матрица С, каждый элемент которой равен сумме элементов исходных матриц, то есть cij=aij+bij.

Сложение матриц

Сложение матриц обладает следующими свойствами:

  • А+В=В+А
  • А+В+С=(А+В)+С
  • существует единсвенная (m×n) матрица О, для которой А+О+А
  • для любой матрицы А существует матрица -А такая, что А+(-А)=О

Матрица О называется нулевой матрице. Важно помнить: мы можем складывать матрицы только одинакового размера (m×n)! Если матрицы имеют разную размерность, то складывать их нельзя!!!

Умножение матрицы на число.

Матрицы можно умножать на число. Если матрицу А умножить на число λ, то в результате мы получим матрицу В той же размерности, что и матрица А, каждый элемент которой будет равен произведению числа λ на элемент аij:

bij=λаij

Отсюда у нас есть следующие свойства матриц, связанные с умножением матрицы на число:

  • А·1=А
  • λ(μА)= (λμ)А
  • (λ+μ)А=λА+μА
  • μ(А+В)=μА+μВ

Свойства матриц

Итак, что мы можем сказать про матрицы? Матрица – это таблица чисел. Что мы можем делать с матрицами?

  1. Если есть две (m×n) матрицы А и В, то можно найти сумму этих матриц: С=А+В, где С – матрица (m×n).
  2. Если есть (m×n)матрица А и число λ, то можно найти (m×n) матрицу В=λА
  3. Для каждой (m×n) матрицы А существует свою “нулевая” матрица О, все элементы которой равны нулю.
  4. Разностью двух матриц называется матрица А+(-В), которая записывается следующим образом А-В

Частные случаи матриц

Квадратной матрицей называется матрица, в которой число строк равно числу столбцов, то есть матрица вида (m×m). Единичной матрицей называется матрица, на главной диагонали которой находятся 1, а все остальные элементы являются нулями, то есть аii =1 и аij=0. Нулевой матрицей называется матрица, все элементы которой равны нулю.

Умножение матриц

Матрицы можно перемножать между собою, и получать новые матрицы. Но не любые матрицы можно перемножать. Перемножаемые матрицы должны удовлетворять следующему условию:

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

то есть матрицы А и В должны иметь размерности  (m×n) и (n×k) соответственно. В результате такого перемножения получится матрица С с размерностью (m×k). Каждый элемент новой матрицы будет представлять собой “произведение” i-ой строки матрицы А на j-ый столбец матрицы В. Подробнее, как умножать матрицы друг на друга смотрите в примерах в конце статьи.

Свойства произведения матриц

Умножение матриц матриц обладает следующими свойствами:

  1. А(ВС)=(АВ)С
  2. А(В+С)=АВ+АС
  3. (А+В)С=АС+ВС
  4. λ(АВ)=( λА)В=А(λВ), где λ – любое число

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

Транспонирование матрицы

Матрица называется транспонированной,  если ее столбцы переписать в виде строк. Иными словами, если у нас есть матрица А, то матрица, полученная в результате транспонирования матрицы А, будет иметь столбцы в виде строк матрицы А,  то есть

(рисунок)

Ранг матрицы

Еще одно понятие,  которое связано с матрицами, это ранг матрицы. Рангом матрицы называется наибольшее число ее линейно независимых строк. Ранг матрицы А обозначается так: rangA

Примеры решения задач по теме матрицы, свойства матрицы, умножение матриц, транспонирование матриц.

Здесь Вы сможете найти ряд типовых задач, связанных с матрицами.

Пример 1. Даны матрицы А и В:

Найти: а) А+В; б) 2В; АВТ; г) ВТА.

Решение:

а) по определению суммы матриц

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

Пример 2. Для матрицы найти обратную матрицу
Решение:
Пусть, обратная матрица равна
По определению обратной матрицы А-1А=Е, то есть

Перемножая матрицы в левой части равенства и приравнивая элементы полученной матрицы соответсвующим элементам матрицы в правой части равенства, приходим к системе уравнений откуда находим
Ответ:

Пример 3.
Вычислить определитель .
Решение:

Задачу можно решить двумя способами: а) найти определитель по правилу треугольника; б) разложить определитель D по элементам первого столбца и умножить их на алгебраические дополнения.
а) D=1•5•(-1)+(-2) •7•(-3)+2•4•0-0•5•(-3)-(-2) •2•(-1)-1•4•7=5
б) для нахождения определителя вторым способом воспользуемся формулой . Получим
Ответ: 5

Пример. 4 Вычислить определитель

Решение: преобразуем определитель D, не меняя его значения, таким образом, чтобы все элементы первого столбца, кроме второго, стали равными нулю. С этой целью из первой строки вычтем вторую, умноженную на 2, к третьей строке прибавим вторую, а из четвертой строки вычтем вторую, умноженную на 4 ( все эти действия не изменяют значения определителя). Получим

Ответ: -2006.


fizikana5.ru

Задача по матрицам

Вопрос: Люди добрые,пожалуйста,помогите с решением задач….кто чем сможет….


31 Дан набор ненулевых целых чисел; признак его завершения — число 0. Вывести сумму всех положительных четных чисел из данного набора. Если требуемые числа в наборе отсутствуют, то вывести 0.
32 Дано целое число N (> 2) и набор из N вещественных чисел. Набор называется пилообразным, если каждый его внутренний элемент либо больше, либо меньше обоих своих соседей (то есть является «зубцом»). Если данный набор является пилообразным, то вывести 0; в противном случае вывести номер первого элемента, не являющегося зубцом.
33 Даны целые числа K, N, а также K наборов целых чисел по N элементов в каждом наборе. Для каждого набора вывести номер его первого элемента, равного 2, или число 0, если в данном наборе нет двоек.
34 Описать функцию, меняющую порядок следования цифр целого положительного числа K на обратный (K — параметр целого типа, являющийся одновременно входным и выходным). С помощью этой процедуры поменять порядок следования цифр на обратный для каждого из пяти данных целых чисел.
35 Описать функцию вещественного типа, вычисляющую двойной факториал: N!! = 1•3•5•…•N, если N — нечетное; N!! = 2•4•6•…•N, если
N — четное (N > 0 — параметр целого типа; вещественное возвращаемое значение используется для того, чтобы избежать целочисленного переполнения при больших значениях N). С помощью этой функции найти двойные факториалы пяти данных целых чисел.
36 Описать функцию целого типа, находящую наибольший общий делитель (НОД) двух целых положительных чисел A и B, используя алгоритм Евклида: НОД(A, B) = НОД(B, A mod B), если B ≠ 0; НОД(A, 0) = A. С помощью этой функции найти наибольшие общие делители пар (A, B), (A, C), (A, D), если даны числа A, B, C, D.
37 Дан массив размера N. Найти номер его последнего локального максимума (локальный максимум — это элемент, который больше любого из своих соседей).
38 Дан массив размера N. Обнулить элементы массива, расположенные между его минимальным и максимальным элементами (не включая минимальный и максимальный элементы).
39 Дана квадратная матрица A порядка M (M — нечетное число). Начиная с элемента A1,1 и перемещаясь по часовой стрелке, вывести все ее элементы по спирали: первая строка, последний столбец, последняя строка в обратном порядке, первый столбец в обратном порядке, оставшиеся элементы второй строки и т. д.; последним выводится центральный элемент матрицы.
40 Дана матрица размера M × N. Найти номер ее строки с наибольшей суммой элементов и вывести данный номер, а также значение наибольшей суммы.
41 Дана матрица размера M × N (M и N — четные числа). Поменять местами левую верхнюю и правую нижнюю четверти матрицы.
42 Дана матрица размера M × N. Удалить ее последний столбец, содержащий только отрицательные элементы. Если требуемых столбцов нет, то вывести матрицу без изменений.
43 Дана квадратная матрица A порядка M. Найти сумму элементов каждой ее диагонали, параллельной главной (начиная с одноэлементной диагонали A1,M).
44 Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие одновременно выше главной диагонали и выше побочной диагонали. Условный оператор не использовать.
45 Дана квадратная матрица A порядка M. Зеркально отразить ее элементы относительно главной диагонали (при этом элементы главной диагонали останутся на прежнем месте, элемент A1,2 поменяется местами с A2,1, элемент A1,3 — с A3,1 и т. д.). Вспомогательную матрицу не использовать.
46 Дана квадратная матрица A порядка M. Повернуть ее на угол 180° (при этом элемент A1,1 поменяется местами с AM,M, элемент A1,2 — с AM,M–1 и т. д.). Вспомогательную матрицу не использовать.
47 Дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа.
48 Дана строка, изображающая арифметическое выражение вида «±±…±», где на месте знака операции «±» находится символ «+» или «–» (например, «4+7–2–8»). Вывести значение данного выражения (целое число).
49 Дана строка, изображающая десятичную запись целого положительного числа. Вывести строку, изображающую двоичную запись этого же числа.
50 Дано имя файла и вещественные числа A и D. Создать файл вещественных чисел с данным именем и записать в него 10 первых членов арифметической прогрессии с начальным членом A и разностью D: A, A + D, A + 2•D, A + 3•D, … .
51 Дан файл вещественных чисел. Создать два новых файла, первый из которых содержит элементы исходного файла с нечетными номерами (1, 3, …), а второй — с четными (2, 4, …).
52 Дан файл вещественных чисел. Заменить в файле каждый элемент, кроме начального и конечного, на его среднее арифметическое с предыдущим и последующим элементом.
53 Дан целочисленный массив A размера N (≤ 15). Переписать в новый целочисленный массив B все элементы с нечетными порядковыми номерами (1, 3, …) и вывести размер полученного массива B и его содержимое. Условный оператор не использовать.
54 Дана матрица вещественных чисел. Найти максимальный и минимальный элементы и сумму элементов, заключенных между ними.
55 Дана матрица целых чисел. Подсчитать количество элементов, предшествующих максимуму и количество элементов, следующих за минимумом.
56 Дан одномерный массив А , состоящий из N элементов. Сколько значений элементов в массиве А встречается более одного раза?
57 Дана матрица целых чисел. В строках, все элементы которых четные, расположить элементы в обратном порядке.
58 Дана матрица размера M × N и целое число K (1 ≤ K ≤ M). Перед строкой матрицы с номером K вставить строку из нулей.
59 Дана матрица размера M × N. Поменять местами строки, содержащие минимальный и максимальный элементы матрицы.
60 Дано целое число K, а также K наборов ненулевых целых чисел. Признаком завершения каждого набора является число 0. Для каждого набора вывести количество его элементов. Вывести также общее количество элементов во всех наборах.
.
.
.
.
.если можно в 6.0

Ответ: засим достаточно. на остальные задачи создавайте отдельные темы – на каждую задачу – ровно одну тему

forundex.ru

4. Задачи линейной алгебры (векторы и матрицы)

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

Листинг 8.

>>% Ввод матрицы по строкам

>> М=[1 2 3;4 5 6]

М=

1 2 3

4 5 6

>>% Обращение к элементу матрицы

>> М (2,2)

ans=

5

>>% Замена элемента матрицы

>> М (1,3)=pi;

>> М

M=

1.0000 2.0000 3.1416

4.0000 5.0000 6.0000

Кроме того, матрицы и векторы можно формировать, составляя из ранее заданных матриц и векторов.

Листинг 9.

>> v1=[1 2 3]

>> v2=[4 5 6]

>> v3=[7 8 9]

>>% Горизонтальная конкатенация векторов-строк, а результат вектор-строка

>> V=[v1 v2 v3]

>>% Вертикальная конкатенация векторов-строк, а результат матрица

>> V=[v1; v2; v3]

V=

1 2 3

4 5 6

7 8 9

>>%Горизонтальная конкатенация матриц

>>M=[V V V]

M=

1 2 3 1 2 3 1 2 3

4 5 6 4 5 6 4 5 6

7 8 9 7 8 9 7 8 9

>>%Вертикальная конкатенация матриц

>>M=[V;V]

M=

1 2 3

4 5 6

7 8 9

1 2 3

4 5 6

7 8 9

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

Листинг на применение двоеточия

>>A=[5 7 6 5; 7 10 8 7;6 8 10 9;5 7 9 10]

A= %Пусть задана матрица А

5 7 6 5

7 10 8 7

6 8 10 9

5 7 9 10

>> %Выделить из матрицы А второй столбец

>> А(:,2)

ans = 7

10

8

7

>> %Выделить из матрицы А третью строку

>> A(З,:)

ans =

6 8 10 9

>>%Выделить из матрицы А подматрицу М

>> М=А(3:4,2:3)

M=

8 10 .

7 9

>> %Вставить подматрицу М в правый верхний угол матрицы А

>> А(1:2,3:4)=М

A=

5 7 8 10

7 10 7 9

6 8 10 9

5 7 9 10

>> %Удалить из матрицы А второй столбец

>> А(:,2} = []

A=

5 8 10

7 7 9

6 10 9

5 9 10

>>%Удалить из матрицы А третью строку

>>А(3,:)=[]

A=

5 8 10

7 7 9

5 9 10

>> %Представить матрицу М в виде вектора-столбца

>> v=M(:)

V=

8

7

10

9

>> %Выделить из вектора v элементы со второго по четвертый

>> b=v(2:4)

b=

7

10

9

>> %Удалить из массива b второй элемент

>> b(2)=[]

b=

7

9

Перейдем к рассмотрению действий над векторами. Знак «+» используют в МАТLАВ для сложения векторов. Операция сложения определена только для век­торов одного типа, то есть суммировать можно либо векторы-столбцы, либо векторы-строки одинаковой длины. Аналогично с помощью знака «~» выпол­няется вычитание векторов. Знак апострофа « ‘ » применяют для транспонирова­ния вектора. Умножение вектора на число осуществляется с помощью знака <<*>>. Этот же знак применяют для умножения вектора на вектор. Эта операция опре­делена только для векторов одинакового размера, причем один из них должен быть вектором-столбцом, а второй вектором-строкой. Примеры описанных действий над векторами показаны в листинге 10.

Листинг 10.

>> х=[1 0 2 -1];

>> у=[2 -1 5 3];

>> %Сложение двух векторов одинаковой структуры

>> х+у

ans =

3 -1 7 2

>>%Элементарные действия над векторами

>> 2*у-х/3

ans =

3.6667 -2.0000 9.3333 6.3333

>>%В результате умножения вектора-строки на вектор-столбец

>>%получится число

>> х*у’

ans =

9

>>%В результате умножения вектора-столбца на вектор-строку

%получится матрица

>> x’*y

ans =

2 -1 5 3

0 0 0 0

4 -2 10 6

-2 1 -5 -3

Все перечисленные действия над векторами определены в математике и относятся к так называемым векторным вычислениям. Но МАТТАВ допускает ипоэлементное преобразование векторов. Существуют операции по работе с векто­ром не как с математическим объектом, а как с обычным одномерным масси­вом. Например, если к некоторому заданному вектору применить математичес­кую функцию, то результатом будет новый вектор того же размера и структуры, но элементы его будут преобразованы в соответствии с заданной функцией (листинг 11).

Листинг 11.

>> x [0.1 -2.2 3.14 0 -1];

>> sin (x)

ans =

0.0998 -0.8085 0.0016 0 -0.8415

>> ехр(х)

ans =

1.1052 0.1108 23.1039 1.0000 0.3679

Рассмотрим еще несколько операций поэлементного преобразования за­данного вектора. К каждому его элементу можно добавить (вычесть) число, ис­пользуя арифметическую операцию «+» («-»). Поэлементное умножение векторов выполняется при помощи оператора «.*». Результатом такого умножения является вектор, каждый элемент которого равен произведению соответству­ющих элементов заданных векторов. Поэлементное деление одного вектора на другой осуществляется при помощи конструкции «. /». В результате поучается вектор, каждый элемент которого – частное от деления соответствующего элемента первого вектора на соответствующий элемент второго. Совокупность знаков «.\» применяют для деления векторов в обратном направлении (поэлементное деление второго вектора на первый). Поэлементное возведение в степень выполняет оператор «.^», результатом является вектор, каждый элемент которого соответствующий элемент заданного вектора, возведенный указанную степень. Примеры поэлементных операций над векторами приведены в листинге 12.

Листинг 12.

>> X = [1 -2 3 -1 -4];

>> у=х-2

У=

-1 -4 1 -3 -6

>> х.*у

ans =

-1 8 3 3 24

>> х.\у

ans =

-1.0000 2.0000 0.3333 3.0000 1.5000

>> х./у

ans =

-1.0000 0.5000 3.0000 0.3333 0.6667

» х./y

ans =

1 -8 27 -1 -64

Действиям над матрицами в MATLAB также уделено немало внимания. Нач- I нем с операций, которые применимы к матрицам с точки зрения классической математики. Одним из базовых действий над матрицами является сложение <<+>> (вычитание <<->>). Здесь важно помнить, что суммируемые (вычитаемые) матри­цы должны быть одной размерности. Результатом сложения является матрица. Умножать на число «*» можно любую матрицу, результатом также будет матри­ца, каждый элемент которой будет помножен на заданное число. Операция транспонирования «’» меняет в заданной матрице строки на столбцы и также применима к матрицам любой размерности. Примеры действий над матрица­ми можно увидеть в листинге 13.

Листинг 13.

>> А=[2 4;6 8]

А =

2 4

6 8

>>В=[1 3;5 7]

B=

1 3

5 7

>>%Действия над матрицами

>> (A+B)/3-2*(А-В)

ans =

-1.0000 0.3333

1.6667 3.0000

>> С=[1 2 3 4;5 6 7 8]

С =

1 2 3 4

5 6 7 8

>>%транспонирование матрицы

>> С’

ans =

1 5

2 6

3 7

4 8

При умножении матриц «*» важно помнить, что число столбцов первой пе­ремножаемой матрицы должно быть равно числу строк второй. Возведение мат­рицы в степень «^» эквивалентно ее умножению на себя указанное число раз. При этом целочисленный показатель степени может быть как положительным, так и отрицательным. В первом случае выполняется алгоритм умножения мат­рицы на себя указанное число раз, во втором умножается на себя матрица, об­ратная данной. Примеры умножения матриц и возведения в степень можно увидеть в листинге 14.

Листинг 14.

>> А=[1 2; -3 1; 5 -2]

А=

1 2

-3 1

5 -2

>> В=[0 1 -3;2 1-2]

В =

0 1 -3

2 1 -2

>> %Умножение матриц

>> С=А*В

С =

4 3 -7

2 -2 7

-4 3 -11

>>% Возведение в степень

>> C^2

ans=

50 -15 70

-24 31 -105

34 -51 170

>> % То же, что и C^2

>> C*C

ans =

50 -15 70

-24 31 -105

34 -51 170

>>D=[l 2 3 2;0 3 2 1;2 1 0 3;4 3 0 1];

>>%Матрица обратная к D

>> D^(-1)

ans =

0.2500 -0.3750 -0.1250 0.2500

-0.3125 0.4687 0.0312 0.0625

0.5000 -0.2500 -0.2500 0.0000

-0.0625 0.0938 0.4063 -0.1875

>>%Матрица обратная к D в квадрате

>> D^(-2)

ans =

0.1016 -0.2148 0.0898 -0.0078

-0.2129 0.3350 0.0713 -0.0605

0.0781 -0.2422 -0.0078 0.1094

0.1699 -0.0518 -0.1670 0.0254

>> % То же что и D^(-2)

>> D^(-1)*D^(-1)

ans =

0.1016 -0.2148 0.0898 -0.0078

-0.2129 0.3350 0.0713 -0.0605

0-0781 -0.2422 -0.0078 0.1094

0.1699 -0.0518 -0.1670 0.0254

Для поэлементного преобразования матриц (листинг 15) можно применять описанные ранее операции поэлементного преобразования векторов: добавле­ние (вычитание) числа к каждому элементу матрицы «+» («-»), поэлементное умно­жение матриц одинакового размера «.*», поэлементное деление матриц одинако­вого размера (прямое «. /» и обратное «.\»), поэлементное возведение в степень «.^» и применение к каждому элементу матрицы математических функций.

Листинг 15

>> А=[1 2;-3 1]

А =

1 2

-3 1

>>%поэлементное добавление числа

>> В=2+А

B=

3 4

-1 3

>>%Поэлементное умножение матриц

>> А.*В

ans=

-3 8

3 3

>>%Поэлементное прямое деление, то есть А на В

>> А./В

ans =

0.3333 0.5000

3.0000 0.3333

>>%Поэлементное обратное деление, то есть В на А

>> А.\В

ans =

3.0000 2.0000

0.3333 3.0000

>>%Поэлементное возведение в степень,

>>%элементы А в степени соответствующих элементов В

>> А.^В

ans =

1.0000 16.0000 -0.3333 1.0000

>>%Поэлементное возведение в степень, каждый элемент А в квадрате

>> А.^2

ans =

1 4

9 1

Довольно необычное, с точки зрения математики, применение нашлось для операторов «/» и «\». Символ «/» используется для операции, называемой деле­нием матриц слева направо. Соответственно, знак «\» применяется для деления матриц справа налево. Операция В/A эквивалентна выражению В*A-1 ее удобно использовать для решения матричных уравнений вида Х*А= В. Соответственно, (А/В) => (A-1В) и применяется для решения уравнения А*Х= В. Если предпо­ложить, что Х и Ввекторы, то получим запись системы линейных алгебраи­ческих уравнений в матричной форме. А это значит, что оператор «\» с успе­хом можно применять для решения линейных систем (листинг 16).

Листинг 16.

>> А=[1 2;1 1];

>> B=[7;6];

>>%Решение линейной системы Ах=b

>> x=A\b

X=

5

1

>>%Проверка Ах-b=0, система решена верно

>>A*x-b

ans=

0

0

>>%—————————————

>> А=[3 -1;6 -2];

>> b=[1;2];

>> %Решение линейной системы Ах=b, система не определена

>> х=А\Ь

Warning: Matrix is singular to working precision.

NaN

NaN

>>%——————————————————-

>> A=[l 1;1 1];

>> b=[l;3];

>> %Решение системы Ax=b,система несовместна

>> A\b

Warning: Matrix is singular to working precision,

ans =

-Inf

Inf

Для работы с матрицами и векторами в MATLAB существуют специальные функции, которые можно разделить на следующие группы: функции операций над векторами, функции определения матриц и операций над матрицами и функции, реализующие численные алгоритмы решения задач линейной алгеб­ры. Рассмотрим наиболее часто используемые из них.

studfiles.net