При задании пустой матрицы для
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 имеет
Содержание Назад Вперед