
- •Министерство образования и науки российской федерации федеральное агентство по образованию
- •Введение в matlab
- •Введение
- •Лабораторная работа №1. Решение простейших задач обработки матриц в системе matlab
- •1. Теоретическая часть
- •1.1. Интегрированная среда matlab
- •1.2. Простейшие примеры работы в matlab
- •1.3. Некоторые действия над матрицами
- •1.3.1. Вычисление сумм и транспонирование
- •1.3.2. Работа с файлами
- •1.3.3. Поэлементная обработка матриц
- •1.4. Оператор двоеточия
- •1.5. Решение задач обработки матриц
- •2. Задание
- •Лабораторная работа №2. Скрипты и функции в matlab
- •1. Теоретическая часть
- •Скрипты
- •1.3. Функции
- •1.4. Глобальные переменные
- •1.5. Отладка м-файлов
- •1.6. Профилирование м-файлов
- •2 . Задание
- •Лабораторная работа №3. Построение графиков в matlab
- •1. Теоретическая часть
- •Создание графиков функций одной переменой
- •1.2. Окна изображения
- •1.3. Расположение нескольких графиков в одном окне
- •1.4. Визуализация функций двух переменных
- •1.5. Сохранение графика
- •2. Задание
- •Лабораторная работа №4. Решение задач с функциями-параметрами в системе matlab
- •Теоретическая часть
- •Назначение подпрограмм-параметров
- •Манипулятор функции (Function Handle)
- •1.3. Класс Function Functions
- •П ример использования глобальных переменных
- •2. Задание
- •Лабораторная работа №5. Разработка простейших оконных приложений в системе matlab
- •1. Теоретическая часть
- •Среда визуального программирования guide
- •Разработка простейшего оконного приложения
- •Приложения, работающие с числовыми данными
- •Создание меню
- •1.5. Пример приложения с выводом графика
- •Задание
- •Приложение. Описание алгоритмического языка matlab
- •П.1. Имена в matlab
- •П.2. Типы данных
- •П.3. Константы
- •П.4. Операции и выражения
- •П.5. Кодирование основных алгоритмических структур
- •Библиографические ссылки
- •Содержание
Лабораторная работа №4. Решение задач с функциями-параметрами в системе matlab
Теоретическая часть
Назначение подпрограмм-параметров
Использование параметра-подпрограммы необходимо, когда некоторый алгоритм, описанный как подпрограмма, применим к множеству алгоритмов, каждый из которых также задается подпрограммой.
Классические примеры таких ситуаций дают численные методы. В подпрограммах численных методов (вычисления определенного интеграла, нахождения экстремумов и нулей функций, вывода графиков, линий уровня, таблиц функций) обрабатываемые функции задаются как параметры. Средства для использования параметров-подпрограмм имеются во всех алгоритмических языках, предназначенных для решения вычислительных задач. В Паскале для работы с подпрограммами-параметрами предназначен процедурный тип, в Фортране – инструкция EXTERNAL, в Си – указатель на функцию. Имеются подобные средства и в языке MATLAB.
Манипулятор функции (Function Handle)
Аналогом подпрограммы-параметра в языке MATLAB является манипулятор функции. Эта конструкция более всего напоминает указатель на функцию в Си. Для обозначения манипулятора перед именем функции ставится символ @. Например, оператор fhandle=@sin создает указатель на функцию sin и присваивает его значение переменной fhandle.
Основное применение манипулятора функций – это использование его в качестве параметра другой функции. Использование манипулятора функции как формального параметра организуется с помощью функции feval.
Пример 1. Функция plot_fhandle выводит график произвольной функции. Она имеет два параметра: fh – манипулятор функции (для которой строится график) и data – массив значений аргумента х точек графика.
function x = plot_fhandle(fh, data)
plot(data, feval(fh, data))
Следующие команды выводят графики функций sin и log:
plot_fhandle(@sin, -pi:0.01:pi)
plot_fhandle(@log, 0.1:0.01:3)
1.3. Класс Function Functions
Функции этого класса работают с нелинейными функциями скалярного аргумента как с подпрограммами-параметрами. предназначен для решения следующих задач:
нахождение нулей функций (решение уравнений);
оптимизация;
вычисление определенных интегралов;
обыкновенные дифференциальные уравнения.
Рассмотрим некоторые функции класса:
fminsearch(манипулятор_функции, начальное_приближение) вычисляет точку локального минимума функции;
fzero(манипулятор_функции, начальное_приближение) вычисляет точку локальный нуль функции;
quad(манипулятор_функции, нижняя_граница, верхняя_граница) вычисляет определенный интеграл по методу Симпсона, quadl вычисляет определенный интеграл по методу Лобатто.
Пример 2. Рассмотрим функцию:
function y = humps(x)
y = 1./((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;
Г
рафик
функции приведен на рис. 4.1. Результаты
ее исследования с помощью выше
перечисленных функций даны на рис. 4.2.
П ример использования глобальных переменных
Пусть исследуемая нелинейная функция скалярного аргумента известна с точностью до параметра. Например, требуется с помощью функции с найти (относительно x) корень уравнения:
x-p cosx=0 (1)
Так как fzero может применяться только к функциям одного аргумента, параметр р необходимо передавать как глобальную переменную. Функция f, описывающая левую часть уравнения, имеет вид:
function y=f(x)
% p-глобальная переменная
global p
y=x-p.*cos(x);
Вычисление корня уравнения (1) для значений р, изменяющихся от 0.3 до 0.6 с шагом 0.1, осуществляется с помощью команд:
global p
i=1;
for p=0.3:0.1:0.6
z(i)=fzero(@f,0.5); i=i+1;
end