Добавить в корзинуПозвонить
Найти в Дзене
Piter Melnikov

Исследование функций в системе Matlab

Технология исследования функций в табличном процессоре рассматривалась в статье. При исследовании функции представляют интерес:
- предел функции;
- корни функции. Вычисление предела функции Напомним, что функция f(x) имеет предел в точке а тогда и только тогда, когда в этой точке существуют левый и правый пределы, причем они равны. В математике для нахождения пределов функций применяются специальные приемы, в частности такой, как разложением числителя и знаменателя на сомножители и некоторые другие.
Рассмотрим, как можно вычислить предел функции в Matlab. В сущности, технология вычисления предела функции в Matlab мало отличается от технологии вычисления в табличном процессоре.
Для выполнения вычисления нужно определить переменную, значение которой достаточно близко к предельному значению и вычислить значение функции при этом значении переменной. Пример. Требуется вычислить предел функции Решение задачи приведено ниже в таблице и на рис. 1.. Вычисление корней функции
Оглавление

Технология исследования функций в табличном процессоре рассматривалась в статье.

При исследовании функции представляют интерес:
- предел функции;
- корни функции.

Вычисление предела функции

Напомним, что функция f(x) имеет предел в точке а тогда и только тогда, когда в этой точке существуют левый и правый пределы, причем они равны. В математике для нахождения пределов функций применяются специальные приемы, в частности такой, как разложением числителя и знаменателя на сомножители и некоторые другие.
Рассмотрим, как можно вычислить предел функции в Matlab.

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

Пример. Требуется вычислить предел функции

-2

Решение задачи приведено ниже в таблице и на рис. 1..

-3
РИс. 1.
РИс. 1.

Вычисление корней функции

Напомним, что корнями функции Y=f(x) называют такие значения х, при которых функция принимает значение ноль.

При решении практических задач величина x являются каким-либо ресурсом, величина которого ограничена и лежит в области допустимого диапазона значений. Поэтому при решении задачи интерес представляют только те корни, которые находятся в области возможных значений x.

В библиотеке Matlab есть функция fzero, вычисляющая значения аргумента, при которых функция имеет значение ноль.
Для функции fzero ноль рассматривается как точка, где график функции
f(x) пересекает ось х, а не касается ее. В зависимости от формы задания функции fzero реализуются хорошо известные численные методы поиска нуля функции: деления отрезка пополам, секущей и обратной квадратичной интерполяции. Функция fzero имеет несколько синтаксических конструкций:
-
fzero(@fun,x) — возвращает уточненное значение х, при котором достигается нуль функции fun, представленной в символьном виде, при начальном значении аргумента х. Возвращенное значение близко к точке, где функция меняет знак, или равно NaN, если такая точка не найдена;

- fzero(@fun,[xl x2]) — возвращает значение х, при котором fun(x)=0 с заданием интервала поиска с помощью вектора x=[xl х2], такого, что знак fun(x(D)) отличается от знака fun(x(2)). Если это не так, выдается сообщение об ошибке. Вызов функции fzero с интервалом гарантирует, что fzero возвратит значение, близкое к точке, где fun изменяет знак;

- fzero(@fun,x.tol) — возвращает результат с заданной погрешностью tol;

- fzero(@fun,x.tol .trace) — выдает на экран информацию о каждой итерации;

- fzero(@fun,х.tol .trace,Р1.Р2,...) — предусматривает дополнительные аргументы, передаваемые в функцию fun(x.Pl,P2,...). При задании пустой матрицы для tol или trace используются значения по умолчанию.
Пример:

fzero(fun,x,[ ],[ ],Р1).

Приведенный ниже пример показывает приближенное вычисление р/2 из решения уравнения cos(x)=0 с представлением косинуса дескриптором:

>> х= fzero(@cos,[1 3])

x = 1.5708

В более сложных случаях, когда заранее невозможно определить области существования корней, рекомендуется строить график функции f(x) для приближенного определения корней и интервалов, в пределах которых они находятся.

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

Пример. Требуется найти все корни функции

-5

Решение.
1. Построим график функции. Для построения графика запишем инструкцию

<< fplot(‘x^3-0.01*x^2-0.7044*x +0.139104’,[-1 1]); grid on

График функции приведен на рис. 2.

Рис. 2
Рис. 2

На графике видно, что функция трижды меняет знак, следовательно, она имеет три корня. Знаки функции меняются в диапазонах x
(-1:-0,8), (-0,2: 0,4 и (0,6:0,8).

2. Создадим функцию, вычисляющую выражение
Y=X^3-0,01*X^2-0,7044*X+0,139104 и сохраним ее в форме m-файла. Для этого выполним операции:
- выполним команду меню
File/New/M-file главного окна Matlab, откроется окно редактирования и отладки m- файлов (рис. 3);
- в рабочем окне введем код программы, приведенный на рис. 3;
- выполним команду меню
File/Save As и сохраним в рабочем каталоге файл, присвоив ему имя fun2.m;

Рис. 3.
Рис. 3.

3. Запишем в командном окне код инструкции, применяя функцию fzero и созданную функцию fun2, и вычислим точные значения корней заданной функции. Инструкции и результат вычислений приведены в таблице ниже и на (рис. 4).

-8
Рис. 4.
Рис. 4.

Особенностью функции fzero является то, что сразу найти все корни функции она не в состоянии.

Для вычисления сразу всех корней можно использовать функцию fsolve из пакета Optimization Toolbox, которая решает систему нелинейных уравнений вида f(x)=0 методом наименьших квадратов и ищет не только точки пересечения, но и точки касания. Ниже приведен пример решения той же задачи с использованием функции fsolve.

-10

Для вычисления сразу всех корней можно также использовать функцию solve из пакета Symbolic Math Toolbox. Эта функция позволяет задавать выражение исследуемой функции непосредственно в параметре в виде строки текста, заключенного в кавычки, и вычисляет все возможные корни. Например, решение ранее рассмотренной задачи может иметь следующий вид (рис.5):

-11
Рис. 5.
Рис. 5.