Команда очистки экрана clc

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

Существует несколько способов возврата в строку ввода ранее введенных команд.

Первый способ – с помощью клавиш <> и <>

Второй способ – копирование из окна Command History.

Если в окне Command History дважды щелкнуть левой кнопкой мыши на какой - либо команде, эта команда будет выполнена. Это равнозначно вводу данной команды в командное окно и последующему нажатию клавиши <Enter> (рис. 4).

Если щелкнуть на какой - либо команде окна Command Historyлевой кнопкой мыши, то данная команда становится текущей (на синем фоне). Можно выделить нужную последовательность команд при помощи комбинации клавиш <Shift>+<>, <Shift>+<>. При щелчке правой кнопкой мыши на выделенной области окна Command Historyпоявляется всплывающее меню. Выбор пункта Copy приводит к копированию выделенной последовательности в буфер обмена Windows. При щелчке правой кнопкой мыши на области окна Command Window появляется всплывающее меню. Выбор пункта Paste приводит к вставке скопированной последовательности команд в командную строку. Весь вставленный в командную строку набор команд отправляется на выполнение нажатием клавиши <Enter>.

Третий способ – копирование из содержимого текстового поля рабочего окна.

В текстовом поле можно выделить с помощью мыши любую команду и копировать ее в буфер обмена операционной системы Windows, а затем вставить в командную строку.

При вычислениях любое арифметическое выражение набирается с клавиатуры в командной строке. Редактор MATLAB укажет на синтаксические ошибки. Надо отличать предупреждение об ошибке от сообщения о ней. Предупреждения (обычно после слова Warning) не останавливают вычисления и лишь предупреждают о том, что ответ может быть ошибочным.

При сообщении об ошибке красного цвета (после знаков ???) MATLAB не выдает решение.

Но он не обнаружит так называемые семантические (смысловые) ошибки.

Придадим арифметическому выражению F статуса символьного с помощью команды sym (F=sym()). Выведенное в командное окно символьное выражение F синтаксически совпадает с арифметическим.

Далее команда pretty(F)выводит в командное окно символьное выражение F в виде, близком к математической формуле. Выведенная и исходная формулы не совпадают. После исправления ошибок вновь выведем pretty(F)для проверки.

 

Команда очистки экрана clc

>> clc

стирает содержание командного окна MATLAB и размещает символ приглашения >> в левом верхнем углу пустого экрана.

Эта команда, однако, оставляет неизменным содержимое окон Command History и Workspase. Поэтому в «чистом» командном окне можно пользоваться значениями переменных, полученных до ввода команды clc.

MATLAB запоминает значения всех переменных, определенных во время сеанса работы, даже если применена команда очистки экрана clc.

Получить справку о команде можно используя справочную информацию команды help.

3.Хотя задавать вещественные числа можно в любой из указанных выше форм, на машинном уровне системы MATLAB они представляются в форме с мантиссой и показателем степени. Этот основной тип данных называется double (формат с двойной точностью). Он задается по умолчанию, и даже целые числа представляются системой MATLAB на машинном уровне в той же форме, что и дробные числа.

В MATLABтакже существует тип данных single, который снижает требования к памяти в два раза (под мантиссу и показатель степени отводится 4 байта). Но при сложных вычислениях в этом случае возрастает вероятность получить результат с большой погрешностью.

Существуют и целые типы данных: int8, uint8, int16, uint16, int32, uint32, int64, uint64. Под них отводится 8, 16, 32 и 64 байта соответственно.Буква u соответствует беззнаковым типам данных с диапазоном от 0 до некоторого максимального положительного значения.

Для того чтобы переменная получила тип данных, отличный от double, применяется явный квалификатор, совпадающий с названием типа.

Например,

>> x=int32(3.2)

определяет переменную целого типа int32.

По завершении сеанса работы с системой MATLAB все использованные переменные теряются. Чтобы сохранить содержимое рабочего пространства в файле на диске компьютера, надо выполнить команду меню FileSave Workspace As…

Начиная с версии 6.0, в MATLAB появилось удобное средство для просмотра переменных рабочей среды – окно Workspace, которое активизируется с помощью команды View => Workspace меню командного окна. Окно Workspace содержит таблицу, аналогичную той, что выводится командой whos.

При щелчке правой кнопкой мыши на строке с именем переменной, в окне Workspace появляется всплывающий список команд. Команды списка позволяют переименовать переменные, удалить лишние, сохранить рабочую среду и т. д. Так, щелчок на строке с именем команды Open(Открыть) приводит к отображению этой переменной в окне Array Editor.

 

4.Двойной щелчок левой кнопкой мыши на строке с именем переменной в окне Workspace отображает в отдельном окне редактора массивов Array Editor ее матричное представление.

В окне Array Editor в соответствующих полях задается размер матрицы – число ее строк и столбцов – и далее вводятся числа, выражения, переменные и функции в отдельные клетки появившейся таблицы. Этот способ обеспечивает быстрый доступ к элементам матрицы и позволяет их вводить или редактировать в произвольном порядке.

Один из способов формирования векторных и матричных массивов состоит в создании пустого массива размера 0×0, который затем заполняется с использованием редактора массивов Array Editor.

>> M=[]

M =

[]

5.К матричным действиям с матрицами относятся такие операции, которые используются в матричном исчислении в математике. Базовые действия с матрицами (векторами): сложение, вычитание, транспонирование, умножение матрицы на число, умножение матрицы на матрицу, возведение квадратной матрицы в степень – осуществляются в MATLAB с помощью обычных знаков арифметических операций. Условия, при которых эти операции возможны, таковы:

при сложении или вычитании матриц они должны иметь одинаковые размеры;

при умножении матриц число столбцов первого множителя должно совпадать с числом строк второго множителя.

Невыполнение этих условий приводит к появлению сообщения об ошибке.

Пример транспонирования матрицы, при котором ее строки становятся столбцами, а столбцы – строками, осуществляется с помощью оператора <'>(апостроф):

>> disp(A')

Скалярное произведение двух векторов вычисляет команда dot:

>> s=dot(x,y)

s =

Векторное произведение. Для трехкомпонентных векторов в MATLAB существует команда cross, которая вычисляет векторное произведение двух векторов.

Командаdet(B) вычисляет определительB квадратной матрицы B.

>> d=det(B)

Команда обращения матрицы inv(B) вычисляет матрицу В-1, обратную заданной матрице B. Исходная матрица B должна быть квадратной, и ее определитель не должен быть равен нулю.

Если требуется извлечь квадратный корень из матрицы, то лучше применить матричную функцию sqrtm. Матричные экспонента и логарифм вычисляются при помощи матричных функций expm и logm.

Кроме поэлементного преобразования матриц с помощью математических функций, в MATLAB можно выполнять поэлементные преобразования матриц с помощью арифметических операций. К таким операциям относятся операции поэлементного умножения с помощью оператора <.*>(без пробела между точкой и звездочкой), поэлементного деления <./>, обратного поэлементного деления <.\>, поэлементного возведение в степень <.^>. Операции поэлементного преобразования матриц выполняются только над матрицами одинакового размера и типа.

 

6.В MATLABвводятся две новых операции (они не относятся к операциям линейной алгебры) деления матриц слева направо и справа налево. Первая операция записывается при помощи знака < / >, а вторая – при помощи знака < \ >, которые помещаются между именами двух матриц – делимого и делителя. Операция B/A эквивалентна операции B*inv(A) и ее удобно использовать для решения матричного уравнения

X*A = B,

а A\B эквивалентна inv(A)*B и является решением матричного уравнения

A*X = B.

Пример:

Пусть дана система линейных уравнений

 

 

Решить систему с применением оператора обратного деления матриц < \ >.

Решение:

В матричной записи система имеет вид Ах = b, где

 

A = , b = , х =

 

– соответственно матрица из коэффициентов при неизвестных, вектор-столбец из свободных членов и вектор-столбец из неизвестных.

Введем матрицу А и вектор-столбец свободных членов b:

>> А=[1 3 0;-2 -2 5;1 0 -5]

А =

1 3 0

-2 -2 5

1 0 -5

>> b=[-2;10;-9]

b =

-2

-9

Известно, что система имеет единственное решение, если определитель матрицы А не равен нулю (A = det(A) 0). Вычислим определитель матрицы А:

>> disp(det(A))

-5

Определитель не равен нулю. Находим решение системы с помощью оператора обратного деления матриц < \ >:

>> x=А\b

x =

-1

Проверим полученное решение x1 = 1, x2 = -1, x3 = 2 подстановкой в систему уравнений:

>> disp(A*x)

-2.0000

10.0000

-9.0000

В результате проверки получен вектор-столбец свободных членов.

 

7.Символ <:> (двоеточие) дает возможность простого создания векторов, каждый элемент которых отличается от предшествующего на постоянную величину (шаг или приращение). Шаг может быть и отрицательным. Например:

>> V=-0.1:0.3:1.4

Длинный вектор можно вводить частями, которые затем объединяются с помощью операции сцепления строк:

>> V1=[1 2 3];V2=[4 5 6];

>> V=[V1 V2]

V =

1 2 3 4 5 6

Для создания нового вектора из определенных в заданном порядке элементов другого вектора применяется индексация при помощи вектора. Запись в вектор W пятого, второго, первого и третьего элементов вектора V производится следующим образом:

>> ind=[5 2 1 3];

>> W=V(ind)

W =

5 2 1 3

Пусть в векторе из девяти элементов требуется заменить нулями элементы с третьго по седьмой. Эту задачу легко решить индексацией с помощью двоеточия.

Например:

>> P=[-1 0.1 2.2 3.4 5.6 3.1 6.8 9.7 5.5];

>> P(3:7)=0

 

8.ВMATLAB предусмотрены команды для создания векторов и матриц специального вида. Рассмотрим некоторые из них:

zeros(M,N) – создает матрицу размером M×N c нулевыми элементами:

>> zeros(3,4)

ones(M,N) – создает матрицу размером M×N c единичными элементами:

>> ones(3,4)

eye(M,N) – создает матрицу размером M×N c единицами по главной диагонали и остальными нулевыми элементами:

>> eye(3,4)

rand(M,N) – создает матрицу размером M×N из случайных чисел, равномерно распределенных в диапазоне от 0 до 1:

>> rand(3,4)

randn(M,N) – создает матрицу размером M×N из случайных чисел, распределенных по нормальному закону с нулевым математическим ожиданием и стандартным (среднеквадратическим) отклонением, равным единице 1:

>> randn(3,4)

Для всех перечисленных команд можно задавать один аргумент M в случае квадратной матрицы (M=N):

>> eye(3)

rot90 – осуществляет разворот матрицы на 90o против часовой стрелки:

>> Q=[1 2;3 4]

>> R=rot90(Q)

D=diag(V) – диагональная матрица, элементы которой задаются во входном аргументе - векторе V;

D=diag(V,k) – диагональная матрица со смещенной на k позиций диагональю (положительные k – смещение вверх, отрицательные – вниз), результатом является квадратная матрица размера length(V)+abs(k);

d=diag(A) – выделение главной диагонали из матрицы A в вектор d;

d=diag(A,k) – выделение k-ой диагонали из матрицы A в вектор d.

 

9.«Расширять» матрицу, составляя ее из отдельных заданных матриц («блоков»), можно тоже довольно просто. Если заданы несколько матриц - блоков A1, A2,…,AN с одинаковым числом строк, то из них можно «слепить» единую матрицу А, объединяя блоки в одну «строку» операцией горизонтального сцепления A=[A1,A2,…,AN]. Аналогично вертикальное сцепление матриц можно реализовать при условии, что все составляющие блоки - матрицы имеют одинаковое число столбцов, применяя для отделения блоков вместо запятой точку с запятой: A=[A1;A2;…,AN].

 

10.В MATLAB мы будем использовать как встроенные функции, так и свои собственные функции. Собственные функции можно задавать в отдельных файлах, которые называются M-файлами. function d=rad(x,y,z)

%Вычисление длины d=sqrt(x^2+y^2+z^2) радиус-вектора точки (x;y;z)

d=sqrt(x^2+y^2+z^2);

Структура M-файлов-функций следующая.

Первая строка в M-файле-функции называется строкой определения функции и начинается со слова function. В окне редактора M-файлов это зарезервированное слово выделяется синим цветом. Первая строка M-файла задает имя функции, а также количество аргументов (или параметров) ввода и вывода. В этом примере функция называется rad. Имя файла (за исключением расширения .m) и имя функции должны совпадать. Когда вы создаете этот новый M-файл-функцию в безымянном окне редактора и выбираете команду Save (Сохранить), модуль Editor (Редактор) сам присваивает файлу имя rad.m. Функция в нашем примере имеет для ввода три элемента, которые внутри M-файла обозначены как x, y, z. В качестве результата возращаетсяодин элемент – значение d, появляющееся в конце выполнения функции.

За строкой определения функции может следовать несколько строк - комментариев, начинающихся со знака процента %. Эти строки называются текстом справки об используемой функции и отображаются при вводе команды help. В M-файле rad.m присутствует только одна строка текста справки; она отображается при введении команды help rad.

 

11. Передача информации из командного окна MATLAB в файл-функцию осуществляется с помощью параметров функции. Другой механизм передачи информации – глобальные переменные. Файл-функция может и не иметь входных или выходных параметров, заголовки таких файл-функций приведены ниже:

function noout(a,b), function [v,u]=noin, function noarg().

Для того чтобы рабочая область MATLAB и файл-функция могли совместно использовать некоторую переменную с заданным именем, ее всюду нужно объявить как глобальную с помощью команды global.

Приведем пример файл-функции rad3 без входных параметров:

function [d,d2]=rad3

global x y z

d2=x^2+y^2+z^2;

d=sqrt(d2);

Вызов ее осуществляется следующим образом:

>> global x y z

>> x=2;y=3;z=4;

>> [m,n]=rad3

m =

5.3852

n =

Переменные, которые используются в файл-функции, такие как x, y, z и d в файле rad.m, являются локальными переменными. Запуск M-файла-функции не задает эти переменные в рабочей области и не изменяет их параметры, если переменные с такими же именами в рабочей области были заданы ранее. Система MATLAB не запоминает значения этих переменных после того, как M-файл-функция будет выполнен, а область оперативной памяти, в которой они хранились, освобождается.

 

12. Операторы отношения служат для поэлементного сравнения двух операндов, в качестве которых могут выступать числа, векторы или матрицы. При этом сравниваемые векторы или матрицы должны иметь одинаковые размеры. Если операнды одинаковы, то программа возвращает 1 (True – Истина), в противном случае–0 (False – Ложь). Перечень операторов отношения с соответствующими им функциями представлен в таблице 4.1.

Оператор Название Функция
== Равно Eq
~= Не равно Ne
< Меньше Lt
> Больше Gt
<= Меньше или равно Le
>= Больше или равно Ge

Таблица 4.3. Логические операторы и их функции

Оператор Название Функция
& Логическое И And
| Логическое ИЛИ Or
Отсутствует Исключающее ИЛИ Xor
~ Логическое НЕ Not

Первые три операции являются двухоперандными (бинарными), а операция < Не > является унарной (однооперандной).

Приоритеты операций системы MATLAB в порядке убывания приведены ниже:

1. Круглые скобки <( )>.

2. Транспонирование <.'>, транспонирование с комплексным сопряжением<'>, возведение в степень <^>, поэлементное возведение в степень <.^>.

3. Унарный плюс <+>, унарный минус <–>, логическое отрицание <~>.

4. Умножение и деление (в том числе поэлементное) <*>, </>, <\>, <.*>, <./>, <.\>.

5. Сложение <+> и вычитание <–>.

6. Операции отношения <, <=, >, >=, ==, ~=.

7. Логическое И <&>.

8. Логическое ИЛИ <|>.

13. Цикл for используется для повторения команды или набора команд в случае, когда число повторений заранее известно. Синтаксис цикла for имеет следующий вид:

for var = b1:b2:b3

Команды (текст программы)

End

Здесь var – переменная (счетчик) цикла, которая при каждом повторении цикла изменяется от начального значения b1 до конечного значения b3 с шагом b2 (если параметр b2 не указан, по умолчанию его значение принимается равным 1). Переменная цикла может принимать не только целые, но и вещественные значения с любым знаком. Команды в тексте программы разделяются запятой <,>, точкой с запятой <;> или нажатием клавиши <Enter>. Ввод команд завершается командой end. Цикл завершается, как только значение var превысит b3.

В том случае, когда число повторений заранее неизвестно и определяется в ходе выполнения набора команд, следует организовать цикл while. Цикл while работает, пока выполнено условие цикла.

Пример файл-функции polsum, которая находит сумму всех первых положительных элементов вектора:

function s=polsum(x)

s=0;

k=1;

while x(k)>0

s=s+x(k);

k=k+1;

end

 

14.Ветвление в ходе работы программы осуществляется при помощи конструкции if-elseif-else. Самый простой вариант ее использования (без elseif и else) реализован в файл-функции possum , которая предназначена для нахождения суммы всех элементов вектора, больших 2:

Если ход программы должен изменяться в зависимости от нескольких условий, то следует использовать полную конструкцию if-elseif-else. Каждая из ветвей elseifв этом случае должна содержать условие выполнения набора команд, размещенных после нее. Важно понимать, что условия проверяются подряд, первое выполненное условие приводит к работе соответствующего набора, выходу из конструкции if-elseif-else и переходу к команде, следующей за end. У последней ветви else не должно быть никакого условия. Команды, находящиеся между elseи end, выполняются в том случае, если все условия оказались невыполненными.