Иллюстрированный самоучитель по Matlab



Вычисление нулей функции одной переменной - часть 2


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).

Для функции fzero ноль рассматривается как точка, где график функции fun

пересекает

ось

х,

а не

касается

ее. В зависимости от формы задания функции fzero реализуются следующие хорошо известные численные методы поиска нуля функции: деления отрезка пополам, секущей и обратной квадратичной интерполяции. Приведенный ниже пример показывает приближенное вычисление р/2 из решения уравнения cos(x)=0 с представлением косинуса дескриптором:

» х= fzero(@cos.[1 3]) 

x =

1.5708

В более сложных случаях настоятельно рекомендуется строить график функции

f(x)

для приближенного определения корней и интервалов, в пределах которых они находятся. Ниже дан пример такого рода (следующий листинг представляет собой содержимое m-файла fun1.m):

%Функция, корни которой ищутся 

function f=funl(x) 

f=0.25*x+sin(x)-1;

» х=0:0.1:10;

» plot(x,funl(x));grid on;

Из рисунка нетрудно заметить, что значения корней заключены в интервалах [0.5 1], [2 3] и [5 6]. Найдем их, используя функцию fzero:

» xl=fzero(@funl.[0.5 1]) 

xl =

0.8905

» x2=fzero(@funl.[2 3]) 

x2 =

2.8500

» x3=fzero(@funl,[5.6]) 

x3 =

5.8128

» x3=fzero(@funl,5,0.001)

 x3 =

5.8111

Обратите внимание на то, что корень хЗ найден двумя способами и что его значения в третьем знаке после десятичной точки отличаются в пределах заданной погрешности tol =0.001. К сожалению, сразу найти все корни функция fzero не в состоянии. Решим эту же систему при помощи функции f sol ve из пакета Optimization Toolbox, которая решает систему нелинейных уравнений вида f(x)=0 методом наименьших квадратов, ищет не только точки пересечения, но и точки касания, f solve имеет




Содержание  Назад  Вперед