И другие программы этой серии
В этом случае нужно в любом простейшем текстовом редакторе (типа встроенного в операционную систему Windows редактора Notepad) набрать две строки следующего кода:
function у = MyFunctionl( х ) у = cos(x) - х
и запомнить их в файле MyFunctionl .m, который нужно разместить в текущем каталоге системы MATLAB (узнать его можно командой cd). После этого можно воспользоваться функцией fzero:
х = fzero(\'MyFunctionl\',pi/2)
0.7391
Если найдено абсолютно точное значение корня, то значение функции в этой точке равно нулю. Таким образом, величина функции в приближенно найденном нуле косвенно характеризует погрешность результата. Чтобы управлять погрешностью, нужно осуществлять вызов функции fzero с тремя аргументами:
fzero ( name, x0, tol )
где параметр tol задает требуемую величину погрешности (ошибки). Повторим предыдущие вычисления, потребовав большей точности расчетов (то есть меньшей погрешности):
format long
х = fzero(\'MyFunctionl\',pi/2, le-8)
x =
0.73908513263090 MyFunctionl(x)
ans = 9.778322596076.805e-010
откуда видно, что действительно достигнута большая точность нахождения нуля функции.
Еще раз подчеркнем, что функция fzero находит нули только вещественно-значных функций одной вещественной переменной. Однако часто бывает необходимо найти комплексные корни вещественнозначных функций, особенно в случае многочленов.
Для этой цели в системе MATLAB существует специальная функция roots, которой в качестве аргумента передается массив коэффициентов многочлена. Например, для многочлена х4-ЗхЗ + Зх2- З х + 2, имеющего два вещественных (1 и 2) и два комплексных корня (i и -i), нужно сначала сформировать массив его коэффициентов:
Coef = [ 1, -3, 3, -3, 2 ] после чего вызвать функцию roots:
r = roots( Coef )
r =
2.00000000000000
0.00000000000000 + 1.00000000000000i
0.00000000000000 - 1.00000000000000i
1.00000000000000
В задаче о нахождении нулей функции сложным моментом является нахождение начального приближения к нулю функции, а также оценка их количества.