Уточнение корня методом деления отрезка пополам


Уточнить корень – значит найти его приближенное значение с заданной погрешностью e.

Самый простой метод, пригодный для любых непрерывных функций – метод деления отрезка пополам.

Предположим, что отрезок [a, b], на котором отделен корень уравнения, уже найден.

Пусть, например, f(a)>0, f(b)<0. Вычислим точку . Если вместо корня взять точку x, то погрешность, которую мы при этом допустим, не превысит величины . Если эта погрешность не превышает некоторую заданную погрешность e, с которой нужно уточнить корень уравнения, то вычисления прекращаем и можно записать: . В противном случае определяем новый отрезок [a, b], на котором отделен корень нашего уравнения. Для этого нам нужно знать знак функции в точке х. В нашем примере f(x)>0. Новый отрезок – отрезок [x, b], так как на концах этого отрезка функция имеет разные знаки. Переобозначим один из концов отрезка – в нашем случае положим a=x – и повторим процедуру для нового отрезка [a, b].

Метод касательных

 

Дополнительные предположения: f(x) дважды непрерывно дифференцируема на отрезке [a, b], на котором отделен корень; сохраняют постоянные знаки на отрезке [a, b]. Это – условия сходимости метода касательных. То есть выполнение этих условий гарантирует нам, что за определенное число шагов (вычислений по формуле (1.6)) мы уточним корень с любой заданной погрешностью ε. Вот алгоритм метода касательных.

За х0 выбирается точка, в которой выполняется условие:

(1.5)

Это либо точка a, либо точка b. Далее вычисляются точки

(1.6)

до тех пор, пока не выполнится условие

(1.7)

Тогда - приближенное значение корня с погрешностью e.

Проверим условия сходимости для нашего уравнения.

Предположим, мы хотим уточнить корень уравнения, отделенный на отрезке [2, 3]. Минимальное значение первой производной достигается в точке х=2 и оно положительно. Вторая производная положительна при любом х>0. В видеолекции https://youtu.be/U2787R9nlUY рассмотрен другой способ проверки условий сходимости. Там же показано, как можно выполнить 1 задание (в нашем курсе задания на эту тему – задания 3 и 4).

Далее. Выбираем точку х0. Это либо точка a (2 в нашем случае), либо точка b (3). Выясним, какая именно. Проверим, в какой из точек выполняется условие:

В точке a=2 f(a)<0, в точке b=3 f(b)>0:

Поэтому х0=3.

Предположим, что погрешность, с которой мы хотим уточнить корень, равна ε=0.1.

поэтому х1 можно считать корнем уравнения с заданной погрешностью: Если бы это оказалось не так, то нужно было найти х2, вычислить разность |x2-x1| и если она меньше ε, то х2 – корень уравнения с заданной погрешностью и т.д.

Для решения уравнений, в том числе трансцендентных, в Scilab применяют функцию fsolve(x0,f), где x0 - начальное приближение, f - функция, описывающая левую часть уравнения f(x)=0.

Покажем, как можно найти все три корня нашего уравнения.

clc

function y=f(x), y=x^3-7*x-5; endfunction

[a,b]=fsolve([-2,-1,3],f);disp([a;b])

-2.1660127 -0.7828157 2.9488284

-1.776D-14 1.510D-14 3.553D-14

Здесь в качестве начальных приближений выбраны точки -2, -1 и 3.

Если нам нужен только один корень уравнения, например, ближайший к точке 3, то изменяем оператор fsolve: [a,b]=fsolve(3,f). Запустив измененную программу на выполнение, получим:

2.9488284

3.553D-15

Первое число – это корень уравнения, второе – значение левой части уравнения в этой точке (3.553·10-15).

Решить алгебраическое уравнение в Scilab можно и с помощью функции roots.

В нашем примере: х3-7х-5=0. Задаем вектор коэффициентов полинома, идущих в порядке уменьшения степеней: сначала коэффициент перед х3, потом перед х2 и т.д. Затем используем функцию roots:

--> a=[1 0 -7 -5];x=roots(a)

x =

2.9488284

-2.1660127

-0.7828157

Систему нелинейных уравнений также можно решить, используя функцию fsolve.

clc

function [y]=ff(x)

y(1)=x(1)^2+x(2)^2-1;

y(2)=x(1)^3-x(2)-2*x(1)*x(2);

endfunction

[t,value]=fsolve([-.5;-.5],ff);

disp([t,value])

-0.4492543 0.

-0.8934039 -8.771D-15

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

Вот пример решения уравнения рассмотренными методами.

Пример.Решить уравнениеex-x-7=0

Решение.

1 этап. Отделяем корень. Для этого строим график функции y=ex-x-7

clc

clf()

function y=f(x)

y=exp(x)-x-7

endfunction

x=1:.01:3;

plot(x,f(x));xgrid()

Из графика видно, что корень отделен на отрезке [2, 3].

2 этап. Уточнение корня с погрешностью ε=0.05.

Метод деления отрезка пополам

Обозначим f(x)=ех-х-7.

f(2)=e2-2-7= -1.6109439; f(3)= e3-3-7= 10.085537

x=(2+3)/2=2.5 Если взять точку х в качестве корня, то погрешность не превысит (3-2)/2=0.5.

f(2.5)=e2.5-2.5-7= 2.682494. Корень находится на отрезке [2, 2.5] так как на концах отрезка функция имеет разные знаки.

x=(2+2.5)/2=2.25 ξ=2.25±0.25 f(2.25)=e2.25-2.25-7= 0.2377358 Корень находится на отрезке [2, 2.25] так как на концах отрезка функция имеет разные знаки. x=(2+2.25)/2=2.125 ξ=2.125±0.125 и т.д., пока погрешность не станет меньше или равна заданной.

Метод касательных

Проверим условия сходимости.

x0=3 т.к. x1= x0-f(x0)/f(x0)=3-(e3-3-7)/(e3-1)= 2.47.

|x1-x0|=0.53>eps=0.1 x2= x1-f(x1)/f(x1)=2.47-(e2.47-2.47-7)/(e2.47-1)=2.25

|x2-x1|=0.22>eps=0.05 x3= x2-f(x2)/f(x2)=2.25-(e2.25-2.25-7)/(e2.25-1)=2.22

|x3-x2|=0.03<eps=0.05

Ответ: корень уравнения ξ=2.22±0.05



Дата добавления: 2022-02-05; просмотров: 295;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.017 сек.