Здавалка
Главная | Обратная связь

Ввод сложение и вычитание векторов



Работу с массивами начнем с простого примера - вычисления суммы векторов:

, .

 

Для хранения векторов используйте массивы а и 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 Все права принадлежат авторам размещенных материалов.