Лабораторная работа №4. Решение задач с функциями-параметрами в системе MATLAB 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа №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)

Класс 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.

1.4.
 
 

Пример использования глобальных переменных

Пусть исследуемая нелинейная функция скалярного аргумента известна с точностью до параметра. Например, требуется с помощью функции с найти (относительно 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

Задание

1. Для функций заданий [3] 1.7.N,N+1, [3] 1.8.N+1 с помощью методов класса Function Functions определить характерные точки. Результаты решения сравнить с полученными в лабораторной работе №3.

2. На языке MATLAB разработать подпрограмму решения уравнения методом деления отрезка пополам, вид уравнения задать с помощью манипулятора функции. Используя подпрограмму, решить два уравнения: [3] 1.7.N,N+1. Результаты решения сравнить с п.1 задания.

3. Включить в функцию F(x) задания [3] 1.7.N параметр р. Задавая значение р в командном окне MATLAB и передавая его F(x) как глобальную переменную, найти корень уравнения F(x)=0 для нескольких значений p.



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 731; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.150.163 (0.008 с.)