В алгебраическом методе отделения корней с некоторым шагом h просматривают достаточно большую область существования корня уравнений.
x
i +1 =x
i + h
Из математики известно, что непрерывная функция на небольшом отрезке содержит корень уравнения, если на концах отрезках функция f(x) имеет разные знаки.
Уточнение корня по методу половинного деления.
Пусть решается уравнение f(x)=0 и функция f(x) непрерывна на отрезке [a,b] =[x1 ,x2 ].
Отрезок [a,b] содержит корень, т.е. f(a)*f(b)<0.
Делим отрезок [a,b] пополам, т.е. выбираем начальное уравнение корня x=, если f(x)=0, то х является корнем уравнения, если f(x) не равно нулю, то выбираем тот из отрезков [a,x] или [x,b], на концах которого функция f(x) имеет противоположные знаки. Выбранный отрезок снова делим пополам и проводим те же рассуждения. Процесс деления отрезков пополам продолжается до тех пор, пока длина отрезка на концах которого функция имеет разные знаки не станет < e
[b-a]< e =10-5 .
Схема реализации алгоритма имеет вид: [a,b]=[x1 ,x2 ] e=10-5
Уточнение корня по методу Хорд
По методу Хорд выбирается произвольное начальное значение корня из отрезка [a,b] на котором корень существует xÎ[a,b]=[x1 ,x2 ].
Затем по методу Хорд корень уточняется. Найденное новое значение корня подставляется в правую часть уравнения и т.д. пока разность между двумя приближениями не станет меньше < e= 10-5 . Расчётная формула метода Хорд имеет вид:
xn +1 = xn - ( b - x ).
Графический метод Хорд имеет вид:
Отделение корней
program otd;
label 10;
var
a,b,x1,x2,y1,y2,h,d:real;
function f(x:real):real;
begin
f:=2.2*x-exp(x*ln(2));
end;
begin
writeln(‘введите a,b,h’);
readln(a,b,h);
x1:=a;x2:=x1+h;
y1:=f(x1);
10: y2:=f(x2);
if y1*y2<0 then writeln(x1:8:5,' ',x2:8:5);
x1:=x2;x2:=x1+h;
y1:=y2;
if x2<=b then goto 10;
readln;
end.
ввод:
0.1,10,1e-4
ответ:
х1=0.10000
х2=1.10000
Уточнение корней
Метод половинного деления
program del;
label 2, 10;
var a,b,e,x,y,z:real;
function f(x:real):real;
begin
f:= 2.2*x-exp(x*ln(2));
end;
begin
writeln(???????? a,b,e?);
readln(a,b,e);
y:=f(a);
10:x:=(a+b)/2;
z:=f(x);
if z=0 then goto 2;
К-во Просмотров: 401
Бесплатно скачать Курсовая работа: Современное состояние вычислительной техники