И другие программы этой серии
Итерации производятся либо до сходимости метода, либо до появления ошибки, либо до достижения максимального числа итераций. Максимальное число итераций – минимум из n и 20. Функция qmr(…) имеет и ряд других форм записи, аналогичных описанным для функции bicg(…). Приведенный выше пример можно использовать для проверки этой функции.
8.3. Вычисление корней функций
8.3.1. Вычисление корней функций одной переменной
Ряд функций системы MATLAB предназначен для работы с функциями (function functions – по терминологии фирменного описания системы). Под функциями понимаются как встроенные функции, например sin(x) или exp(x), так и функции пользователя, например fs(x), задаваемые как M-файлы-функции.
Может использоваться также класс анонимных функций, задаваемых с помощью символа @, например: >> fe=@exp;
Такие функции вычисляются с помощью функции feval:
>> feval(fe,1.0) ans = 2.7183
Довольно часто возникает задача решения (нахождения корней) нелинейного уравнения вида f(x) = 0 или f1(x) = f2(x). Последнее, однако, можно свести к виду f(x) = f1(x) – f2(x) = 0. Таким образом, данная задача сводится к нахождению значений аргумента x функции f(x) одной переменной, при котором значение функции равно нулю. Соответствующая функция MATLAB, решающая данную задачу, приведена ниже:
• fzero(fun,x) возвращает уточненное значение x, при котором достигается нуль функции fun, представленной строкой, при начальном значении аргумента x. Возвращенное значение близко к точке, где функция меняет знак, или равно NaN, если такая точка не найдена;
• fzero(fun,[x1 x2]) возвращает значение x, при котором fun(x)=0 c заданием интервала поиска с помощью вектора x=[x1 x2], такого что знак fun(x(1)) отличается от знака fun(x(2)). Если это не так, выдает-
ся сообщение об ошибке. Вызов функции fzero с интервалом гарантирует, что fzero возвратит значение, близкое к точке, где fun изменяет знак;
• fzero(fun,x,tol) возвращает результат с заданной погрешностью tol;
• fzero(fun,x,tol,trace) выдает на экран информацию о каждой итерации;
• fzero(fun,x,tol,trace,P1,P2,…) предусматривает дополнительные аргументы, передаваемые в функцию fun(x,P1,P2,…).
Начало в части 1