Ввод простых матриц

 

По существу Matlab работает только с одним видом объекта - прямоугольной числовой матрицей, с возможностью представления элементов в комплексном виде. В некоторых случаях может применятся матрица размерностью 1´1, представляющая скаляр, и матрица с одной строкой или одним столбцом, так называемый вектор. Действия команды подразумеваются Matlab-е обычно в матричном смысле, так же как они могли бы быть показаны на бумаге.

Матрицы в Matlab-е вводятся несколькими различными способами:

* Ввод явного списка элементов.

* Генерация матрицы использованием встроенных инструкций и функций.

* Создание матриц в М-файлах.

* Загрузка матриц из внешнего файла данных.

Язык Matlab-а не содержит требований к инструкциям по размерности и к объявлению типа. Matlab располагает и сохраняет автоматически количество информации доступное для данного компьютера.

Явный ввод матрицы

 

При вводе следует придерживаться следующих соглашений:

разделять элементы списка пробелами или запятыми;

список заключается в квадратные скобки ( [ ] );

для указания конца строки употреблять точку с запятой (;).

Например, вводом инструкции A= [1 2 3; 4 5 6; 7 8 9] получаем в результате

A=

1 2 3

4 5 6

7 8 9

Matlab сохраняет матрицу А для дальнейшего использования.

Большие матрицы могут представляться несколькими входными строками, разделенных символами CR. Хотя для введенной выше матрицы в этом нет необходимости, ее можно ввести следующим образом:

A=[1 2 3 CR

4 5 6 CR

7 8 9]

В результате будет получена та же матрица.

 

Элементы матрицы.

 

Элементами матрицы могут быть любые выражения Matlab-а, например, x=[-1.3 sqrt(3) (1+2+3)+4/5] выдаст результат:

x =

-1.3000 1.7321 4.8000

Отдельный элемент матрицы можно ввести при помощи указания его номера в круглых скобках, например, x(5) = abs(x(1)), произведет:

x =

-1.3000 1.7321 4.8000 0 1.3000,

как видно размер x автоматически увеличивается, чтобы ввести новый элемент, присвоив неопределенному элементу нулевое значение.

Можно конструировать большие матрицы используя малые матрицы как элементы, например, добавление к матрице А новой строки:

r=[10 11 12];

A=[A; r]

Результат:

A=

1 2 3

4 5 6

7 8 9

10 11 12

Возможно извлечь малую матрицу из большой, используя двоеточие ( : ), например, следующая запись извлекает три первые строки и все столбцы матрицы А:

A = A(1:3, : )

в результате получим исходную матрицу А.

 

Инструкции и переменные Matlab-а.

 

Matlab язык выражений. Он интерпретирует и вычисляет напечатанные выражения. Часто форма инструкций Matlab-а следующая:

переменная = выражение

или просто

выражение

Можно составлять выражения из операторов и других специальных символов, из функций и из имен переменных. Вычисление выражений производится матрицей. Матрица выводится на экран и присваивается переменной для использования в дальнейшем. Если не введено значение переменной и знак равенства ( = ), Matlab автоматически открывает переменную с именем ans, в которой сохраняется ответ. Например, напечатанное выражение

1900/81

произведет

ans =

23.4568

Инструкции, обычно, прекращаются возвратом каретки или клавишей Enter. Однако, если последний символ точка с запятой ( ; ), он запрещает отображение результата, но выполняет присваивание. Например, p = conv(r, r), производит перемножение полинома r самого на себя, но не выводит результат на экран.

Если выражение такое сложное, что не помещается в одну строку, то для непрерывного переноса его на другую строку употребляют последовательность из трех и более точек. Например,

s = 1-1/2+1/3-1/4+1/5-1/6+1/7...

-1/8+1/9-1/10+1/11-1/12;

вычисляет частичную сумму последовательности и присваивает ее переменной s, но ничего не выводит на экран. Пробелы вокруг символов = , + и - необязательны и включены в описание для удобства чтения.

Имена переменных и функций Matlab-а начинаются с буквы и последующими буквами или цифрами или подчеркиваниями, в любом количестве, но запоминаются только 19 символов имени.

Следует отметить, что Matlab чувствителен к регистру, он различает буквы верхнего и нижнего регистра. Т.е. переменные A и a различные переменные. Все имена функций вводятся в нижнем регистре, inv(A), invertsA, но выражение INV(A) обращается к неопределенной функции.

 

Редактирование командной строки.

 

Для того, чтобы исправить ошибку во введенной строке нет необходимости писать ее заново, достаточно нажать клавишу «стрелка вверх», затем стрелками влево (вправо) подвести курсор к нужному месту, исправить ошибку и нажать «Ввод». Причем, не обязательно перемещать курсор к концу строки ( правый край).

В остальном правила обращения с редактором похожи на все текстовые редакторы:

стрелка вверх, Ctrl-P вызов предыдущей строки;

стрелка вниз, Ctrl-N вызов следующей строки;

стрелка влево, Ctrl-B движение влево на один символ;

стрелка вправо, Ctrl-F движение вправо на один символ;

Ctrl- движение влево на одно слово;

Ctrl-® движение вправо на одно слово;

Home, Ctrl-A передвижение к началу командной строки;

End, Ctrl-E передвижение к концу командной строки;

Esc очистка командной строки;

Del, Ctrl-D удаление символа за курсором;

Backspace удаление символа перед курсором;

Ctrl-K удаление до конца строки.

 

Получение информации о рабочей области Matlab-а.

 

Созданные переменные сохраняются в рабочей области, список переменных выводится командой who, которая выводит список имеющихся переменных, т.е. появляются их имена и видно их количество (в том числе и переменная ans). Чтобы увидеть размеры текущих переменных вводится команда whos, которая выводит имена переменных, размерность матрицы, количество элементов.

 

Постоянные переменные.

 

Переменные ans и eps имеют специальное значение в Matlab-е. Они являются постоянными переменными, которые пользователь не может очистить.

Переменная eps определяет относительную точность операций с плавающей точкой, которая часто используется для оценки сходимости итерационных методов. Машинная точность eps - это наименьшее число, для которого на данной ЭВМ еще выполняется соотношение 1.0 + eps > 1.0. Для арифметического устройства, соответствующего стандарту IEEE, значение равно eps = 2-52, или ( приближенно ) 2.22 ´ 10-16. В процессе работы в системе Matlab можно присваивать этой переменной различные значения, включая 0.

 

Числовые и арифметические выражения.

 

Область значений положительных чисел приблизительно от 10-308 до 10308. Относительная точность - eps.

Встроенные выражения

+ сложение;

- вычитание;

* умножение;

/ правое деление;

\ левое деление;

^ возведение в степень.

Обычные символы арифметических действий, за исключением символов правого и левого деления. Имеется в виду, что результаты операций 1/4 = 4\1 = 0.25, они помогают, иногда, избежать применения скобочной записи.

Встроенные элементарные математические функции abs, sqrt, log, sin. Также имеется встроенное значение числа p, которое обозначается pi.

Встроенная функция inf, существующая в очень немногих вычислительных системах, определяет бесконечность. В результате выполнения операции s = 1/0, появляется предупреждение (не сообщение об ошибке) о делении на нуль и ответ s = inf. На машинах с IEEE деление на нуль не ведет к ошибочному состоянию или прерыванию вычислений. Оно вызывает предупреждающее сообщение и назначает специальное значение, которое может быть уместно в последующих вычислениях.

Кроме того, имеется переменная NaN (не число), которая позволяет фиксировать результат не представимый в виде числа, такие как:

* умножение вида 0*inf;

* деление вида 0/0 и inf/ inf;

* сложение и вычитание бесконечностей, например, (+inf)-(-inf);

* вычисление функций остатка rem(x, y) для y=0 или x=inf;

* вычисление отношений с предикатами < или >, например функций вида min([inf NaN]) и max([inf NaN]);

* любые арифметические операции с переменными NaN.

 

Комплексные числа и матрицы.

 

Комплексные числа в Matlab-е изображаются специальными функциями i или j и могут применяться во всех операторах и функциях. Иногда отдается предпочтение виду z = 3 + 4*i, в другом случае предпочтительнее z = 3 + 4*j.

Другой пример: w = r * exp(i * theta).

Удобный способ введения комплексных матриц:

A = [1 2; 3 4] + i*[5 6; 7 8]

или

A=[1+5i 2+6i; 3+7i 4+8i]

приводят к одному и тому же результату. При вводе комплексных матриц внутри скобок следует избегать лишних пробелов, например, пробелы вокруг знаков (+) приведут к вводу двух различных чисел. Это так же справедливо и для действительных чисел, а пробел перед символом показателя степени 1.23 _ e-4 будут причиной ошибки.

Имя встроенной функции может быть именем переменной. Когда использовано как имя переменной, встроенная функция становится недоступной внутри текущей рабочей области до тех пор, пока переменная будет очищена. Если используются символы i и j как переменные, новые комплексная единица может произвестись обычным способом:

ii = sqrt(-1)

z = 3 + 4*ii.

 

Формат выходных данных.

 

Все вычисления Matlab производит с двойной точностью, однако представление данных при выводе можно производить в различном, удобном для текущей работы, виде.

Например для x = [4/3 1.2345e-6] имеются следующие форматы вывода на экран:

format short

1.3333 0.0000

format short e

1.3333e+000 1.2345e-006

format long

1.3333333333333 0.00000123450000

 

format long e

1.33333333333333e+000 1.234500000000000-006

format bank

1.33 0.00

format hex

3ff5555555555555 3eb4b6231abfd271

format +

+ +

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

format compact - подавляет пробелы между строками;

format loose- восстанавливает пробелы между строками;

format rat - форма рационального дробного числа,

x = 4/3 1/810045.

Использование команды format без указания типа приводит к восстановлению формата short, который используется по умолчанию.

Если наибольший элемент массива больше 1000 или наименьший меньше 0.001, то перед всеми элементами массива при печати вводится общий масштабный множитель, как для коротких, так и для длинных форматов.

 

Операции над матрицами.

 

Транспонирование матриц. Для задания операции транспонирования служит специальный символ ( ‘ ), апостроф. Применяется либо к имени переменной B = A’, либо при задании матрицы x = [1 2 3]’. Для действительных результатом является транспонированная матрица, для комплексных - транспонирование дополняется комплексным сопряжением.

Сложение, перемножение, деление матриц производится применением привычных символов, как записывается на бумаге, по обычным правилам. При делении следует иметь в виду наличие двух символов деления.

Возведение в степень - A^p, если p - целое положительное число, то степень матрицы вычисляется путем перемножения ее на себя, если p - целое отрицательное, то то же самое относится к обратной матрице. Для других значений p вычисляются собственные значения и векторы.

 

Операции над векторами.

 

Сложение и вычитание векторов производится по тем же правилам, что и матриц, т.е. различий нет.

Для операций перемножения, деления, возведения в степень служат обычные символы, но с лидирующей точкой ( .*, ./, .^ ). Эти операции производятся поэлементно, т.е.

команда [1 2 3]*[4 5 6] для матриц будет неверна, но при добавлении к знаку умножения лидирующей точки будет произведена операция поэлементного умножения.

Работа с полиномами.

 

Matlab представляет полиномы как вектор-строку, содержащую коэффициенты в порядке понижения степени. Например, характеристическое уравнение матрицы

A =

1 2 3

4 5 6

7 8 0

вычисление коэффициентов полинома дает следующий результат

p = poly(A)

p =

1 -6 -72 -27

таким образом Matlab представляет полином x3 - 6x2 - 72x - 27.

Корни этого уравнения

r = roots(p)

r =

12.129

-5.7345

-0.3884

Можно произвести обратное преобразование и по корням построить полином

p2 = poly( r )

p2 =

1 -6 -72 -27

 

Умножение и деление полиномов.

 

Команда c = conv( a, b ), если полиномы a и b имеют длины степеней соответственно m и n, то их произведение полином c степени m+n.

Функция [q, r] = deconv( c, a ) осуществляет деление полинома c на полином a; частное возвращается в виде вектора q, остаток - в виде вектора r, так что выполняется соотношение c = conv( q, a ) + r.

 

Построение графиков.

 

Команды построения графиков в линейном масштабе:

plot(y)

plot(x, y)

plot(x, y, s)

plot(x1, y1, s1, x2, y2, s2, ...)

Команда plot(y) строит график элементов одномерного массива в зависимости от номера элемента, если элементы комплексные, то строится график plot(real(y), imag(y)). Если Y - двумерный действительный массив, то строятся графики для столбцов; в случае комплексных элементов их мнимые части игнорируются.

Команда plot(x, y) соответствует построению обычной функции, когда массив x соответствует значениям аргумента, а массив y - значениям функции.

Команда plot(x, y, s) позволяет выделить график функции, указав способ отображения линии, способ отображения точек, цвет линии и точек.

Команда plot(x1, y1, s1, x2, y2, s2, ...) позволяет объединить на одном графике несколько функций, определив для каждой из них свой способ отображения.

 

Построение графиков в логарифмическом и полулогарифмическом масштабе.

 

Команды

loglog(x, y)

loglog(x, y, s)

loglog(x1, y1, s1, x2, y2, s2, ...)

равносильны командам plot за исключением того, что по обеим осям используется логарифмический масштаб.

 

Команды

semilogx(x,y) semilogy(x,y)

semilogx(x,y, s) semilogy(x,y, s)

semilogx(x1, y1, s1, x2, y2, s2, ...) semilogy(x1, y1, s1, x2, y2, s2, ...).

Команды semilogx( ... ) используют логарифмический масштаб по оси x и линейный по оси y.

Команды semilogy( ... ) используют логарифмический масштаб по оси y и линейный по оси x.


SIMULINK

 

программа моделирования динамических систем.

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

SIMULINK объединяет два этапа применения: создание модели и ее анализ. На практике эти два этапа часто выполняются попеременно, создание модели, анализ и ее модификация, для получения требуемого поведения.

Чтобы облегчить создание модели, SIMULINK добавляет новые виды окон, называемые окна структурных схем. В этих окнах происходит создание и редактирование модели.

Анализ модели можно проводить либо выбирая опции из меню SIMULINK-а, либо вводя команды в окно команд MATLAB-а. Встроенные инструментальные средства анализа включают в себя различные алгоритмы моделирования, например, linmod - инструментальное средство для извлечения линейных моделей систем и trim - средство для нахождения точек равновесия.

В процессе работы можно наблюдать ход моделирования. Результаты моделирования можно переслать, для дальнейшей обработки, в рабочую область MATLAB-а.








Дата добавления: 2015-11-10; просмотров: 2130;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.038 сек.