Использование переменных Возможно приписать числовое значение переменной для использования в последующих вычислениях. Например, набрав >> x=3 получим x= 3
36 Но можно сделать и так, >> rad=2; ht=3; >> vol=pi*ht*rad^2 vol= 37.6991 Следует обратить внимание, что первая строка содержит две команды и ни одна из них не выдает результата! Когда MATLAB встречает инструкцию с сим- волом ; (точка с запятой) в конце, он запрещает вывод результата. Инструкция в действительности выполняется, но ее результат умалчивается. Использование символа ; позволяет избежать хаотического заполнения эк- рана промежуточными результатами. Не следует забывать, что каждая переменная должна как-то получить зна- чение прежде, чем она будет использована в дальнейших вычислениях. Так, после выполнения предыдущих примеров и строки >> f=x^2+2*x*y+y^2 будет выведено следующее сообщение ??? Undefined function or variable y Но если ввести >> y=4; а затем повторно выполнить вычисление f, оно пройдет успешно. Следует отметить, что быстрый способ повторить предыдущую строку MATLAB – это нажимать клавишу «стрелка вверх» до тех пор, пока не отобразит- ся желаемая команда. Этим же приемом можно воспользоваться, если исходная строка была не совсем правильной или есть необходимость получить новую стро- ку из более сложной, но схожей с ней и выполненной ранее. Выбрав требуемую строку, можно использовать «стрелки в сторону» и клавишу Delete для редакти- рования. Векторы и графики MATLAB отличается простотой построения графиков. Основные принципы таковы: 1. Выбрать последовательность x, т.е. вектор значений аргумента. 2. Вычислить ( ) yf x= , т.е. получить соответствующий вектор y-вектор. 3. Вывести график y от xПрежде, чем проделать это, рассмотрим работу MATLAB с векторами. 37 Векторы Выполним следующий пример >> u=[2,2,3] >> u=[2 2 3] >> v=[1, 0, -1] >> w=u-2*v >> range=1:13 >> odd=1:2:13 >> down=20:-0.5:0 >> even=odd+1 >> xgrid=0:.05:1; >> x=xgrid*pi >> y=sin(x) Первые две строки показывают, что элементы вектора могут разделяться пробелами или запятыми. Таким образом [1+1 2 3] означает то же самое, что и [2,2,3], а [1 +1 2 3] – то же, что и [1,1,2,3]! Следует заметить, что векторы могут быть любой длины. Они могут быть строками, как в рассмотренном только что примере, так и столбцами. >> w’ ans= 0 2 5 Апостроф означает транспонирование. В MATLAB векторы трактуются как частный случай матриц. Если представляемый вектор оказывается слишком длинным и не умещает- ся в одной строке, система сначала отображает столько элементов, сколько их умещается в строке, а остальные переносит на следующие строки. Элементы это- го вектора-строки трактуются как столбцы. Элементарная функция x, такая, как sin( ) x, также является вектором того же типа. Мы можем использовать этот факт при создании графиков функций, как по- казано в следующем разделе. MATLAB знает, как перемножать матрицы соответствующих размеров. По- пробуем выполнить строки >> w*w’ >> w’*w >> u*w’ >> u*u Почему последняя строка не работает? 38 Допустим, необходимо получить множество значений z , данное выражени- ем 2 z y = , где вектору y уже были присвоены некоторые значения. Для этого не- обходимо выполнить присвоение >> z=y*y’ Оно вычисляется как скалярное произведение y y ⋅ . Чтобы заставить MAT- LAB перемножить векторы поэлементно, нужно выполнить следующее >> z=y.*y где точка перед символом «*» – ключевой признак поэлементной операции. По- добным образом понимаются в качестве поэлементных и операции возведения в степень и деления векторов и матриц одинаковых размеров. Графики Для построения графика достаточно выполнить функцию >> plot(x,y) После ее выполнения откроется дополнительное окно, в котором будет по- строена кривая y в зависимости от аргумента x . Оси выбираются автоматически в соответствии с областями изменения переменных. Это простейший случай. Например, график, выведенный функцией >> plot(x,y,’+’) будет построен с помощью символов ‘+’ для всех элементов вектора x . График, построенный с помощью функции >> plot(x,y,’*g’) будет иметь зеленый цвет (Green) и будет построен с помощью символов «*». Для того, чтобы вывести сетку, необходимо ввести команду следующего вида >> plot(параметры), grid Создание и редактирование скрипт-файлов Достаточно утомительно снова и снова вводить те же самые или подобные им последовательности команд. К счастью, есть простой путь обойти это: нужно просто сохранить любую часто повторяемую последовательность команд в виде файла, называемого скриптом или M-файлом. После этого можно вызывать этот список команд так часто, как надо.
39 Редактирование и сохранение программ M-файл можно создавать с помощью Блокнота, либо с помощью встроенно- го редактора M-файлов, который запускается из MATLAB с помощью меню File->New->M-file. Создадим простейщий M-файл % myfile.m % Это просто название файла % Эти три строки – комментарии, на которые % MATLAB не обращает внимания disp(‘Вы запустили M-файл’) и сохраним его. Затем, вернувшись в MATLAB, можно выполнить >> type myfile После выполнения данной команды будет отображено все содержание фай- ла myfile.m. Скрипт-файлы Чтобы использовать скрипт-файл, достаточно набрать >> myfile После этого будут выполнены все команды, содержащиеся в файле myfile. Следует заметить, что myfile – это имя инструкции MATLAB, т.к. my-file.m – имя файла, содержащего ее определения. Нельзя давать файлам *.m имена, состоящие из русских букв и имена, начинающиеся с цифр!!! Файлы функций Было бы утомительным присваивать значения компонентам двух векторов перед каждым обращением к нашему скрипту. Можно соединить присвоение входных значений с действующими инструкциями вызова M-файла, используя M- файл типа « функция». Кроме того, одновременно можно присвоить полученные значения новым переменным, т.е. создать файл-функцию с именем, например, dist, такую, что, набрав >> dab=dist([1,2,3], [1,1,3]); или >> a=[1,2,3]; b=[1,1,3]; >> dab=dist(a,b); 40 Переменной dab будет присвоено правильное значение расстояния. Ниже приведен текст файла dist.m, содержащий полное описание функ- ции и выполняющих ее команд: % Файл dist.m % Вычисляет расстояние между 2 точками % в 3-мерном пространстве % Вызов d=dist(a,b) % Вход: a,b – векторы с координатами точек % Выход: d – расстояние между точками function d=dist(a,b) d1=b-a; d2=d1*d1’; d=sqrt(d2); Все комментарии, находящиеся НАД описанием функции, являются справ- кой по данной функции и могут быть выведены на экран при помощи команды >> help dist Исправления любых ошибок в M-файле можно проводить как с помощью Блокнота, так и с помощью команды меню MATLAB File->Open. M-файлы, являющиеся функциями, могут использовать различные пере- менные, которые будут являться внутренними. Это помогает уменьшить путаницу с другими вычислениями и переменными, используемыми непосредственно в ко- мандной строке MATLAB и в прочих M-файлах. Команда >> clear удаляет все ранее определенные переменные.
41 Упражнения 1. Найти сумму первых четырех членов последовательности 1 2 3 , , ,... 2 3 3 4 4 5 ⋅ ⋅ ⋅ 2. Определить вектор t со значениями компонент, равномерно расположен- ными с шигом 0.2 между 0 и 6 включительно. Использовать его для того, чтобы нарисовать кривые ( ) sin( ) f ttπ = и ( ) sin( ) tg tetπ − = на одном графике, изобразив первую зеленым, а вторую – желтым цветом. График построить с сеткой. 3. Создать M-файл, в котором определяется длина каждой из сторон тре- угольника ABC. Координаты векторов должны передаваться в файл извне. Операторы ветвления Оператор ветвления Синтаксис оператора следующий: if условие операторы; end Если заданное условие истинно, инструкции выполняются, если условие яв- ляется ложным, инструкции не выполняются, и программа переходит к выполне- нию команд, расположенных после слова end. В общем случае синтаксис имеет следующий вид: if условие1 операторы1; elseif условие2 операторы2; elseif условие3 операторы3; . . . else операторы; end В такой конструкции может быть много ветвей с ключевым словом elseif. При этом, если справедливо условие1, выполнятся операторы1, ус-ловие2 – операторы2, и т.д. Если все эти условия окажутся ложными, то вы- полняются команды, стоящие после слова else. 42 Оператор переключения Синтаксис: switch выражение case значение1 операторы1 case {значение2, значение3,...} операторы_i . . . otherwise операторы; end Сначала вычисляется значение выражения (скалярное числовое значение либо строка символов), затем это значение сравнивается со значением1, зна- чением2, и т.д. Если найдено совпадение, выполняются соответствующие инст- рукции. Если не найдено ни одного совпадения, выполняются операторы, распо- ложенные между otherwise и end. Если выполнена одна из ветвей, то остальные выполняться не будут, т.е. не требуется написание оператора break. Управляющие структуры Цикл for Синтаксис: for variable=n_beg:step:n_end операторы; end • variable – некоторая переменная; • n_beg – начальное значение переменной; • n_end – конечное значение переменной; • step – шаг. Цикл завершается, как только variable>n_end. Цикл while Синтаксис: while условие операторы; end
43 Цикл выполняется до тех пор, пока истинно указанное условие. Под усло- вием понимается любое распознаваемое MATLAB выражение, которое может включать операции сравнения и логические операции. Для задания условия выполнения цикла while могут использоваться лю- бые допустимые в Matlab операторы отношения, а также логические операторы. Операция Описание == Равно = Не равно <,>,<=,>= Операции сравнения & Логическое «И» | Логическое «ИЛИ» Логическое «НЕ» В случае, когда можно использовать поэлементные операции, лучше ис- пользовать их, т.к. они выполняются быстрее и эффективнее.
44 ПОЛОЖЕНИЕ О ВЫЧИСЛИТЕЛЬНОЙ ПРАКТИКЕ С целью закрепления теоретического материала на практических занятиях для студентов специальностей 080601 (061700) – «Статистика» и 080116 (061800) – «Математические методы в экономике» в четвертом семестре преду- смотрено проведение вычислительной практики в течение двух недель после окончания сессии. Такая практика способствует развитию навыков самостоятель- ной работы в области алгоритмизации и математического моделирования, исполь- зования пакетов прикладных программ для решения конкретных задач из различ- ных предметных областей. Программа практики ориентируется на знания, полу- ченные студентами в результате изучения дисциплин: «Информатика», «Алго- ритмизация и языки программирования», «Численные методы». Цели вычислительной практики: • закрепление, углубление и расширение основных понятий и определений вычислительной математики; • практическое решение как типичных задач вычислительной математики, требующих небольшого объема вычислений, так и достаточно сложных в вычис- лительном отношении задач, которые могут быть проведены с помощью пакетов прикладных программ. При таких требованиях у студентов имеется возможность изучить теорию основных вычислительных алгоритмов и реально убедиться в их действенных возможностях и свойствах на примере численного решения типичных модельных и прикладных задач. Работая с конкретными задачами, студент углубляет знания в области тео- рии вычислительных алгоритмов, имеет возможность убедиться в действенных возможностях и свойствах конкретных алгоритмов на примере численного реше- ния типичных модельных и прикладных задач. Практическое проведение всего технологического цикла решения задачи, от составления и записи алгоритма до получения конкретного результата, служит хорошей базой для успешного изуче- ния ряда последующих специальных дисциплин. Во время вычислительной практики студент выполняет набор заданий, охватывающих следующие разделы курса «Численные методы»: • элементарная теория погрешностей; • интерполяция функций; • решение нелинейных уравнений; • решение систем линейных и нелинейных уравнений; • нахождение собственных чисел матрицы; • решение дифференциальных уравнений. Каждое задание состоит из двух задач. Решение первой задачи выполняется без применения прикладных математических программ и имеет целью закрепле- ние навыков пошаговой прокрутки алгоритма (разрешается использование таблиц 45 MS Excel и калькулятора). Вторая задача решается с использованием среды MATLAB. В качестве заданий, выполняемых во время прохождения практики, препо- давателем могут быть предложены как типовые, так и не типовые задачи, тре- бующие численного решения. Практика проводится в компьютерном классе кафедры. Руководителем яв- ляется преподаватель кафедры. В течение всего периода практики руководитель практики проводит по необходимости консультации. По согласованию с руково- дителем практики студент может проходить вычислительную практику в других подразделениях вуза или организациях. По завершению вычислительной практики студент предоставляет на кафед- ру отчет, который должен содержать постановки и решения всех предложенных задач. Отчет должен быть оформлен в соответствии с ГОСТом по типовым пра- вилам составления отчетов, принятым в вузе. Отчет выполняется в редакторе MS Word, формулы набираются с помощью Equation Editor или Math Type. Отчет предоставляется руководителю практики не позднее последнего дня ее проведе- ния. Руководитель практики выставляет оценку. Если в том есть необходимость, проводится защита отчета. БИБЛИОГРАФИЧЕСКИЙ СПИСОК 1. Воробьева, Г.Н. Практикум по вычислительной математике: Учеб. посо- бие для техникумов. – 2-е изд., перераб. и доп. / Г.Н. Воробьева, А.Н. Данилова. – М.: Высш. школа, 1990. – 208 с.: ил. 2. Сборник задач по методам вычислений: Учеб. пособие для вузов. – 2-е изд., перераб. и доп. / под ред. П.И. Монастырского.– М.: Физматлит, 1994. – 320 с. 3. Курбатова, Е.А. MATLAB 7. Самоучитель / Е.А. Курбатова. – М.: Изда- тельский дом «Вильямс», 2006. – 256 с.: ил.
|