1.2.3 Действия над векторами
Будем различать две группы действий над векторами:
а) векторные действия - т.е. такие, которые предусмотрены векторным исчислением в математике;
б) действия по преобразованию элементов - это действия, которые преобразуют элементы вектора, но не являются операциями, разрешенными математикой.
Векторные действия над векторами
Сложение векторов. Как известно, суммироваться могут только векторы одинакового типа (т.е. такие, которые являются или векторами-строками, или векторами-столбцами), имеющие одинаковую длину (т. е. одинаковое количество элементов). Если X и Y - именно такие векторы, то их сумму Z можно получить, введя команду Z = X + Y, например:
» x = [1 2 3]; y = [4 5 6];
» v = x + y
Аналогично с помощью арифметического знака ' - ' осуществляется вычитание векторов, имеющих одинаковую структуру (Z = X- Y). Например:
» v = x - y
v = -3 -3 -3
Транспонирование вектора осуществляется применением знака апострофа, который записывается сразу за записью имени вектора, который нужно транспонировать. Например:
» x'
Умножение вектора на число осуществляется в MatLAB с помощью знака арифметического умножения ' * ' таким образом: Z = X*r или Z = r*X, где r - некоторое действительное число. Например:
» v = 2*x
Умножение двух векторов определено в математике только для вектороводинакового размера (длины) и лишь тогда, когда один из векторов-множителей строка, а второй - столбец. Иначе говоря, если векторы X и Y являются строками, то математическое смысл имеют лишь две формы умножения этих векторов: U =X' * Y и V = X * Y'. При этом в первом случае результатом будет квадратная матрица, а во втором - число. В МatLAB умножение векторов осуществляется применением обычного знака умножения ' * ', который записывается между множителями-векторами.
Пример:
» x = [1 2 3] ; y = [ 4 5 6];
» v = x' * y
v =
4 5 6
8 10 12
12 15 18
» v = x * y'
v = 32
Поэлементное преобразование векторов
В языке MatLAB предусмотрен ряд операций, которые преобразуют заданный вектор в другой того же размера и типа, но не являются операциями с вектором как математическим объектом. К таким операциям относятся, например, все элементарные математические функции, приведенные в разделе 1.1.4 и которые зависят от одного аргумента. В языке MatLAB запись, например, вида Y = sin(X), где X - некоторый известный вектор, приводит к формированию нового вектораY, имеющего тот же тип и размер, но элементы которого равняются синусам соответствующих элементов вектора-аргумента X. Например:
» x = [ -2,-1,0,1,2];
» y = sin(x)
y = -0. 9093 -0. 8415 0 0. 8415 0. 9093
» z = tan(x)
z = 2. 1850 -1. 5574 0 1. 5574 -2. 1850
» v = exp(x)
v = 0. 3679 1. 0000 2. 7183 7. 389
Кроме этих операций в МаtLAB предусмотрено несколько операций поэлементного преобразования, осуществляемых с помощью знаков обычных арифметических действий. Эти операции применяются к векторам одинакового типа и размера. Результатом их есть вектор того же типа и размера.
Поэлементное умножение векторов проводится с помощью совокупности знаков ' .* ', которая записывается между именами перемножаемых векторов. В результате получается вектор, каждый элемент которого является произведением соответствующих элементов векторов - "сомножителей".
Поэлементное деление векторов осуществляется с помощью совокупности знаков './ '. Результат - вектор, каждый элемент которого является частным от деления соответствующего элемента первого вектора на соответствующий элемент второго вектора.
Поэлементное деление векторов в обратном направлении. Осуществляется с помощью совокупности знаков '.\ '. В результате получают вектор, каждый элемент которого является частным от деления соответствующего элемента второго вектора на соответствующий элемент первого вектора.
Поэлементное возведение в степень осуществляется с помощью совокупности знаков '.^ '. Результат - вектор, каждый элемент которого является соответствующим элементом первого вектора, возведенным в степень, величина которой равняется значению соответствующего элемента второго вектора. Примеры:
» x = [1,2,3,4,5]; y = [-2,1,4,0,5];
» x. *y
-2 2 12 0 25
» x. /y
Warning: Divide by zero
-0. 5000 2. 0000 0. 7500 Inf 1. 0000
» x. \y
-2. 0000 0. 5000 1. 3333 0 1. 0000
» x. ^y
1 2 81 1 3125
Вышеуказанные операции позволяют очень просто вычислять (а затем -строить графики) сложные математические функции, не используя при этом операторы цикла. Для этого достаточно задать значение аргумента как арифметическую прогрессию так, как это было показано ранее, а потом записать нужную функцию, используя знаки поэлементного преобразования векторов.
Например, пусть нужно вычислить значения функции:
y = a * e−hx * sin x
при значениях аргумента х от 0 до 10 с шагом 1. Вычисление массива значений этой функции в указанных условиях можно осуществить с помощью лишь двух простых операторов :
» a = 3; h = 0.5; x = 0:10;
» y = a * exp(-h*x) . * sin(x)
y =
Columns 1 through 7
0 1.5311 1.0035 0.0945 -0.3073 -0.2361 -0.0417
Columns 8 through 11
0. 0595 0. 0544 0. 0137 -0. 0110
Yandex.RTB R-A-252273-3
- Лабораторная работа № 1 основы программирования в пакете прикладных программ matlab
- 1. Использование matlab в качестве научного калькулятора
- 1.1. Операции с числами
- 1.1.1. Ввод действительных чисел
- 1.1.2. Простейшие арифметические действия
- 1.1.3. Ввод комплексных чисел
- 1.1.4. Элементарные математические функции
- 1.1.5. Специальные математические функции
- 1.1.6. Элементарные действия с комплексными числами
- 1.1.7. Функции комплексного аргумента
- 1.2 Простейшие операции с векторами и матрицами
- 1.2.1. Ввод векторов и матриц
- 1.2.2. Формирование векторов и матриц
- 1.2.3 Действия над векторами
- 1.2.4 Поэлементное преобразование матриц
- 1.2.5 Матричные действия над матрицами
- 1.3 Функции прикладной численной математики
- 1.3.1. Операции с полиномами
- 2. Программирование в среде MatLab
- 2.1 Операторы цикла и условные операторы
- If условие
- If условие
- 2.2 Ввод исходных данных и вывод результатов
- 3. Графика
- 4. Создание м-файлов
- 4.1. Особенности создания м-файлов
- 4.2. Основные особенности оформления м-файлов
- 4.3 Создание функциональных файлов
- 4.3.1 Общие требования к построению