ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 19.06.2025

Просмотров: 1078

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
|xn – xn–1| <

18

y

B(b, f(b))

f(b)

α

0

x

ξ

β x

f(a)

A(a, f(a))

Рис. 7. Геометрическая интерпретация метода хорд

Уравнение хорды определяем как уравнение прямой, проходящей через точки A(a, f(a)) и B(b, f(b)),

имеющее вид

x − a

=

y − f ( a )

.

b − a

f ( b ) − f ( a )

(19)

Если x = x , то y = 0, тогда из (19) следует

x − a

= −

f ( a )

,

b − a

f ( b ) − f ( a )

откуда находим приближенное значение корня

x = a –

f (a)

(b – a).

(20)

f (b) − f (a)

Для нахождения последующих приближений определяется отрезок, на концах которого функция имеет разные знаки. Если sgn f(a) = sgn f( x ), то полагается a = x , иначе b = x и повторяются вычисления по формуле (20).

Замечание. Вычисление приближенного значения x корня ξ уравнения (1) выполняется с недостатком, т. е. x – ξ < 0, если на отрезке [a; b] имеют места неравенства:

§f ′(x) > 0 и f ′′(x) > 0 – функция f(x) возрастающая, график f(x) вогнутый;

§f ′(x) < 0 и f ′′(x) < 0 – функция f(x) убывающая, график f(x) выпуклый.

Вычисление приближенного значения x корня ξ уравнения (1) выполняется с избытком, т. е. x – ξ > 0, если на отрезке [a; b] имеют место неравенства:

§f ′(x) > 0 и f ′′(x) < 0 – функция f(x) возрастающая, график f(x) выпуклый;

§f ′(x) < 0 и f ′′(x) > 0 –функция f(x) убывающая, график f(x) вогнутый. Следовательно, сужение интервала изоляции корня возможно изменением

только одной из его границ, а именно, если приближенное значение x корня ξ выполнено с недостатком, то принять a = x , иначе b = x .

Оценить погрешность результата можно, используя следующее соотношение:

m ε, M − m

где m = min

|f ′(x)|, M =

max |f ′(x)|.

x [α;

β]

x [α;β]

1.2.6.1Алгоритм метода хорд

1.Установить значения α, β, ε – границы отрезка отделения корня и принятую точность приближения.


19

2.Выполнить проверку применимости метода: если sgn f(a)= sgn f(b), то метод не применим, конец вычислений. Иначе

3.Установить вариант сужения интервала изоляции корня:

если sgn f '(a)= sgn f ''(a), то v = 1 – вариант с недостатком

иначе v = 2 – вариант с избытком.

4.

Вычислить m = min |f (x)|; M =

max |f ′(x)|.

x [α; β]

x [α; β]

5.

Начать цикл уточнения корня.

f(a)

5.1.Вычислить очередное приближение x = a f (b) − f (a) (b – a).

5.2.Вычислить оценку для приближения и выполнить сужение интервала изоляции корня:

если v = 1, то d = x – a; a = x, иначе d = b – x; b = x.

6. Конец цикла, если d <

m

ε .

M − m

7.Вывод результата x.

8.Конец алгоритма.

1.2.7Комбинированный метод

Пусть на отрезке [α; β] отделен корень уравнения (1), функция f(x) дважды дифференцируема, а f ′(x) и f ′′(x) сохраняют постоянные знаки на указанном интервале.

Комбинированный метод соединяет в себе метод хорд и метод Ньютона и позволяет на каждом этапе находить значения по недостатку x1 и значения по из-

бытку x2 точного корня ξ уравнения (1). Тогда сужение отрезка изоляции корня можно выполнять, принимая α = x1, β = x2 . Если:

1) f ′(x) > 0 и f ′′(x) > 0 – функция f(x) возрастающая, график f(x) вогнутый или f ′(x) < 0 и f ′′(x) < 0 – функция f(x) убывающая, график f(x) выпуклый, то x1 вычисляется по методу хорд (20), а x2 – по методу Ньютона (18);

2) f ′(x) > 0 и f ′′(x) < 0 – функция f(x) возрастающая, график f(x) выпуклый или f ′(x) < 0 и f ′′(x) > 0 – функция f(x) убывающая, график f(x) вогнутый, то x1 вычисляется по методу Ньютона (18), а x2 – по методу хорд (20).

Погрешность комбинированного метода на n-ом шаге определяется неравенством

|ξ – x | < βn – αn,

где x = 12 (αn + βn).

1.2.7.1 Алгоритм комбинированного метода

1. Установить значения α, β, ε – границы отрезка отделения корня и принятую точность приближения.


Здесь мы приведем программы, написанные на языке BP Pascal 7.0, ния корней уравнений применительно к следующему примеру.

20

2.Выполнить проверку применимости метода: если sgn f(a)= sgn f(b), то метод не применим, конец вычислений. Иначе

3.Установить вариант расчета:

если sgn f ′(a)= sgn f ′′(a), то v = 1

иначе v = 2.

4.Начать цикл уточнения корня.

4.1.Выполнить сужение интервала изоляции корня: если v = 1, то

a = a –

f (a)

(b – a); b = b –

f (b)

,

f (b) − f (a)

f '(b)

иначе

f (b)

f (a)

b = b –

(b – a); a = a –

.

f (b) − f (a)

f '(a)

5.Конец цикла, если b – a < ε .

6.Вывод результата x = a +2 b .

7.Конец алгоритма.

1.2.8Программы уточнения корней уравнений

уточне-

Пример. Составить программу на языке BP Pascal 7.0 уточнения корня уравнения

5x − 6x − 3 = 0

(7)

с точностью ε = 10–7, если корни уравнения отделены на отрезках [–1; 0] и [1; 2].

1.2.8.1 Метод половинного деления

program Pdihotomii; uses crt;

const e = 0.0000001; function f(x:real):real;

begin f:=exp(x*ln(5))-6*x-3; end; function sgn(z:real):integer;

begin if z=0 then sgn:=0 else if z>0 then sgn:=1 else sgn:=-1; end; var

a,b,sgna,sgnx,x:real; begin

clrscr;

writeln('Корни отделены на отрезках [-1;0], [1;2]. Введите значения a,b');


21

Readln(a,b); sgna:=sgn(f(a)); if sgna*sgn(f(b))<0 then begin

repeat

x:=(a+b)/2; sgnx:=sgn(f(x));

if sgnx=0 then break else if sgna=sgnx then a:=x else b:=x; until (b-a)<e;

writeln('x=',x:12:8); end

else writeln('Метод не применим'); readkey;

end.

1.2.8.2 Метод итераций

program Pitr; uses crt;

const e=0.0000001; {точность приближения} function f(x:real):real; {функция f(x)}

begin f:=exp(x*ln(5))-6*x-3; end;

function f1(x:real):real; {производная функции f(x)} begin f1:=ln(5)*exp(x*ln(5))-6; end;

function sgn(z:real):integer; {функция вычисления знака}

begin if z=0 then sgn:=0 else if z>0 then sgn:=1 else sgn:=-1; end; {основная программа}

var a,b,x0,x1,x,L,dx,M,d,p:real; begin

clrscr;

writeln('Корни отделены на отрезках [-1;0], [1;2]. Введите значения a,b'); Readln(a,b);

{Найти наибольшее значение модуля производной } M:=(f1(a)); x:=a; dx:=0.01;

repeat x:=x+dx; p:=f1(x); if abs (p) > abs (M) then M:=p; until x>b; L := sgn (M)*2/abs(M); {Определить параметр}

{Начать процесс итераций} x0:= a;

repeat x1:=x0 - L*f(x0); d:=abs(x1-x0); x0:=x1; until d<e; writeln('Корень x = ', x1:12:7); readkey;

end.

1.2.8.3 Метод Ньютона

program PNtn; uses crt;

const e=0.0000001; {точность приближения}

22

function f(x:real):real; {функция f(x)} begin f:=exp(x*ln(5))-6*x-3; end;

function f1(x:real):real; {производная функции f(x)} begin f1:=ln(5)*exp(x*ln(5))-6; end;

function f2(x:real):real; {вторая производная функции f(x)} begin f2:=sqr(ln(5))*exp(x*ln(5)); end;

function sgn(z:real):integer; {функция вычисления знака}

begin if z=0 then sgn:=0 else if z>0 then sgn:=1 else sgn:=-1; end; {основная программа}

var a,b,x0,x1,x,L,dx,M2,m1,d,p:real; begin

clrscr;

writeln('Корни отделены на отрезках [-1;0], [1;2]. Введите значения a,b'); Readln(a,b);

{Найти наибольшее значение модуля второй производной} M2:=f2(a); x:=a; dx:=0.01;

repeat x:=x+dx; p:=f2(x); if abs (p) > abs (M2) then M2:=p; until x>b; {Найти наименьшее значение модуля производной} m1:=abs(f1(a)); x:=a; dx:=0.01;

repeat x:=x+dx; p:=abs(f1(x)); if p < m1 then m1:=p; until x>b; {Определить начальное приближение корня}

if sgn (M2) = sgn (f(a)) then x0 := a else x0 := b; {Начать процесс итераций}

repeat x1:=x0 - f(x0)/f1(x0); d:=sqr(x1-x0); x0:=x1; until d<2*m1*e/abs(M2); writeln('Корень x = ', x1:12:7); readkey;

end.

1.2.8.4 Метод хорд

program Phorda; uses crt;

const e = 0.0000001;

function f(x:real):real; {функция, для которой вычисляется нуль}

begin

f:=exp(x*ln(5))-6*x-3; end;

function f1(x:real):real; {производная функции f(x)}

begin

f1:=ln(5)*exp(x*ln(5))-6; end;

function f2(x:real):real; {вторая производная функции f(x)}

begin

f2:=sqr(ln(5))*exp(x*ln(5)); end;

function sgn(z:real):integer; {функция вычисления знака}

begin

if z=0 then sgn:=0 else if z>0 then sgn:=1 else sgn:=-1; end;

var {основная программа}

a, b, dx, fx, x, M, m1, p, v, d : real; begin

clrscr;

writeln('Корни отделены на отрезках [-1;0], [1;2]. Введите значения a,b');