Разное

Как в матлабе задать вектор: Основы программирования в MatLab

Векторы и матрицы в инструментарии Numpy

Рубрика: 14 Инструментарий Numpy на языке PythonАвтор: Андрей Никитенко

Содержание страницы

  • 1 Векторы и матрицы
  • 2 Создание матриц для работы с ними
  • 3 Произведение матриц
  • 4 Другие операции с матрицами
  • 5 Решение системы линейных уравнений
  • 6 Текстовая задача

Векторы и матрицы

Здравствуйте и вновь добро пожаловать на занятия по теме «Инструментарий Numpy на языке Python».

В этой статье мы подробнее рассмотрим векторы, а также поговорим о матрицах.

Вы уже видели, насколько массивы Numpy похож на векторы: мы можем проводить над ними такие операции, как их сложение, умножение на скаляр, выполнять поэлементные операции вроде возведения в квадрат. А что с матрицами? Матрицу можно рассматривать как двухмерный массив. Согласно другому представлению, её также можно рассматривать как список списков. Действительно, можно использовать список списков, чтобы определить матрицу. Попробуем так и сделать.

Итак,первый список будет иметь элементы 1 и 2, второй список – элементы 3 и 4.Обратите внимание, что списки должны иметь одинаковую длину.

M = np.array([ [1,2], [3,4] ])

Считается,что первый индекс – это строка, второй – столбец. Для сравнения создадим такженастоящий список списков:

L = [ [1,2], [3,4] ]

Допустим,мы хотим получить элемент матрицы, скажем, единицу. В списке Python сначала индексируется строка, что даёт нам первыйсписок, содержащий 1 и 2:

L[0]

Итак,теперь у нас есть 1 и 2. Нам нужен первый элемент из этого списка, поэтому

L[0][0]

и получаем 1. Заметьте, то же самое можно сделать ис помощью массива Numpy:

M[0][0]

Этотакже даёт нам 1. Но есть и сокращённая запись, похожая на MATLAB, с использованием запятой:

M[0,0]

Иэто также даёт нам 1. Так несколько удобнее, поскольку нужно набрать на символменьше.

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

M2 = np.matrix([ [1,2], [3,4] ])

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

A = np.array(M2)

Врезультате получим ту же матрицу, но в виде массива. Обратите внимание, что,хоть это и массив, мы можем пользоваться удобными матричными операциями, напримертранспонированием:

A.T

Врезультате получается транспонированная матрица A.

Резюмируем. Мы показали, что матрица на самом деле является лишь двухмерным массивом Numpy, а вектор – одномерным массивом Numpy. Таким образом, матрица на самом деле является двухмерным вектором. Обобщая, можно считать матрицу двухмерным математическим объектом, содержащим числа, а вектор – одномерным математическим объектом, также содержащим числа. Иногда встречается представление вектора в виде двухмерного объекта. Например, в учебниках по математике может указываться вектор-столбец размерности 3×1 и вектор-строка размерности 1×3. Временами мы также будем представлять их в таком виде в Numpy, но наличие двух размерностей делает такой объект более похожим на матрицу, что может сбить с толку. В таком случае просто помните, что обсуждаются лишь две вещи – одномерные и двухмерные массивы.

Создание матриц для работы с ними

Существуют некоторые различные способы генерации массивов данных.

Иногда нужны несколько массивов просто чтобы попрактиковаться – как в этом курсе. Один из способов вы уже видели, когда я воспользовался массивом Numpy для создания списка, например

np. array([1,2,3])

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

Преждевсего я покажу, как создать массив, состоящих из одних нулей. Это делается спомощью функции zeros с указаниемдлины:

Z = np.zeros(10)

Этодаёт вектор с 10 элементами, состоящий из нулей. Можно создать и матрицуразмерности 10×10, состоящую из одних нулей:

Z = np.zeros((10, 10))

Врезультате получаем 100 нулей в матрице размерности 10×10.Обратите внимание, что функция по-прежнему принимает лишь один аргумент – кортеж,содержащий каждую размерность. Есть эквивалентная функция, создающая массив изодних единиц. К примеру,

O = np.ones((10, 10))

Получиласьматрица размерности 10×10, состоящая изодних единиц.

Теперь предположим, что нам нужен ряд случайных числен. Для этого можно воспользоваться функцией np.random.random. Создадим, к примеру, массив случайных чисел размерности 10×10:

R = np.random.random((10,10))

Получилсянабор случайных чисел в матрице размерностью 10×10.Бросается в глаза, что все числа больше 0 и меньше 1. Это связано с тем, чтокогда речь идёт о случайных числах, имеется в виду распределение вероятностей,откуда и возникли случайные числа. Данная конкретная функция случайных чиселдаёт нам равномерно распределённые числа между 0 и 1. А если нам нужны числа сгауссовым распределением? В Numpy есть функция идля этого. Давайте попробуем. Называется она random.randn. Вновь-таки, возьмём размерность 10×10:

G = np.random.randn((10×10))

И у нас ничего не получилось – требуются целые числа. Сама функция правильна, но мы указали неправильный аргумент. Дело в том, что, как ни странно, функция randn библиотеки Numpy воспринимает каждую размерность как отдельный аргумент, в то время как все остальные упоминавшиеся функции принимают кортежи. Поэтому правильно вставлять – только для функции randn! – каждую размерность по отдельности:

G = np.random.randn(10,10)

Теперьвсё работает. Мы имеем числа с гауссовым распределением, средним значением 0 идисперсией 1. Массивы Numpy такжепредоставляют удобные функции для вычисления этих статистических величин. Так,команда

G.mean()

даёт нам среднее значение, а команда

G.var()

позволяет получить дисперсию.

Как видим, полученные числа весьма близки к истинным значениям.

Произведение матриц

Чтоинтересно в произведениях матриц при изучении линейной алгебры, – так это то, чтообычно называется умножением матриц. Умножение матриц имеет специальноетребование: внутренние размерности двух умножаемых матриц должны совпадать.Так, если у нас есть матрица A размерности 2×3и матрица Bразмерности 3×3, то мы можем умножить A на B, поскольку внутренняя размерность равна 3. Однакомы не можем умножить B на A, поскольку внутренняя размерность левого множителяравна 3, а внутренняя размерность правого равна 2.

Возникаетвопрос: для чего существует такое требование при умножении матриц? Рассмотримопределение операции умножения матриц:

Тоесть ij-йэлемент матрицы Cравен сумме произведений всех соответствующих элементов из i-й строкиматрицы Aи j-гостолбца матрицы B.Другими словами, ij-йэлемент матрицы Cравен скалярному произведению i-й строки матрицы A и j-го столбца матрицы B. В связи с этим обычно используется функция dot библиотеки Numpy:

C = A.dot(B)

Этои будет умножением матриц.

Как в математике, так и в программировании часто встречается операция поэлементного умножения. В случае векторов мы уже видели, что для этого используется звёздочка (*). Как можно догадаться, в случае двухмерных массивов звёздочка также производит поэлементное умножение. Это означает, что при использовании звёздочки в случае многомерных массивов оба массива должны иметь в точности одинаковую размерность. Это может показаться странным, ведь в других языках звёздочка действительно означает настоящее умножение матриц. Но нужно просто запомнить, что для Numpy звёздочка означает поэлементное умножение, а функция dot – умножение матриц. Также сбивать с толку может то обстоятельство, что при записи математических уравнений нет даже чётко определённого символа для операции поэлементного умножения. Так, некоторые пользуются кружком с точкой внутри, а некоторые – кружком с крестиком внутри. Похоже, в математике просто не существует стандартной записи для данной операции, хотя она часто возникает в машинному обучении в связи с необходимостью использовать градиенты.

Другие операции с матрицами

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

Начнёмс нахождения обратной матрицы. Вначале создадим матрицу:

A = np.array([[1,2],[3,4]])

Воспользуемсяфункцией inv модуля linalg:

Ainv = np.linalg.inv(A)

Мыполучили обратную матрицу. Чтобы проверить правильность ответа, умножим матрицу,обратную A,на саму А:

Ainv.dot(A)

Врезультате имеем единичную матрицу. Можем сделать и наоборот, умножив матрицу А на обратную ей:

A.dot(Ainv)

Итоже получаем единичную матрицу.

Следующее– нахождение определителя матрицы. Это можно сделать с помощью команды

np.linalg.det(A)

Каки ожидалось, получаем ответ -2.

Иногданужна диагональ матрицы, для этого используется команда

np.diag(A)

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

np.diag([1,2])

Получим1 и 2 на диагонали, а остальные элементы – нули.

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

Бывает, что у нас есть два вектора, а нам нужно выполнить внешнее произведение. В частности, внешнее произведение возникает, когда мы вычисляем ковариацию ряда векторов-образцов. Мы уже знакомы с поэлементным произведением, для которого используется звёздочка, и скалярным произведением, для чего используется функция dot. Напомню, что скалярное произведение также называется внутренним произведением.

Итак,создадим два вектора:

a = np. array([1,2])

b = np.array([3,4])

Внешнеепроизведение вычисляется по команде

np.outer(a, b)

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

np.inner(a, b)

Этодаст тот же ответ, что и при использовании команды

a.dot(b)

Какимиз этих способов пользоваться – сугубо на ваше усмотрение.

Другаяраспространённая операция – нахождение следа матрицы. Это сумма элементовматриц, расположенных на главной диагонали. Заметьте, что мы можем выполнитьэту операцию, используя уже имеющиеся сведения:

np.dialog(A).sum()

Получиможидаемый ответ 5. Но в Numpy для этого естьи соответствующая функция:

np.trace(A)

Имы опять-таки получаем 5.

Ипоследнее, что мы обсудим, – это собственные значения и собственные векторы.Если вы не проходили их в курсе линейной алгебры, то, вероятно, вам следуетуглубить свои знания по этому предмету. Но сейчас я просто покажу, как всё это делаетсяв коде, поэтому если вы не знаете, что такое собственные значения и собственныевекторы, просто пропустите эту часть.

Частовозникает необходимость вычислить собственные значения и собственные векторысимметричной матрицы, такой как ковариационная матрица набора данных. Создадимслучайным образом определённые данные размерности 100×3с гауссовым распределением:

X = np.random.randn(100,3)

Обратитевнимание: считается, что каждый пример – это строка, а каждый признак – этостолбец, поэтому для данного конкретного вымышленного набора данных у насимеется 100 примеров и 3 признака. Разумеется, в Numpyуже есть функция для вычисления ковариации. Опробуем её:

cov = np.cov(X)

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

cov.shape

Получилось,что размерность равна 100×100. Этонеправильная размерность, должно быть 3×3,ведь наши данные имеют размерность 3. Попробуем ещё раз, транспонировав X:

cov = np.cov(X.T)

Теперьразмерность 3×3. Нужно помнить, что при вычислении ковариационнойматрицы данных необходимо её сначала транспонировать.

Длявычисления собственных значений и собственных векторов есть две функции – eig и eigh. Eigh предназначена только для симметричных и эрмитовыхматриц. Если вы никогда не изучали линейную алгебру комплексных чисел, небеспокойтесь о том, что такое эрмитова матрица. Симметричной называетсяматрица, которая, будучи транспонированной, остаётся равной сама себе:

Тоесть ij-йэлемент матрицы Cравен сумме произведений всех соответствующих элементов из i-й строкиматрицы Aи j-гостолбца матрицы B.Другими словами, ij-йэлемент матрицы Cравен скалярному произведению i-й строки матрицы A и j-го столбца матрицы B. В связи с этим обычно используется функция dot библиотеки Numpy:

C = A. dot(B)

Этои будет умножением матриц.

Как в математике, так и в программировании часто встречается операция поэлементного умножения. В случае векторов мы уже видели, что для этого используется звёздочка (*). Как можно догадаться, в случае двухмерных массивов звёздочка также производит поэлементное умножение. Это означает, что при использовании звёздочки в случае многомерных массивов оба массива должны иметь в точности одинаковую размерность. Это может показаться странным, ведь в других языках звёздочка действительно означает настоящее умножение матриц. Но нужно просто запомнить, что для Numpy звёздочка означает поэлементное умножение, а функция dot – умножение матриц. Также сбивать с толку может то обстоятельство, что при записи математических уравнений нет даже чётко определённого символа для операции поэлементного умножения. Так, некоторые пользуются кружком с точкой внутри, а некоторые – кружком с крестиком внутри. Похоже, в математике просто не существует стандартной записи для данной операции, хотя она часто возникает в машинному обучении в связи с необходимостью использовать градиенты.

Другие операции с матрицами

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

Начнёмс нахождения обратной матрицы. Вначале создадим матрицу:

A = np.array([[1,2],[3,4]])

Воспользуемсяфункцией inv модуля linalg:

Ainv = np.linalg.inv(A)

Мыполучили обратную матрицу. Чтобы проверить правильность ответа, умножим матрицу,обратную A,на саму А:

Ainv.dot(A)

Врезультате имеем единичную матрицу. Можем сделать и наоборот, умножив матрицу А на обратную ей:

A.dot(Ainv)

Итоже получаем единичную матрицу.

Следующее– нахождение определителя матрицы. Это можно сделать с помощью команды

np.linalg.det(A)

Каки ожидалось, получаем ответ -2.

Иногданужна диагональ матрицы, для этого используется команда

np.diag(A)

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

np.diag([1,2])

Получим1 и 2 на диагонали, а остальные элементы – нули.

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

Бывает, что у нас есть два вектора, а нам нужно выполнить внешнее произведение. В частности, внешнее произведение возникает, когда мы вычисляем ковариацию ряда векторов-образцов. Мы уже знакомы с поэлементным произведением, для которого используется звёздочка, и скалярным произведением, для чего используется функция dot. Напомню, что скалярное произведение также называется внутренним произведением.

Итак,создадим два вектора:

a = np.array([1,2])

b = np.array([3,4])

Внешнеепроизведение вычисляется по команде

np.outer(a, b)

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

np.inner(a, b)

Этодаст тот же ответ, что и при использовании команды

a.dot(b)

Какимиз этих способов пользоваться – сугубо на ваше усмотрение.

Другаяраспространённая операция – нахождение следа матрицы. Это сумма элементовматриц, расположенных на главной диагонали. Заметьте, что мы можем выполнитьэту операцию, используя уже имеющиеся сведения:

np.dialog(A).sum()

Получиможидаемый ответ 5. Но в Numpy для этого естьи соответствующая функция:

np.trace(A)

Имы опять-таки получаем 5.

Ипоследнее, что мы обсудим, – это собственные значения и собственные векторы.Если вы не проходили их в курсе линейной алгебры, то, вероятно, вам следуетуглубить свои знания по этому предмету. Но сейчас я просто покажу, как всё это делаетсяв коде, поэтому если вы не знаете, что такое собственные значения и собственныевекторы, просто пропустите эту часть.

Частовозникает необходимость вычислить собственные значения и собственные векторысимметричной матрицы, такой как ковариационная матрица набора данных. Создадимслучайным образом определённые данные размерности 100×3с гауссовым распределением:

X = np.random.randn(100,3)

Обратитевнимание: считается, что каждый пример – это строка, а каждый признак – этостолбец, поэтому для данного конкретного вымышленного набора данных у насимеется 100 примеров и 3 признака. Разумеется, в Numpyуже есть функция для вычисления ковариации. Опробуем её:

cov = np.cov(X)

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

cov.shape

Получилось,что размерность равна 100×100. Этонеправильная размерность, должно быть 3×3,ведь наши данные имеют размерность 3. Попробуем ещё раз, транспонировав X:

cov = np.cov(X.T)

Теперьразмерность 3×3. Нужно помнить, что при вычислении ковариационнойматрицы данных необходимо её сначала транспонировать.

Длявычисления собственных значений и собственных векторов есть две функции – eig и eigh. Eigh предназначена только для симметричных и эрмитовыхматриц. Если вы никогда не изучали линейную алгебру комплексных чисел, небеспокойтесь о том, что такое эрмитова матрица. Симметричной называетсяматрица, которая, будучи транспонированной, остаётся равной сама себе:

Эрмитова же матрица – это матрица, которая остаётся равной сама себе, будучи сопряжённой:

Какизвестно, ковариационная матрица является симметричной, поэтому можноиспользовать функцию eigh. Её ипопробуем:

np.linalg.eigh(cov)

Врезультате получаем кортежи. Первый содержит три собственных значения, а второй– собственные векторы, представленные в столбцах. Попробуем теперь с обычнойфункцией eig:

np.linalg.eig(cov)

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

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

Решение системы линейных уравнений

В заключение мы рассмотрим последнюю из самых распространённых операций с матрицами – решение системы линейных уравнений.

Напомню, что система линейных уравнений имеет вид

где A – матрица, x – вектор-столбец искомых значений, b – вектор чисел. Решение, конечно же, состоит в умножении обоих частей уравнений на матрицу,обратную A:

Этокорректная операция, поскольку предполагается, что A является квадратной матрицей, что значит, что онаобратима. Тогда xимеет единственное решение. Другими словами, если размерность x равна D, то у нас есть D уравнений с D неизвестными.

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

Решимпример. Aу нас будет матрицей

Этокорректная операция, поскольку предполагается, что A является квадратной матрицей, что значит, что онаобратима. Тогда xимеет единственное решение. Другими словами, если размерность x равна D, то у нас есть D уравнений с D неизвестными.

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

Решимпример. Aу нас будет матрицей

bу нас будет вектором [1, 2]:

b = np.array([1, 2])

Решениембудет

x = np.linalg.inv(A).dot(b)

Итак,решением являются числа 0 и 0,5. Для проверки попробуйте решить этот примервручную.

Конечно же, ввиду очень частого проведения такого рода вычислений, есть способ и получше – с помощью функции с соответствующим названием solve. Поэтому можно записать

x = np.linalg.solve(A, b)

Иполучим тот же ответ.

Если вы когда-либо прежде писали код в MATLAB, то могли заметить, что при попытке использовать метод inv MATLAB выдаёт предупреждение и сообщает, что есть и более эффективный способ вычислений. В MATLAB он называется не solve, но по сути это тот же самый алгоритм, и он действительно куда более эффективен и точен. Поэтому если у вас когда-нибудь возникнет необходимость решить подобного рода уравнение, никогда не пользуетесь inv. Всегда используйте solve.

Текстовая задача

Давайте разберём несложный пример, чтобы попрактиковаться в использовании функции solve.

Итак,поставим задачу. На небольшой ярмарке входная плата составляет 1,5 доллара для ребёнкаи 4 доллара для взрослого. Однажды за день ярмарку посетило 2200 человек; приэтом было собрано 5050 долларов входной платы. Сколько детей и сколько взрослыхпосетили ярмарку в этот день?

Итак,обозначим количество детей через X1, а количествовзрослых – через X2. Мы знаем, что

Мытакже знаем, что

Мытакже знаем, что

Обратите внимание, что это линейное уравнение, где A равно:

 а b равно :

 а b равно :

Подставимэти значения в Numpy и найдёмрешение:

A = np.array([[1,1], [1.5,4]])

b = np. array([2200, 5050])

np.linalg.solve(A, b)

Получаемответ: 1500 детей и 700 взрослых. Попробуйте также решить это уравнениевручную, чтобы проверить ответ.

Получаемответ: 1500 детей и 700 взрослых. Попробуйте также решить это уравнениевручную, чтобы проверить ответ.

Microsoft Word. Microsoft Excel. MATLAB. Обработка матриц, страница 4

7.  Найти произведение  .

8.  Все элементы вектора  возвести с степень 2. В полученном векторе заменить первый элемент на номер вашего варианта.

9.  Получить диагональную матрицу, диагональные элементы которой будут равны вектору , а все остальные 0, найти сумму диагональных элементов.

.

Вариант 9

1.  Задать векторы, .

2.  Создать матрицу , у которой первая строка состоит из вектора , а вторая – из .

3.  Проверить существование обратной матрицы, если она существует – найти ее.

4.  Найти произведение . Из вектора  сделать новый, присоединив к нему элементы второго столбца матрицы .

5.  Найти вектор  и все элементы вектора  заменить значениями косинуса соответствующих элементов (, где — новое значение элемента вектора,  -начальное значение элемента) .

6.  С помощью созданной вами функции изменить матрицу следующим образом: каждый элемент квадратной матрицы   уменьшить на число, корое равняется размеру матрицы.

7.  Найти произведение .

8.  Найти вектор , который совпадает со вторым столбцом матрицы . В полученном векторе заменить первый элемент на номер вашего варианта.

9.  Получить среднее значение элементов вектора .

Вариант 10

1.  Определить матрицу .

2.  Задать вектор .

3.  Проверить, существует ли обратная матрица для матрицы , которая получена в результате присоединения к матрице вектора  в качестве последней строки. Если существует, то найти ее.

4.   Получить вектор , который состоит из всех элементов матрицы , расположенных по убыванию.

5.  Найти произведение  .

6.   С помощью созданной вами функции найти вектор , где — произведение вектора-строки  на вектор-столбец .

7.  Найти произведение , предварительно оставив в векторе необходимое количество элементов.

8.  В полученном векторе заменить первый элемент на номер вашего варианта.

9.  Каждый элемент вектора  возвести в степень, которая совпадает с длиной вектора.

Вариант 11

1.  Определить матрицу .

2.  Задать вектор .

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

4.  Проверить существование обратной матрицы для . Если она существует, то найти ее.

5.  Найти произведение , а заменить вектор : каждый элемент умножить на определитель матрицы .

6.  С помощью созданной вам функции найти максимальный элемент матрицы   и затем умножить элементы второй строки на этот элемент.

7.  Найти произведение первой строки матрицы  на , получив вектор .

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

9.  Получить матрицу, диагональные элементы которой будут составлять вектор , а все остальные — единицы.

Вариант 12

1.  Определить матрицу.

2.  Каждый элемент матрицы  разделить на определитель.  Резудьтат сохранить в переменной .

3.  Проверить существование обратной матрицы для . Если она существует, найти ее.

4.  Задать вектор , найти .

5.  Найти произведение элементов вектора .

6.  Создать функцию, с помощью которой можно определить максимальный элемент из двух векторов и создать матрицу , определитель которой будет равен этому элементу. Применить эту функция к векторам  и .

7.  Найти .

8.  В полученном векторе заменить первый элемент на номер вашего варианта.

9.  Найти  , затем каждый элемент матрицы  возвести в степень 2.

Введение в векторы в Matlab — документация Matlab Tutorial 3.0

Это основное введение в Matlab. Создание векторов включены несколько основных операций. Темы включают следующее:

  1. Определение вектора
  2. Доступ к элементам внутри вектора
  3. Основные операции над векторами

Определение вектора

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

Если вы используете Windows или Mac OSX, вы можете запустить Matlab, выбрав его из меню. Чтобы запустить Matlab в системе unix, откройте unix и введите команду для запуска программного обеспечения: matlab . Этот запустит программу и будет ждать, пока вы введете команды. В последующем тексте любая строка, начинающаяся с двух знаки «больше» (>>) используются для обозначения командной строки Matlab. Здесь вы вводите свои команды.

Почти все основные команды Matlab вращаются вокруг использования векторы. Вектор определяется размещением последовательности чисел внутри квадратные скобки:

 >> v = [3 1]
v =
     3 1
 

Это создает вектор-строку с меткой «v». Первая запись в вектор — 3, а вторая запись — 1. Обратите внимание, что Matlab распечатал копию вектора после того, как вы нажмете клавишу ввода. Если вы не хотите распечатывать результат, поставьте точку с запятой в конце строка:

 >> v = [3 1];
>>
 

Если вы хотите просмотреть вектор, просто введите его метку:

 >> v
v =
     3 1
 

Вы можете определить вектор любого размера следующим образом:

 >> v = [3 1 7 -21 5 6]
v =
     3 1 7 -21 5 6
 

Однако обратите внимание, что это всегда создает вектор-строку. Если вы хотите создайте вектор-столбец, который вам нужен для транспонирования вектора-строки. Транспонирование определяется с помощью апострофа ( ):

 >> v = [3 1 7 -21 5 6]'
v =
     3
     1
     7
   -21
     5
     6
 

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

Matlab может определить набор чисел с общим увеличивать с помощью двоеточия. Например, чтобы определить вектор, первый запись 1 , вторая запись 2 , третья запись 3 , и последовательно через 8 введите следующее:

 >> v = = [1:8]
v =
     1 2 3 4 5 6 7 8
 

Если вы хотите использовать приращение, отличное от того, которое вы должны определить начальный номер, значение приращения и последний номер. Для например, чтобы определить вектор, который начинается с 2 и заканчивается на 4 с шаги 0,25 введите следующее:

 >> v = [2:.25:4]
v =
  Столбцы с 1 по 7
    2,0000 2,2500 2,5000 2,7500 3,0000 3,2500 3,5000
  Столбцы с 8 по 9
    3,7500 4,0000
 

Доступ к элементам внутри вектора

Вы можете просматривать отдельные записи в этом векторе. например для просмотра первую запись просто введите следующее:

 >> v(1)
ответ =
     2
 

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

Чтобы упростить создание больших векторов, вы можете определить вектор с помощью указание первой записи, приращения и последней записи. Матлаб автоматически определит, сколько записей вам нужно и их ценности. Например, чтобы создать вектор, элементы которого равны 0 , 2 , 4 , 6 и 8 , вы можете ввести следующую строку:

 >> 0:2:8
ответ =
     0 2 4 6 8
 

Matlab также отслеживает последний результат. В предыдущем примере создается переменная и . Чтобы посмотреть транспонирование предыдущего результат, введите следующее:

 >> ответ
ответ =
     0
     2
     4
     6
     8
 

Чтобы иметь возможность отслеживать созданные вами векторы, вы можете дать им имена. Например, вектор-строка

v можно создать:

 >> v = [0:2:8]
v =
     0 2 4 6 8
>> в
v =
     0 2 4 6 8
>> в;
>> в'
ответ =
     0
     2
     4
     6
     8
 

Обратите внимание, что в предыдущем примере, если вы закончите строку полу- двоеточие, результат не отображается. Это пригодится позже, когда вы хотите использовать Matlab для работы с очень большими системами уравнений.

Matlab позволит вам просматривать определенные части вектора. Если вы хотите посмотреть только первые три записи в векторе, который вы можете использовать та же запись, которую вы использовали для создания вектора:

 >> v(1:3)
ответ =
     0 2 4
>> v(1:2:4)
ответ =
     0 4
>> v(1:2:4)'
ответ =
     0
     4
 

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

Как только вы освоите нотацию, вы сможете выполнять другие операции:

 >> v(1:3)-v(2:4)
ответ =
    -2 -2 -2
 

По большей части Matlab следует стандартным обозначениям, используемым в линейных алгебра. Позже мы увидим, что есть некоторые расширения, чтобы сделать некоторые операции легче. На данный момент, однако, оба сложения и вычитания определяется стандартным образом. Например, чтобы определить новый вектор с помощью цифры от 9От 0017 0 до -4 с шагом -1 делаем следующее:

 >> u = [0:-1:4]
и = [0:-1:-4]
ты =
     0 -1 -2 -3 -4
 

Теперь мы можем сложить u и v стандартным способом:

 >> u+v
ответ =
     0 1 2 3 4
 

Кроме того, скалярное умножение определяется стандартным способом. Также обратите внимание, что скалярное деление определено согласованным образом. со скалярным умножением:

 >> -2*у
ответ =
     0 2 4 6 8
>> т/3
ответ =
         0 0,6667 1,3333 2,0000 2,6667
 

С этими определениями линейные комбинации векторов могут быть легко определены и объединены основные операции:

 >> -2*u+v/3
ответ =
         0 2,6667 5,3333 8,0000 10,6667
 

Будьте осторожны. Эти операции могут быть выполнены только когда позволяют размеры векторов. Вы, вероятно, привыкнете чтобы увидеть следующее сообщение об ошибке, которое следует из добавления двух векторов, размерность которых различна:

 >> у+в'
??? Ошибка при использовании ==> плюс
Размеры матрицы должны совпадать.
 

векторов в Matlab | Две основные категории операций с векторами в Matlab

Вектор представляет собой замкнутый набор элементов. В Matlab мы можем создавать векторы с помощью квадратных скобок. Векторы — одна из иллюстраций массивов (одномерный массив). он может быть представлен двумя способами: вектор-строка и вектор-столбец.

Row Vector

Горизонтальный набор элементов. Он представлен в квадратных скобках. Каждый элемент отделяется запятой или пробелом.

Х = [4 7 8] или Х = [4, 7, 8]

Вектор-столбец

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

Х = [ 4 ; 6; 7 ] или

X = [ 4

6

7 ]

Векторные операции

Векторные операторы можно разделить на две категории.

1. Арифметическая операция

Рассмотрим два вектора x и y со значениями x = [ 1 4 5 3 ] и y = [ 5 3 2 1 ] мы можем выполнять различные операции над этими двумя векторами x и y.

а. Умножение: 90 100  Эта функция используется для умножения на любое арифметическое значение всего вектора.

Например:

mul = 3 * x

mul = 3* [ 1 4 5 3 ]

мул = [ 3 12 15 9 ]

Синтаксис:   имя переменной = арифметическая константа * имя вектора

б. Тригонометрическая функция: . Мы можем применить любую тригонометрическую функцию к векторным sin, cos, tan, cosec, sec и т. д. .

Пример

х = [ 1 4 5 3 ]

Total = sum ( x )

Итого на выходе = 13

Синтаксис: имя переменной = = sum (имя вектора)

c. Длина: 90 100 Показывает длину определенного вектора, допустим, один вектор p = [9 7 5 3 1 9 7 5 3 1]

Пример

p = [9 7 5 3 1 9 7 5 3 1 ]

Len = длина ( p )

Выход: Len = 10

d. Добавление векторов: Сложение двух или нескольких векторов — простая операция в Matlab, рассмотрим два вектора p и q.

P = [ 4 6 3 2 ] и q = [ 5 7 9 1 ]

Добавить = p + q

Вывод Добавить = [ 9 13 12 3 ]

Синтаксис:   оператор имени вектора ( + ) имя вектора

Аналогичным образом мы можем выполнить операцию вычитания, например sub = p – q

e. Умножение векторов: 90 100. Если мы хотим выполнить умножение двух векторов, то простой оператор умножения ( * ) не будет работать. Поэтому нам нужно добавить оператор точки ( ‘ . ‘ ) с оператором умножения. 92

2. Реляционная операция

а. Равен оператору : этот оператор сравнивает каждый n каждого элемента из двух векторов и дает на выходе форму нуля и единицы.

Пример

м = [ 2 5 8 ]

И n = [ 5 5 3 ]

Как мы знаем, есть три элемента в векторе m и векторе n,

m == n

Приведенный выше оператор выдаст результат как 0 1 0, что означает, что первое число не равно, второе число равно и третье нет не равно. O представляет собой ложь, а 1 представляет собой истину.

б. Оператор меньше, чем (<):  Меньше, чем оператор, представленный символом «<". мы можем сравнить данную матрицу с любой арифметической константой или с любым другим вектором.

Пример

м = [ 3 2 4 ]

n = [ 1 1 1]

m < n

вывод будет 0 0 0, что означает, что все числа больше вектора n.

и если m < 10

, то на выходе будет 1 1 1, что означает, что все числа меньше 10.

в. Оператор больше, чем (>):  Больше, чем оператор, представленный символом ( ‘ > ’). Мы можем сравнить данную матрицу с любой арифметической константой или с любым другим вектором.

Пример:

М = [ 3 2 4 ]

Н = [ 1 1 1 ]

m > n

Вывод будет 1 1 1 , это означает, что все значения больше, чем значения вектора n.

Заключение – Векторы в Matlab

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *