
- •1. Цель работы
- •2. Краткие сведения о пакете matlab
- •2.1. Рабочая среда пакета MatLab
- •2.2. Арифметические вычисления
- •2.2.1. Простейшие вычисления
- •2.2.2. Форматы вывода результата вычислений
- •2.3. Использование элементарных функций
- •2.4. Работа с комплексными числами
- •3. Простейшие вычисления в пакете MatLab с использованием переменных и векторов
- •3.1. Использование переменных в пакете MatLab
- •3.2. Сохранение рабочей среды
- •3.3. Просмотр переменных
- •3.4. Работа с массивами
- •3.4.1. Ввод, сложение и вычитание векторов
- •3.4.2. Работа с элементами векторов
- •3.4.3. Применение функций обработки данных к векторам
- •4. Индивидуальные задания
- •5. Содержание отчета
3.4.1. Ввод, сложение и вычитание векторов
Работу с массивами начнем с простого примера вычисления суммы векторов:
,
.
Для хранения векторов используйте массивы а и 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 =
2
» 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 =
-
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 = 4
Из нескольких вектор-столбцов можно составить один, используя квадратные скобки и разделяя исходные вектор-столбцы точкой с запятой:
» v1 = [1; 2]; '
» v2 = [3; 4; 5];
» v = [v1; v2]
v =
1
2
3
4
5
Для сцепления вектор-строк также применяются квадратные скобки, но сцепляемые вектор-строки отделяются пробелами или запятыми:
» v1 = [1 2];
» v2 = [3 4 5];
» v = [v1 v2]
v =
1 2 3 4 5