Работа с символьными переменными
Команда symsa b c d (переменные записываются через пробел) позволяет работать с символьными переменными как с числами, то есть мы можем работать с алгебраическими выражениями.
Упражнение 1.1.
Введите
>> (x+1)*(x-1)
??? Undefined function or variable 'x'.
MATLAB выдал сообщение об ошибке, т.к. переменная х не введена. Теперь введите
>> syms x
>> f=(x+1)*(x-1)
>> collect(f)
ans = -1+x^2
>> f=collect(f)
f = -1+x^2
С помощью команды help collect выясните, что сделала команда collect с выражением f.
>> help (имя команды) – позволяет узнать информацию об этой команде.
Выясните так же, как делать различные преобразования в алгебраических выражениях с помощью команд simplify, factor, expand. Используйте справочник MATLAB и Интернет.
Теперь присвоим x какое-нибудь число и снова вызовем f:
>> x = 2
>> f = (x+1)*(x-1)
>> f = 3
В одной строке можно размещать несколько команд через запятую. Точка с запятой подавляет автоматический вывод результатов вычислений.
Пример. Задайте три числовых переменных a , b и c и одну символьную h, зависящую от этих переменных. Найдите значение h.
>> a=5, b=3;c=6; h=(a+b)*c;
a = 5
Мы не подавили вывод переменной а, поэтому MATLAB вывел ее значение на экран. Для того чтобы узнать чему все же равна переменная h, вызовем ее:
>> h
h = 48
Значение всех промежуточных переменных, использованных в многошаговых вычислениях, MATLAB запоминает в рабочем в пространстве ( Workspace ). Просмотрите каждую переменную (нажав на нее дважды левой кнопкой мыши), вы увидите, как по-разному хранятся эти переменные.
|
|
Переменные рабочего пространства (Workspace).
В именах переменных можно использовать латинские буквы, цифры и символ подчеркивания; большие и малые буквы в именах различаются; имя должно начинаться с буквы; длина имени не должна превышать 63 символа.
Информацию о переменных рабочего пространства можно получить, набрав в Command Window команду whos
>> whos a b h
Name Size Bytes Class
a 1x1 8 double
b 1x1 8 double
h 1x1 8 double
Name – имя переменой, Size – размерность, Bytes – количество занятых байтов, Class - класс объектов, представляющих соответствующий тип данных.
Команда whos без параметров выдает информацию обо всех переменных.
Если в дальнейших вычислениях переменная a, к примеру, не понадобится, ее можно убрать из рабочего пространства, набрав в командном окне clear a.
Команда clear без параметров удаляет все переменные.
Представление данных матрицами. Работа с массивами в MATLAB
Матрицей размерности называется прямоугольная таблица, состоящая из n строк и m столбцов. Традиционно в математике эту таблицу заключают в круглые скобки. Например, - матрица размерности ;
|
|
Если матрица имеет размер , т.е. состоит только из одной строки, то ее называют вектором-строкой. Например, - матрица размерности , т.е. вектор-строка.
Если матрица имеет размер , т.е. состоит только из одного столбца, то ее называют вектором-столбцом. Например, - матрица размерности , т.е. вектор-столбец.
Если матрица имеет размер , т.е. состоит из одного столбца и одной строки, то ее называют скаляром. Например, - матрица размерности , т.е. скаляр.
В MATLAB все числовые данные представляются в виде матриц. Поэтому любое число рассматривается как матрица размера .
Рассмотрим способы задания матриц в MATLAB.
Пример. 1. Для задания вектора-строки (т.е. матрицы размера ) используются квадратные скобки, в которых числовые данные отделяются друг от друга пробелами или запятыми:
>> В=[1 3 -1]
В= 1 3 -1
>> В=[1, 3, -1]
В = 1 3 -1
2. Для задания вектора-столбца (т.е. матрицы размера ) используются квадратные скобки, в которых числовые данные отделяются друг от друга точкой с запятой:
>> С=[-1;2.1]
C =
-1.0000
2.1000
3. Комбинируя оба варианта разделителя, можно задать матрицу, число строк и столбцов которой больше одного (двумерный массив):
|
|
>> А=[1 2 3 4;0 -1 -3 -2]
A =
1 2 3 4
0 -1 -3 -2
4. Любое число рассматривается в MATLAB как матрица размера .
>> n=3
n = 3
>> m=[3]
m = 3
5. Снова просмотрите каждую переменную в окне Workspace.
>> whos A B C n m
Name Size Bytes Class Attributes
A 2x4 64 double
B 1x3 24 double
C 2x1 16 double
m 1x1 8 double
n 1x1 8 double
Также MATLAB содержит ряд встроенных функций для создания основных (наиболее часто используемых) матриц специального вида. Список функций приведен в таблице 1.
Таблица 1. Встроенные функции генерации матриц. | |
Реализующая функция | Описание |
zeros (n) zeros (n,m) | Функция с одним параметров создает квадратную матрицу размера n x n. Создает матрицу размера n x m, все элементы которой равны 0. |
ones (n) ones (n,m) | Функция с одним параметров создает квадратную матрицу размера n x n. Создает матрицу размера n x m, все элементы которой равны 1. |
eye (n) eye (n, m) | Функция с одним параметром создает прямоугольную матрицу размера n x n, элементы главной диагонали которой равны 1, остальные равны 0, а с двумя параметрами – матрицу размера n x m. Главная диагональ для прямоугольной матрицы – элементы с совпадающими номерами строки и столбца. |
diag ([a1 … an]) | Создает квадратную диагональную матрицу на главной диагонали которой расположены элементы заданные в скобках, остальные элементы матрицы равны 0. Размер матрицы определяется числом элементов. |
diag ([a1…an],k) | Создает квадратную матрицу размерности n + abs(k), где n – число элементов массива (первый параметр). Элементы массива размещаются по правилу: элемент с индексом i в создаваемой матрице помещается на место элемента матрицы с индексами (i, i+k). Все остальные элементы задаются равными 0. |
rand (n) rand (n,m) | Функция с одним параметром создает матрицу размера n x n, а с двумя – размера n x m со случайными значениями элементов из диапазона от 0 до 1. |
randi(p,n) randi(p,n,m) | Функция с двумя параметрами создает матрицу размера n x n, а с тремя – размера n x m со случайными целыми значениями элементов из диапазона от 0 до p-1. |
magic (n) | Создает магический квадрат размера n x n, т.е. матрицу с целыми элементами от 1 до n2, у которой суммы элементов по строкам, столбцам и на главной и побочной диагонали равны одному и тому же числу. |
diag (A) | Создает вектор-столбец, составленный из элементов главной диагонали матрицы А. |
tril(A) / triu(A) | Создает нижнюю/верхнюю треугольную матрицу, составленную из элементов A (т.е. матрицу у которой элементы на и под/над главной диагональю совпадают с соответствующими элементами матрицы А, остальные элементы равны 0) |
Для доступа к отдельным элементам матриц указываются их индексы:
|
|
1. Например, А(1,3) – элемент матрицы А, стоящий в 1-й строке и 3-м столбце;
>> А(1,3)
ans = 3
2. Этот элемент матрицы А можно вызвать иначе
>> А(5)
ans = 3
То есть MATLAB запоминает элементы матрицы по столбцам
Для доступа к нескольким элементам матрицы в качестве индекса указывается массив значений. Например:
А([1 2], 2) – вектор-столбец, содержащий 1-й и 2-й элемент из 2-го столбца матрицы А;
А(2, [1 3]) – вектор-строка, содержащая 1-й и 3-й элемент из 2-й строки матрицы А;
А([2 3], [3:4]) - матрица размера 2 x 2, составленная из элементов стоящих на пересечении 2-й и 3-й строк с 3-м и 4-м столбцами матрицы А.
Для получения доступа к целому столбцу матрицы в качестве первого индекса используется двоеточие без значений, например A(:, 2) – второй столбец матрицы. Для получения доступа к целой строке – двоеточие без значений в качестве второго индекса, например A(3, :) – третья строка матрицы.
Упражнение 1.2.
1. Создайте матрицу A размера 4 на 4 с единицами на главной диагонали и выше и нулями ниже главной диагонали.
2. Замените значение А(2,3) на (-2).
3. Умножьте каждый элемент второй строки матрицы на 3.
4. Переставьте местами первый и последний столбцы матрицы.
Дата добавления: 2019-09-13; просмотров: 196; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!