Программа
program Return;
{ Поиск корня уравнения
методом поиска с возвратом }
Uses Crt;
Const
DBegin=1;DEnd=1.1;{ Начальнное и конечное значения параметров }
DStep=0.01; { Шаг изменения параметра }
A0=0.1;B0=1.2; { Границы интервала локализации корня }
Var
xSolution,d:real; { Корень, параметр }
i:integer; { Счетчик }
Function F(x:real):real; { Вычисление функции }
Begin
F:=cos(x*d)/sin(x*d)-Sqr(x)
End;
Function FindSolution(a,b:real):real;
{ Поиск корня уравнения F(x)=0 на [a,b] }
const BreakConst=-10; { Постоянная "измельчения" и инверсии шага }
Eps=0; { Точность }
var FindStep:real; { Шаг поиска корня }
x,xPred:real; { Текущее и предыдущее значения }
Begin
FindStep:=(a-b)/BreakConst; { Вычисление начального шага поиска корня }
x:=a+FindStep; { Определение начального значения аргумента }
xPred:=a; { Определение начального значения предыдущего аргумента }
while abs(x-xPred)>Eps do { Локализация корня до заданной точности }
begin
while F(x)*F(xPred)>0 do { Шаг вперед до смены знака функции }
begin
xPred:=x; { Сохранение предыдущего аргумента }
x:=x+FindStep; { Определение нового аргумента }
end;
FindStep:=FindStep/BreakConst; { Смена направления и уменьшение шага }
xPred:=x; { Сохранение предыдущего аргумента }
x:=x+FindStep { Определение нового аргумента }
end;
FindSolution:=x+(xPred-x)/2 { Определение значения функции }
End;
BEGIN
ClrScr; { Очистка зкрана }
d:=DBegin; { Определение начального значения параметра }
for i:=0 to Trunc((DEnd-DBegin)/DStep) do { Перебор всех параметров }
Begin
d:=DBegin+i*DStep; { Расчет текущего параметра }
xSolution:=FindSolution(A0,B0); { Нахождение корня }
writeln('d=',d:4:2,' x=',xSolution,' F(x)=',F(xSolution));
{ Вывод параметра, корня и проверочного значения функции }
End
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию