Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Команда очистки экрана 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 все использованные переменные теряются. Чтобы сохранить содержимое рабочего пространства в файле на диске компьютера, надо выполнить команду меню File│Save 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, выполняются в том случае, если все условия оказались невыполненными.





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


Дата добавления: 2017-03-18; Мы поможем в написании ваших работ!; просмотров: 1324 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

80% успеха - это появиться в нужном месте в нужное время. © Вуди Аллен
==> читать все изречения...

2272 - | 2124 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.