Раздел: Документация
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
|