
- •Введение
- •Глава 1 знакомство с matlab и простейшие вычисления
- •1.1. Рабочая среда matlab
- •1.2. Арифметические вычисления
- •1.3. Вещественные числа
- •1.4. Форматы вывода результата вычислений
- •1.5 Комплексные числа
- •1.6 Векторы и матрицы
- •1.7 Встроенные функции. Функции, задаваемые пользователем
- •1.8 Сообщения об ошибках и их исправление
- •1.9 Просмотр и сохранение переменных
- •1.10 Матричные и поэлементные операции над векторами и матрицами
- •1.11 Решение систем линейных уравнений
- •Вопросы для самопроверки
- •Глава 2 работа с массивами
- •2.1 Создание векторов и матриц
- •2.2 Применение команд обработки данных к векторам и матрицам
- •2.3 Создание специальных матриц
- •2.4 Создание новых массивов на основе существующих
- •Вопросы для самопроверки
- •Глава 3 м-файлы
- •3.1 Файл-программы
- •3.2 Файл-функции
- •Вопросы для самопроверки
- •Глава 4 программирование
- •4.1 Операторы отношения и логические операторы
- •4.2 Операторы цикла
- •4.3 Операторы ветвления
- •4.4 Оператор переключения switch
- •4.5 Оператор прерывания цикла break
- •4.6 Пример сравнения быстродействия матричных и скалярных операций
- •Вопросы для самопроверки
- •Глава 5 высокоуровневая графика
- •5.1 2D графика
- •5.1.1 Графики в линейном масштабе
- •5.2 Специальные виды 2d - графиков
- •5.2.1 Представление функции в виде дискретных отсчетов
- •5.2.2 Лестничные графики
- •5.2.3 Графики с указанием погрешности
- •5.2.4 Графики в логарифмическом и полулогарифмическом масштабах
- •5.2.5 Графики параметрических функций
- •5.3 3D графика
- •5.3.1 Линейчатые поверхности
- •5.3.2 Каркасные поверхности
- •5.3.3 Контурные графики
- •5.3.4 Сплошная освещенная поверхность
- •5.4.2 Сохранение и экспорт графиков
- •5.4.3 Анимация
- •Вопросы для самопроверки
- •Глава 6 прикладная численная математика
- •6.1 Операции с полиномами
- •6.2 Решение уравнений и их систем
- •6.3 Минимизация функции одной переменной
- •6.4 Минимизация функции нескольких переменных
- •6.5 Вычисление определенных интегралов
- •6.6 Решение дифференциальных уравнений
- •Вопросы для самопроверки
- •Глава 7 символьные вычисления
- •7.1 Символьные переменные, константы и выражения
- •7.2 Вычисления с использованием арифметики произвольной точности
- •7.3 Команды упрощения выражений – simplify, simple
- •7.4 Команда расширения выражений – expand
- •7.5 Разложение выражений на простые множители – команда factor
- •7.6 Приведение подобных членов – команда collect
- •7.7 Обеспечение подстановок – команда subs
- •7.8 Вычисление пределов – команда limit
- •7.9 Вычисление производных – команда diff
- •7.10 Вычисление интегралов – команда int
- •7.11 Разложение в ряд Тейлора – команда taylor
- •7.12 Вычисление суммы ряда – команда symsum
- •7.13 Решение уравнений и их систем – команда solve
- •7.14 Решение дифференциальных уравнений – команда dsolve
- •7.15 Прямое и обратное преобразования Лапласа – команды laplace, ilaplace
- •7.16 Графики символьных функций – команды ezplot, ezpolar
- •7.17 Прямой доступ к ядру системы Maple – команда maple
- •7.18 Разложение рациональной дроби на сумму простейших дробей
- •7.20 Решение неравенств и систем неравенств
- •7.21 Разложение в ряд Тейлора функции нескольких переменных
- •7.22 Решение дифференциальных уравнений с помощью степенных рядов
- •7.23 Решение тригонометрических уравнений
- •Вопросы для самопроверки
- •Приложения Приложение 1. Справочная система matlab
- •Приложение 2. Знакомство с пакетами расширения системы matlab
- •Приложение 3. Задания для самостоятельной работы
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Литература
3.2 Файл-функции
Подобно файл-сценарию, файл-функция представляет собой файл с простым текстом, который может находится в вашем текущем либо в любом другом каталоге. Файл-функции отличаются от сценариев тем, что позволяют задавать входные параметры, когда вы их запускаете из командной строки MATLAB или из другого M-файла.
Ниже представлен M-файл-функция с именем rad.m, созданный для нахождения длины d = радиус - вектора точки (x;y;z) трехмерного пространства:
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.
Остальные строки содержат выражения системы MATLAB, которые производят вычисление значений функции. Строки комментариев (строки, начинающиеся со знака процента %) могут быть в любой области M-файла. Они не являются исполняемыми инструкциями. Цель их размещения в тексте программы – пояснить смысл той или иной части программного кода. Все выражения в M-файле-функции, которые обычно производят вывод результатов, должны оканчиваться точкой с запятой с целью пресечения вывода результатов промежуточных вычислений.
Покажем, как используется файл-функция rad.m для вычисления длины радиус - вектора точки (2;3;4):
>> rad(2,3,4)
ans =
5.3852
Ответ 5,3852 будет возвращен и сохранен под именем ans независимо от того, заданы или нет x, y, z и d в вашей рабочей области. Переменные, которые используются в файл-функции, такие как x, y, z и d в файле rad.m, являются локальными переменными. Запуск M-файла-функции не задает эти переменные в рабочей области и не изменяет их параметры, если переменные с такими же именами в рабочей области были заданы ранее. Система MATLAB не запоминает значения этих переменных после того, как M-файл-функция будет выполнен, а область оперативной памяти, в которой они хранились, освобождается. Убедимся в этом, выполнив команду who:
>> who
Your variables are:
ans
M-файлы-функции могут иметь множество аргументов ввода и вывода. Ниже представлен пример файла с именем rad2.m с тремя входными и двумя выходными параметрами, вычисляющего длину d и квадрат длины d2 радиус - вектора точки трехмерного пространства (x; y; z):
function [d,d2]=rad2(x,y,z)
d2=x^2+y^2+z^2;
d=sqrt(d2);
Если вы введете rad2(2,3,4), то только первый аргумент вывода будет возвращен и сохранен под именем ans:
>> rad2(2,3,4)
ans =
5.3852
Чтобы увидеть оба результата вывода, надо присвоить эти результаты переменным, заключенным квадратные скобки:
>> [d,d2]=rad2(2,3,4)
d =
5.3852
d2 =
29
Введя d=rad2(2,3,4), вы можете присвоить первый аргумент вывода переменной d:
>> d=rad2(2,3,4)
d =
5.3852
При вводе d2=rad2(2,3,4) нельзя получить второй аргумент вывода, т. к. переменной d2 будет также присвоен первый результат:
>> d2=rad2(2,3,4)
d2 =
5.3852
Передача информации из командного окна 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 =
29
Параметрами файл-функций могут быть не только числа или скалярные переменные, но и массивы требуемых размеров. Поэтому желательно создавать векторизованные версии М-файлов – вместо операторов <^>, <*>, </> следует применять операторы <.^>, <.*>, <./>. Векторизация осуществляется командой vectorize (см. разд. 1.7).
Созданный M-файл можно сохранить не только в текущем, но и в любом другом каталоге. В этом случае перед запуском M-файла на выполнение нужно установить пути поиска, ведущие к нему. По умолчанию текущим является подкаталог work основного каталога MATLAB. Для того, чтобы увидеть его содержимое, в главном меню MATLAB выберите команду View => Current Directory (Вид => Текущий каталог). В результате раскроется окно, в котором отобразится список файлов и вложенных папок активного в данный момент каталога.
Чтобы изменить текущий каталог, введите путь к новому каталогу в поле Current Directory либо выберите его в раскрывающемся списке этого поля. Или же щелкните на кнопке справа от от поля Current Directory, и отыщите нужную папку в раскрывшемся диалоговом окне Обзор папок.
Справочную информация по M-функциям можно получить, введя команду doc function.