Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лабораторная работа №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 с.) |