8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 85 86 87 88 89 90 91 ... 365

Вместо начального приближения вторым параметром fzero можно задать интервал, на котором следует найти корень:

» х2 = fzero(myf, [-3 -1])

Zero found in the interval: [-3, -1].

x2 -

-1.85392745969615

На границах указываемого интервала функция должна принимать значения разных знаков, иначе выведется сообщение об ошибке!

В качестве исследуемой функции может выступать и встроенная математическая функция,например

» fzero[sin, [2 4])

Zero found in the interval: [2, 4].

ans =

3.14159265358979

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

»х2 = fzeroltayf, [-3 -1]); х2 =

-1.8539

Во-вторых, воспользовавшись функцией inline:

» fun = inline("sin(x) - х.л2.*соб(х)) fun =

Inline function: tun(x) = sin(x) - х.Л2.*соз{х) » xl = fzero(fun, -5) xl =

-4.7566 » fun(xl) ans =

2.6645e-015

В-третьих, создав анонимную функцию:

>> fun = @(х) sin(x) - х.л2.*соб(х) fun =

@(х) sin(x) - x."2.*cos(x] » xl = fzero(fun, -5)


xl =

-4.7566

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

» [х2, f] = fzero(@myf, -2] х2 =

-1.8539

f =

-2.2204е-01б

Важной особенностью f zero является то, что она вычисляет только те корни, в которых функция меняет знак, а не касается оси абсцисс. Найти ко-

2

рень уравнения х = 0 при помощи fzero не удается:

» fun=inline(1х.Л2); » х = fzero(fun, -0.1)

Exiting fzero: aborting search for an interval containing a sign change

because NaN or Inf function value encountered during search (Function value at 1.372960e+154 is Inf)

Check function or try again with a different starting value. x4 = NaM

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

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

» [xl, fl, flag] = fzero(fun, 0.1);

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


Функция fzero, так же как и большинство вычислительных функций MATLAB. допускает управление многими параметрами заложенных в ней алгоритмов. Кроме того, для контроля выполнения алгоритма и изменения его параметров следует получить информацию о ходе вычислений. Управление алгоритмом и контроль за ним требуют специальных способов вызова функций MATLAB (см. разд. "Управление ходом вычислений"данной главы и приложение 1).

Вычисление всех корней полинома

Полином в MATLAB задается вектором его коэффициентов, например, для определения полинома р = х7 +3.2*5 -5.2л4+ 0.5а"2 +х-3 следует использовать команду

» р = [1 0 3.2 -5.2 0 0.5 1 -3];

Число элементов вектора, т. е. число коэффициентов полинома, всегда на единицу больше его степени, нулевые коэффициенты должны содержаться в векторе.

Функция poiyval предназначена для вычисления значения полинома от некоторого аргумента:

» poiyval (р, 1) ans =

-2.5000

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

Нахождение всех корней полиномов осуществляется при помощи функции roots, в качестве аргумента которой указывается вектор с коэффициентами полинома. Функция roots возвращает вектор корней полинома, в том числе и комплексных:

» г = roots(р) г -

-0.5668 + 2.0698i -0.5668 - 2.06981 1.2149

0.5898 + 0.64351

0.5898 - 0.64351 -0.6305 + 0.55341 -0.6305 - 0.5534i



0 ... 85 86 87 88 89 90 91 ... 365