
Вычисление нулей функции одной переменной
задачи решения линейных и нелинейных уравнений вида f(x)=0
1.Функция fzero
1)Вычисление нулей функции в окрестности точки
--------fzero('функция',x)----------
fzero('функция',x) возвращает уточненное значение x, при котором достигается нуль функции, представленной строкой,при начальном значении аргумента x. (функция в нуле меняет знак)
Если такая точка не найдена то выдается NaN
(Not-a-Number не числовой характер данных)
x1=fzero('x-5',4)
x2=fzero('x-5',2)
x3=fzero('2^x-8',0)
x4=fzero('2^x-7',0)
x5=fzero('0.25*x+sin(x)-1',5)
>> x1=fzero('x-5',4)
x1 =
5
>> x2=fzero('x-5',2)
x2 =
5
>> x5=fzero('0.25*x+sin(x)-1',5)
x5 =
5.8128
Для более сложных функций: сначала построим график функции
для приближенного определения корней и интервалов.
Пример 1
Найдем нули функции y=x.^3-9*x.^2+26.*x-24;
x=1.5:0.5:4.5;
y=x.^3-9*x.^2+26.*x-24;
Постройте график, проанализируйте его и при необходимости
измените интервал для Х и шаг так, чтобы хорошо были видны корни.
plot(x,y),grid %добавим сетку
теперь уточним значение корней в окрестности точек, где функция y=x.^3-9*x.^2+26.*x-24; пересекает ось ОХ.
x1=fzero('x^3-9*x^2+26*x-24',1.8)
x2=fzero('x^3-9*x^2+26*x-24',3.1)
x3=fzero('x^3-9*x^2+26*x-24',4.3)
%Правильный ответ должен быть 2, 3, 4.
>> x=1.5:0.1:4.5;
>>
>> y=x.^3-9*x.^2+26.*x-24;
>> plot(x,y),grid
уточним значение корней 1.8 3.1 4.3
>> x1=fzero('x^3-9*x^2+26*x-24',1.8)
x2=fzero('x^3-9*x^2+26*x-24',3.1)
x3=fzero('x^3-9*x^2+26*x-24',4.3)
x1 =
2
x2 =
3.0000
x3 =
4
--------------------------------------------
Пример 2
Найдем нули функции
Y=x.^2-5*x+6
Построим график
x=-2:0.2:5;
plot(x,x.^2-5*x+6)
grid on;
x=fzero('x^2-5*x+6',1)
x=fzero('x^2-5*x+6',4)
%Правильный ответ должен быть 2, 3.
x=fzero('x^2-5*x+6',1)
x=fzero('x^2-5*x+6',4)
x =
2
x =
3.0000
2)Вычисление нулей функции на интервале:
%-------------fzero('функция',[x1,x2])------------
Для Примера 1
x1_1=fzero('x^3-9*x^2+26*x-24',[1.8 4.5])%возвращает только один корень т.к. fzero('функция',[x1,x2])работает только с интервалом с одной сменой знака.
x1_1=fzero('x^3-9*x^2+26*x-24',[1.8 2.3]) (x1_1 = 2.0000 )
--------------------------------------------------------------------------------
Пример 3
Найдем нули функции Y=cos(x);
x=-2*pi:0.1:2*pi;
plot(x,cos(x))
x=fzero('cos',[1 3])
или x=fzero('cos(x)',[1 3])
или х= fzero(@cos.[1 3])
нельзя написать интервал 'cos',[-5 5], т.к. на этом интервале много смен знаков - выдает ошибку.
На интервале [1 3] только одна смена знака
корень = 1.57
Пример 4
Найдем нули функции 0.25*x+sin(x)-1;
сначала построим график функции для приближенного определения корней и интервалов
x=0:0.1:10;
plot(x,0.25*x+sin(x)-1)
grid on; %по графику видно, что нули функции нужно искать в интервалах %[0.5 1], [2 3], [5 6]
x1=fzero('0.25*x+sin(x)-1',[0.5 1])
x2=fzero('0.25*x+sin(x)-1',[2 3])
x3=fzero('0.25*x+sin(x)-1',[5 6])
x1 =
0.8905
x2 =
2.8500
x3 =
5.8128