- •Глава 3. Инструментальные средства моделирования
- •3.2.2 Пользовательский интерфейс
- •3.2.3. Создание, редактирование и отладка м-файлов
- •3.2.3 Простейшие вычисления
- •Элементарные математические функции
- •Функции, определенные пользователем
- •3.2.4 Массивы в matlab
- •3.2.5 Основные матричные операции
- •3.2.6 Графики в matlab Построение двумерных графиков
- •Операторы цикла Оператор for … end
- •Цикл while
- •Обработка массивов и матриц средствами м-языка
- •Отладка м-программ в matlab
- •Численное решение математических задач в matlab
- •Численное интегрирование
- •Символьные вычисления в matlab
- •Вычисление производной
3.2.4 Массивы в matlab
Для ввода массивов (векторов или матриц) их элементы заключают в квадратные скобки.
Пример 3-2. Требуется ввести вектор-строку размером 1×4.
Для решения используется команда, в которой элементы строки отделяются пробелами или запятыми:
Инструкция |
Результат |
% элементы строки отделяются пробелами: >> z=[5 6 7 8] % элементы строки отделяются запятыми: >> z=[5,6,7,8] |
z = 5 6 7 8 |
Пример 3-3. Требуется ввести вектор-столбец размером 1×4. При вводе вектора-столбца элементы разделяют точкой с запятой.
Инструкция |
Результат |
>> z=[5; 6; 7; 8]
|
z = 5 6 7 8 |
Пример 3-4. Требуется ввести матрицу размером 2×3. Вводить небольшие по размеру матрицы удобно прямо из командной строки.
Инструкция |
Результат |
>> А=[1 2 3; 4 5 6]
|
А = 1 2 3 4 5 6 |
Матрицы и векторы можно создавать из ранее заданных матриц и векторов.
Пример 3-5. Требуется получить вектор-строку U из векторов-строк u1, u2, u3.
Инструкция |
Результат |
>> u1=[1 2 3]; >> u2=[1 2 3]; >> u3=[1 2 3]; >> %Горизонтальная конкатенация >> U=[u1 u2 u3] >> %Вертикальная конкатенация >> U=[u1; u2; u3] |
U = 1 2 3 1 2 3 1 2 3
U = 1 2 3 1 2 3 1 2 3 |
Особую роль при работе с матрицами играет знак двоеточие.
Пример 3-6. Требуется получить из матрицы M третий столбец, вторую строку.
Инструкция |
Результат |
>> М=[1 2 3 ; 4 5 6; 7 8 9] М = 1 2 3 4 5 6 7 8 9 >> %Выделение из матрицы М второй строки >> М(2 , : ) >> %Выделение из матрицы М третьего столбца >> М( : , 3) |
ans = 4 5 6
ans = 3 6 9 |
Пример 3-7. Требуется удалить из матрицы М третий столбец, вторую строку.
Инструкция |
Результат |
>> М=[1 2 3 ; 4 5 6; 7 8 9] М = 1 2 3 4 5 6 7 8 9 >> %Удаление из матрицы М второй строки >> М(2 , : ) = [] >> %Выделение из матрицы М третьего столбца >> М( : , 3) = [] |
M = 1 2 3 7 8 9 M = 1 2 7 8 |
3.2.5 Основные матричные операции
Для выполнения операций над массивами в Matlab служат арифметические операции, перечень которых приведен ниже.
Функция (имя) |
Оператор (символ) |
Синтаксис |
Выполняемое действие |
plus |
+ |
А1+А2 |
Поэлементное сложение |
minus |
- |
А1 – А2 |
Поэлементное вычитание |
times |
.* |
А1 .* А2 |
Поэлементное умножение |
rdivide |
. / |
А1./А2 |
Поэлементное деление массивов слева направо |
ldivide |
.\ |
А1.\А2 |
Поэлементное деление массивов справа налево |
power |
.^ |
A .^x |
Поэлементное возведение массива в степень |
При записи инструкций можно применять как символьные операторы арифметических операций, так и функции.
Пример 3-5. Требуется умножить элементы массива размерностью 2 х 2 на число 3.
Решение задачи выполним двумя способами – используя оператор .*, и с помощью функции times. Решение приведено ниже:
Инструкция |
Результаты вычислений |
% инструкция с символьным оператором >> А=[1 2 3; 1 2 3]; >> В=z.*2 % инструкция, использующая функцию >> A=[1 2 3; 1 2 3]; >>B=times(A,2) |
B = 2 4 6 2 4 6 |
Для работы с векторами и матрицами в Matlab существуют специальные функции.
Функция |
Описание |
Функции операций над векторами |
|
length(U) |
Определяет длину вектора U |
sum(U) |
Вычисляет сумму элементов вектора U |
min(U) |
Находит минимальный элемент вектора U, вызов в формате [m, n] =min(U) дает возможность определить минимальный элемент m и его номер n в массиве U |
max(U) |
Находит максимальный элемент вектора U, вызов в формате [m, n] =max(U) дает возможность определить максимальный элемент m и его номер n в массиве U |
dot(u1,u2) |
Вычисляет скалярное произведение векторов u1 и u2 |
Функции операций над матрицами |
|
eye(n[,m]) |
Возвращает единичную матрицу указанной размерности |
size(A) |
Определяет размерность матрицы А, результатом является вектор [n;m] |
det(A) |
Вычисляет определитель квадратной матрицы А |
trace(A) |
Вычисляет сумму элементов главной диагонали |
inv(A) |
Возвращает матрицу, обратную А |
linsolve(A,b) |
Возвращает решение системы линейных уравнений Аx = b |
Рассмотрим использование некоторых функций на примерах:
Инструкция |
Результаты вычислений |
>>% определим длину вектора U >> U=[2 4 6 1 8 3 9]; >> length(U) |
ans = 7 |
>>% вычислим сумму элементов вектора U >> sum(U) |
ans = 33 |
>>% найдем минимальный элемент (m) вектора U и определим его номер (n) в массиве U >> [m, n] =min(U) |
m = 1 n = 4 |
>>% вычислим скалярное произведение векторов u1 и u2 >> u1=[1 2 1 2]; >> u2=[2 1 2 1]; >> dot(u1,u2) |
ans =
8 |
>>% зададим единичную матрицу А размерности 33 >> A=eye(3,3) |
A = 1 0 0 0 1 0 0 0 1 |
>>% определим размерность матрицы А >> A=[1 2 3 ; 4 5 6]; >> size(A) |
ans = 2 3 |
>>% вычислим определитель матрицы А >> A=[1 2 3 ; 2 3 4;3 4 5]; >> det(A) |
ans = 0 |
>>% вычислим сумму элементов главной диагонали матрицы А >> A=[1 2 3 ; 2 3 4;3 4 5]; >> trace(A) |
ans = 9 |
>>% вычислим матрицу, обратную А >> A=[1 2 3; 0 3 2;2 1 0]; >> B=inv(A)
>>% проверка >> A*B
|
B = 0.1667 -0.2500 0.4167 -0.3333 0.5000 0.1667 0.5000 -0.2500 -0.2500
ans = 1 0 0 0 1 0 0 0 1 |
Пример 3-6. Требуется решить систему линейных уравнений
Инструкция |
Результаты вычислений |
>> %Решение >> А=[2 1 -1; 3 -2 1; 2 3 -2]; >> b=[0; 2; 1]; >> x=linsolve(a,b)
>> %Проверка >> a*x
|
x = 1.0000 3.0000 5.0000
ans = 0.0000 2.0000 1.0000
|
Задание 3-1. Решите системы линейных уравнений