Ввод сложение и вычитание векторов ⇐ ПредыдущаяСтр 4 из 4
Работу с массивами начнем с простого примера - вычисления суммы векторов: , .
Для хранения векторов используйте массивы а и b. Введите массив а в командной строке, используя квадратные скобки и разделяя элементы вектора точкой с запятой:
» a = [1.3; 5.4; 6.9] a = 1.3000 5.4000 6.9000
Так как введенное выражение не завершено точкой с запятой, то пакет MatLab автоматически вывел значение переменной а. Введите теперь второй вектор, подавив вывод на экран
» b = [7.1; 3.5; 8.2];
Для нахождения суммы векторов используется знак +. Вычислите сумму, запишите результат в массив с и выведите его элементы в командное окно:
» с = а + b с = 8.4000 8.9000 15.1000
Узнайте размерность и размер массива а при помощи встроенных функций ndims и size:
» ndims(a) ans = » size(a) ans = 3 1
Итак, вектор а хранится в двумерном массиве а размерностью три на один (вектор-столбец из трех строк и одного столбца). Аналогичные операции можно проделать и для массивов b и c. Поскольку числа в пакете MatLab представляются в виде двумерного массива один на один, то при сложении векторов используется тот же знак плюс, что и для сложения чисел. Ввод вектор-строки осуществляется в квадратных скобках, однако элементы следует разделять пробелами или запятыми. Операции сложения, вычитания и вычисление элементарных функций от вектор-строк производятся так же, как и с вектор-столбцами, в результате получается вектор-строка того же размера, что и исходные. Например:
» s1 = [3 4 9 2] s1 = 3 4 9 2 » s2 = [5 3 3 2] s1 = 5 3 3 2 » s3 = s1 + s2 s3 = 8 7 12 4
Замечание 3 Если размеры векторов, к которым применяется сложение или вычитание, не совпадают, то выдается сообщение об ошибке.
Естественно, для нахождения разности векторов следует применять знак минус, с умножением дело обстоит несколько сложнее. Введите две вектор-строки:
» v1 = [2 -3 4 1]; » v2 = [7 5 -6 9];
Операция .* (не вставляйте пробел между точкой и звездочкой!) приводит к поэлементному умножению векторов одинаковой длины. В результате получается вектор с элементами, равными произведению соответствующих элементов исходных векторов:
» u = v1.*v2 u = 14 -15 -24 9
При помощи .^ осуществляется поэлементное возведение в степень:
» р = v1.^2 p = 4 9 16 1
Показателем степени может быть вектор той же длины, что и возводимый в степень. При этом каждый элемент первого вектора возводится в степень, равную соответствующему элементу второго вектора:
» p = vl.^v2 Р = 128.0000 -243.0000 0.0002 1.0000
Деление соответствующих элементов векторов одинаковой длины выполняется с использованием операции ./
» d = v1./v2 d = 0.2857 -0.6000 -0.6667 0.1111
Обратное поэлементное деление (деление элементов второго вектора на соответствующие элементы первого) осуществляется при помощи операции .\
» dinv = vl.\v2 dinv = 3.5000 -1.6667 -1.5000 9.0000
Итак, точка в MatLab используется не только для ввода десятичных дробей, но и для указания того, что деление или умножение массивов одинакового размера должно быть выполнено поэлементно. К поэлементным относятся и операции с вектором и числом. Сложение вектора и числа не приводит к сообщению об ошибке. MatLab прибавляет число к каждому элементу вектора. То же самое справедливо и для вычитания:
» v = [4 6 8 10]; » s = v + 1.2 s = 5.2000 6.2000 9.2000 11.2000 » r = 1.2 - v r = -2.8000 -4.8000 -6.8000 -8.8000 » r1 = v - 1.2 r1 = 2.8000 4.8000 6.8000 8.8000
Умножать вектор на число можно как справа, так и слева:
» v = [4 6 8 10]; » p = v*2 р =. 8 12 16 20 » pi = 2*v pi = 8 12 16 20
Делить при помощи знака / можно вектор на число:
» р = v/2 p = 2 3 4 5
Попытка деления числа на вектор приводит к сообщению об ошибке:
» р = 2/v ??? Error using ==> / Matrix dimensions must agree.
Если требуется разделить число на каждый элемент вектора и записать результат в новый вектор, то следует использовать операцию ./
» w = [4 2 6]; » d = 12./w d = 3 6 2
Все вышеописанные операции применимы как к вектор-строкам, так и к вектор-столбцам. Особенность MatLab представлять все данные в виде массивов является очень удобной. Пусть, например, требуется вычислить значение функции sin сразу для всех элементов вектора с (который хранится в массиве с) и записать результат в вектор d. Для получения вектора d достаточно использовать один оператор присваивания:
» d = sin(с) d = 0.8546 0.5010 0.5712
Итак, встроенные в MatLab элементарные функции приспосабливаются к виду аргументов; если аргумент является массивом, то результат функции будет массивом того же размера, но с элементами, равными значению функции от соответствующих элементов исходного массива. Убедитесь в этом еще на одном примере. Если необходимо найти квадратный корень из элементов вектора d со знаком минус, то достаточно записать:
» sqrt(-d) ans = 0 + 0.9244i 0 + 0.7078i 0 + 0.7558i
Оператор присваивания не использовался, поэтому пакет MatLab записал ответ в стандартную переменную ans.
Для определения длины вектор-столбцов или вектор-строк служит встроенная функция length:
» length(s1) ans =
Из нескольких вектор-столбцов можно составить один, используя квадратные скобки и разделяя исходные вектор-столбцы точкой с запятой:
» v1 = [1; 2]; ' » v2 = [3; 4; 5]; » v = [v1; v2] v =
Для сцепления вектор-строк также применяются квадратные скобки, но сцепляемые вектор-строки отделяются пробелами или запятыми:
» v1 = [1 2]; » v2 = [3 4 5]; » v = [v1 v2] v = 1 2 3 4 5
©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|