Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Общий файл весия 1.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
1.38 Mб
Скачать

2.9 Поэлементные операции с векторами

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

Введите две вектор-строки:

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

>>v2=[7 5 -6 9];

Операция; .* (не вставляйте пробел между точкой и звёздочкой!) приводит к поэлементному умножению векторов одинаковой длины. В результате получается вектор, с элементами, равными произведению соответствующих элементов исходных векторов:

>>u=v1.*v2

u=

14 -15 -24 9

При помощи операции; .^ осуществляется поэлементное возведение в степень:

>>p=v1.^2

p=

4 9 16 1

показателем степени может быть вектор той же длины, что и возводимый в степень, равную соответствующему элементу второго вектора:

>>P=v1.^v2

P=

128.0000 -243.0000 0.0002 1.0000

Деление соответствующих элементов векторов одинаковой длины выполняется с использованием операции; ./

>>d=v1./v2

d=

0.2857 -0.6000 -0.6667 0.1111

Обратное поэлементное деление (деление элементов второго вектора на соответствующие элементы первого) осуществляется при помощи операции; .\

>>dinv=v1.\v2

dinv=

3.5000 -1.6667 -1.5000 9.0000

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

К поэлементным, относятся и операции с вектором и числом. Сложение вектора и числа не приводит к сообщению об ошибке. MatLab прибавляет число к каждому элементу вектора. То же самое справедливо и для вычитания:

>>v=[4 6 8 10];

>>s=v+1.2

s=

5.2000 7.2000 9.2000 11.2000

>>s1=1.2+v

s1=

5.2000 7.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

p=

8 12 16 20

>>p1=2*v

p1=

8 12 16 20

Делить при помощи знака / можно вектор на число:

>>p=v/2

p=

2 3 4 5

Попытка деления числа на вектор приводит к сообщению об ошибке:

>>p=2/v

??? Error using ==> /

Matrix dimensions must agree.

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

>>w=[4 2 6]

>>d=12./w

d=

3 6 2

Все вышеописанные операции применимы как к векторам строкам, так и к векторам столбцам.

Разберём, как правильно транспонировать и вычислять сопряжённые векторы в MatLab. В математике, для вектора столбца u, к примеру с тремя комплексными элементами (в частности и с вещественными), сопряжённый к нему u* определятся как вектор-строка из его комплексно-сопряжённых элементов а транспонированный uт – просто как вектор-строка из его элементов например

u*=[3-3i 1+2i 3-2i] uт=[2+3i 1-2i 3+2i]

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

Для нахождения сопряжённого вектора в MatLab используется апостроф, а для транспонирования следует применять точку с апострофом:

>>u=[2+3i;1-2i;3+2i];

>>v=u’

v=

2.0000 – 3.0000i 1.0000 + 2.0000i 3.0000 – 2.0000i

>>v=u.’

v=

2.0000 +3.0000i 1.0000 - 2.0000i 3.0000 + 2.0000i

Операции .' и ' над вещественными векторами приведут к одинаковым результатам.