Матричная лаборатория MatLab

         

Для функции fzero ноль рассматривается



Пример 1

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 имеет почти те же параметры (дополнительный параметр — задание якобиана) и почти ту же запись, что и функция lsqnonneg, подробно рассмотренная ранее.

Содержание раздела