- •Введение
- •Лабораторная работа ип1 Знакомство с Matlab
- •1. Рабочая среда Matlab
- •2. Данные Matlab
- •Типы данных
- •Числовые константы
- •Символьные константы
- •Переменные
- •3. Выражения
- •3.1. Арифметические выражения
- •3.2. Логические выражения
- •3.3. Порядок вычисления выражений
- •4. Сообщения об ошибках и исправление ошибок
- •5. Завершение вычислений
- •6. Завершение работы с системой
- •7. Резюме
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •Лабораторная работа ип2 работа с матрицами в matlab
- •1. Общие сведения
- •2. Одномерные массивы – векторы
- •3. Двумерные массивы – матрицы
- •4. Использование двоеточия
- •4.1. Автозаполнение
- •4.2. Индексация
- •5. Поэлементные и матричные операции
- •6. Стандартные функции для работы с матрицами
- •7. Логическое индексирование
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •10. Упражнения
- •2. Диалоговый ввод/вывод
- •3. Управление последовательностью исполнения операторов
- •3.1. Оператор условия if
- •3.2. Оператор переключения
- •3.3. Оператор цикла с определенным числом повторений
- •3.4. Оператор цикла с неопределенным числом повторений
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип4 визуализация данных в matlab
- •1. Общие сведения
- •2. Построение таблицы значений функции
- •3. Двумерная графика
- •3.1. Общие правила построения графиков
- •3.2. Оформление графиков
- •3.3. Построение графиков
- •3.4. Управление свойствами графиков
- •4. Трехмерная графика
- •4.1. Общие принципы построения трехмерных графиков
- •4.2. Построение трехмерных графиков
- •4.3. Управление свойствами трехмерных графиков
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип5 файл-функции
- •2. Описание m-функции
- •3. Обращение к m-функции
- •4. Параметры-функции
- •5. Разновидности m-функций
- •5.1. Подфункции
- •5.2. Вложенные функции
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •2. Аппроксимация
- •2.1. Моделирование полиномом по методу
- •2.2. Аппроксимация произвольной функцией
- •3. Интерполяция
- •3.1. Кусочная интерполяция
- •3.2. Кубические сплайны
- •3.3. Интерполяция произвольной нелинейной функцией
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип7 Вычисление функций разложением в ряд
- •1. Общие сведения
- •2. Индивидуальное задание
- •Лабораторная работа ип8 Решение нелинейных уравнений в среде Matlab
- •1. Общие сведения
- •2. Поиск корней полиномов
- •3. Решение одного нелинейного уравнения
- •4. Решение систем нелинейных уравнений
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип9 обмен данными с текстовым файлом
- •1. Общие сведения
- •2. Открытие файла
- •3. Запись в текстовый файл
- •3.1. Запись строковых значений
- •3.2. Запись числовых значений
- •4. Чтение из текстового файла
- •4.1. Последовательное чтение строк
- •4.2. Последовательное чтение нескольких символов
- •4.3. Чтение чисел из текстового файла
- •4.4. Альтернативный доступ к текстовому файлу
- •5. Закрытие файла
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •Заключение
- •Список рекомендуемой литературы
- •Программирование в matlab
- •428015 Чебоксары, Московский просп., 15
4. Параметры-функции
Самостоятельный интерес представляет передача функции как параметра, т.е. задание одной функции в качестве входного параметра другой функции. Рассмотрим подробнее механизм такой передачи на примере fplot. Как уже отмечалось, первым входным параметром этой функции является другая функция, описывающая исследуемую . Параметр-функция, график которой строится функцией fplot, может быть задана несколькими способами.
Во-первых, и это лучший вариант, можно использовать указатель на функцию, вычисляющую значения математической функции , график которой строится. Для этого в списке фактических параметров перед именем параметра-функции ставится дескриптор – оператор указателя (ссылки) – @ (собачка).
fplot(@graf,[0 0.2])
Указатель на функцию (function handle) обеспечивает возможность доступа ко всей информации, необходимой для вычисления значений этой функции. В фирменных руководствах утверждается, что использование указателей несколько повышает производительность интерпретатора при многократных обращениях к функции. Это современная нотация, применение которой делает программирование стильным (более объектно-ориентированным), при этом повышаются скорость, точность и надежность численных методов.
Во-вторых, файл-функцию можно передавать по имени файла, в котором она хранится
fplot('graf',[0 0.2])
Имя m-файла с описанием функции , график которой строится, заключается в апострофы. Этот вариант уступает предыдущему, т.к. ограничивает использование в качестве параметров-функций пользовательских подфункций и вложенных функций.
В-третьих, если исследуемая функция задается достаточно простой и короткой формулой, то необязательно составлять файл-функцию. Можно ввести (определить) встраиваемую функцию. Встраиваемая функция определяется при помощи конструктора inline-объекта следующим образом:
имя_функции=inline('формула', список_аргументов);
Здесь список_аргументов – список входных аргументов функции (является необязательным); формула – текстовая строка, задающая выражение для вычисления функции . Например
graf2=inline('exp(-x).*(sin(x)+0.1*sin(100*pi*x))');
Inline-функция может быть использована как и любая другая функция Matlab. Например, обращение
y=graf2(0.5)
вернет значение y = 0,2908. Можно в качестве входного фактического параметра задать вектор и получить в результате вектор соответствующих значений функции
x=0:0.01:0.2;
y=graf2(x);
Для построения графика с помощью fplot в этом варианте необходимо записать
fplot(graf2, [0, 0.2])
Если функция зависит от нескольких параметров, то все они будут являться аргументами введенной inline-функции и должны располагаться в алфавитном порядке
>>graf3=inline('exp(-x).*(A*sin(x)+B*sin(100*pi*x))')
graf3 =
Inline function:
graf3(A,B,x) = exp(-x).*(A*sin(x)+B*sin(100*pi*x))
В эхо-печати хорошо видно, что graf3 воспринимается Matlab как inline-функция с тремя формальными параметрами: А, В и х (Matlab сам разместил параметры по алфавиту!). К сожалению, в таком варианте описания inline-функции она не может быть использована при построении графика с помощью fplot. По правилам использования fplot вторым ее параметром следует указать границы изменения аргумента функции . А в соответствии с описанием graf3 сначала должно задаваться значение для параметра А. Таким образом, правила использования двух функций конфликтуют! Мы не можем внести изменения в текст функции fplot, но можем редактировать свою функцию – graf3. Если требуется изменить порядок следования аргументов, то их необходимо перечислить через запятую в списке, после выражения, определяющего формулу функции
>> graf3=inline('exp(-x).*(A*sin(x)+B*sin(100*pi*x))','x','A','B')
graf3 =
Inline function:
graf3(x,A,B) = exp(-x).*(A*sin(x)+B*sin(100*pi*x))
Теперь первым у graf3 является параметр х. Для построения графика с помощью fplot в этом варианте необходимо записать
fplot(graf3,[0 0.2],[],[],'b-',5,0.5)
х будет изменяться от 0 до 0,2, формальные параметры А и В получат значения, равные 5 и 0,5 соответственно.
Внимание: 1. При вычислении значения встраиваемой функции переменные, расположенные в рабочем пространстве Workspace, не доступны! 2. Все формальные параметры inline-функции должны быть символьными строками, заключенными в апострофы.