Работа с символьными переменными



Команда 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!