Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Использование математического пакета MATLAB для исследования функций





 

Решение уравнений

 

Для решения уравнений вида f (x) = 0 (то есть для нахождения нулей функции) предназначена встроенная функция MATLAB fzero, которая находит приближённое значение корня уравнения по заданному начальному приближению.

Самый простой способ обращения к этой функции выглядит так:

 

х=fzero(fun,x0),

 

где х0 – это начальное приближение к корню; fun – функция, корень которой вычисляется; а х – полученное приближение значения корня.

Аргумент х0 может быть задан либо в виде скалярного значения, вблизи которого возможно наличие корня, либо в виде вектора из двух значений [m n] (причем n > m), элементы которого представляют собой интервал, на границах которого функция fun имеет разные знаки (что означает наличие хотя бы одного корня на этом промежутке).

Аргумент fun задается либо как указатель на функцию (например, @sin, @cos или @myfun), либо как формула с одной независимой переменной, заключённая в одинарные кавычки, либо как имя файл-функции (в одинарных кавычках), вычисляющей левую часть уравнения.

Рассмотрим случай задания аргумента fun в виде файл-функции.

В файл-функциях описываются функции, определяемые пользователем. Такие функции используются при решении многих задач, основанных на численных методах. Файл-функции представляют собой разновидность m-файлов. Вообще, в MATLAB существуют два типа m-файлов: файл-программы и файл-функции.

Допустим, требуется найти нули функции f (x) = х 2sin(x) Сначала нужно создать файл функцию. Для этого выполните следующие действия:

1. В главном окне MATLAB выберите команду File Þ New Þ m-file (ФайлÞНовый Þm-файл), чтобы вызвать редактор m-файлов системы MATLAB.

2. Наберите в редакторе m-файлов две строки кода, изображённые на рис. 3.22.

 

 

Рис. 3.22. Окно редактора кода с текстом файл-функции

 

Первая строка – это заголовок функции, где задаётся имя функции (в нашем примере myf) и список входных и выходных параметров (в данном случае имеется один входной (х) и один выходной (f) параметр). Во второй строке задаётся тело функции – выражение, вычисляющее значение функции. Обратите внимание, что при вводе функции использованы операторы поэлементного возведения в степень и поэлементного умножения, чтобы функцию можно было использовать и при работе с массивами. Кроме того, во избежание вывода на экран лишней информации, в конце второй строки кода поставлена точка с запятой.

3. Сохраните файл в текущем рабочем каталоге. Для этого в окне редактора m-файлов выберите команду FileÞSave as (ФайлÞСохранить как). В раскрывшемся диалоговом окне не изменяйте содержимое полей File name (Имя файла) Files of type (Тип файла), в которых автоматически отобразятся требуемые имя и тип файл-функции. Имя m-файла обязательно должно совпадать с именем функции (в данном случае для функции выбрано имя myf).

Перед тем как искать нули функции с помощью функции fzero, построим график заданной функции.

Файл-функции можно применять в качестве аргументов других функций, поэтому для построения графика вместо функции plot воспользуемся функцией fplot, работать с которой намного проще. В первом аргументе функции fplot достаточно задать имя файл-функции, график которой требуется построить, а во втором – вектор-строку из двух элементов, определяющих границы отрезка, на котором нужно построить график.

Чтобы построить график нашей функции на отрезке [0, 10], ввёдем следующие команды (командой grid on укажем программе отобразить сетку на графике):

 

» fplot(‘myf’,[0 10]); grid on.

 

Преимуществом использования функции fplot для построения графиков является то, что она автоматически подбирает шаг аргумента, что позволяет более точно описать поведение функции.

Как следует из графика (рис. 3.23), на отрезке [0, 10] функция имеет четыре корня. Один из корней равен нулю, а три других располагаются около значений х = 3, х = 6 и x = 9.

 

 

Рис. 3.23. График функции f (x) = х 2sin x

 

 

С помощью функции fzero найдём более точные значения этих корней:

 

>> x1=fzero('myf',3)

x1 =

3.1416

>> x2=fzero('myf',6)

x2 =

6.2832

>> x3=fzero('myf',9)

x3 =

9.4248

 

Вместо имени файл-функции в первом аргументе функции fzero можно явно задать исследуемую функцию, введя соответствующее ей выражение в одинарных кавычках. Результат вычислений будет таким же:

 

» х1= fzero(‘x.^2.*sin(x)’,3)

х =

3.1416.

 

Если функцию fzero вызвать с двумя выходными параметрами, то можно получить значение функции в найденной точке:

 

» [x1,f]=fzero(‘myf’,3)

x1=

3.1416

f=

1.2087e-015.

 

Как видно по значению функции, точность вычисления корня с помощью функции fzero довольно высока.

Например, первым аргументом функции fzero может быть и встроенная функция системы MATLAB:

 

» х= fzero(‘sin’,3)

x=

3.1416.

 

Для решения систем нелинейных уравнений вида f (х) = 0 (где х – вектор или матрица неизвестных, а f – функция, значением которой является вектор или матрица) в MATLAB предназначена функция fsolve. Данная функция относится к функциям пакета Toolbox Optimization.

 

Минимизация функций

 

Вычисление локального минимума функции одной переменной на заданном отрезке в MATLAB выполняет функция fminbnd, синтаксис которой аналогичен синтаксису функции fzero.

При её использовании также рекомендуется предварительно построить график исследуемой функции, чтобы можно было точнее определить отрезки поиска минимумов.

Самый простой способ обращения к функции fminbnd имеет вид:

 

х= fminbnd(fun,х1,х2),

 

где значения х1 и х2 задают границы отрезка поиска минимума; fun – функция, локальный минимум которой вычисляется (задаётся как имя файл-функции в одинарных кавычках либо как формула с одной независимой переменной, заключённая в одинарные кавычки); а х – вычисленное значение, при котором достигается минимум.

Найдём локальный минимум для рассмотренной в предыдущем разделе функции f (x) = x 2sin x на отрезке [2, 8]. Для этого введем в командную строку следующие команды:

 

» х= fminbnd(‘myf’,2,8)

x=

5.0870.

 

Таким образом, локальный минимум на отрезке [2, 8] достигается при х = 5,0870.

Чтобы узнать значение исследуемой функции в точке минимума, нужно вызвать функцию fminbnd с двумя выходными аргументами:

 

»[x,f]= fminbnd(’myf’,2,8)

x=

5.0870

f=

–24.0830.

 

Для нахождения локального максимума в MATLAB не предусмотрено специальной функции. Однако найти локальный максимум требуемой функции, очевидно, можно путём вычисления локального минимума для функции, имеющей обратный знак.

 

Интегрирование функций

 

В системе MATLAB реализованы различные методы численного интегрирования функций.

 







ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем...

ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.