Program BisectionMethodWithTabulation;
Function f(x: Real): Real;
Begin
f := x * x - 4; // Приклад функції x^2 - 4 = 0
End;
Procedure TabulateAndFindInterval(Var a, b: Real);
Var
x, step: Real;
found: Boolean;
Begin
step := 0.1; // Крок табулювання
x := -10; // Початок інтервалу для пошуку
found := False;
WriteLn('Табулювання функції:');
While x <= 10 Do
Begin
WriteLn('f(', x:0:2, ') = ', f(x):0:4);
// Якщо знайдено інтервал де f(a) * f(b) < 0
If (f(x) * f(x + step) < 0) Then
Begin
a := x;
b := x + step;
found := True;
Break;
End;
x := x + step;
End;
If not found Then
WriteLn('Не знайдено інтервалу, де функція змінює знак.');
End;
Procedure Bisection(a, b, Eps: Real);
Var
c: Real;
iterations: Integer;
Begin
iterations := 0;
While (b - a) > Eps Do
Begin
c := (a + b) / 2;
If f(a) * f(c) < 0 Then
b := c
Else
a := c;
iterations := iterations + 1;
End;
WriteLn('Корінь рівняння: ', c:0:6);
WriteLn('Кількість ітерацій: ', iterations);
End;
Var
a, b, Eps: Real;
Begin
Eps := 0.001;
// Автоматичне табулювання та пошук інтервалу
TabulateAndFindInterval(a, b);
If (a <> b) And (f(a) * f(b) > 0) Then
WriteLn('Немає кореня на цьому інтервалі')
Else If (a <> b) Then
Bisection(a, b, Eps);
End.
UHJvZ3JhbSBCaXNlY3Rpb25NZXRob2RXaXRoVGFidWxhdGlvbjsKCkZ1bmN0aW9uIGYoeDogUmVhbCk6IFJlYWw7CkJlZ2luCiAgICBmIDo9IHggKiB4IC0gNDsgIC8vINCf0YDQuNC60LvQsNC0INGE0YPQvdC60YbRltGXIHheMiAtIDQgPSAwCkVuZDsKClByb2NlZHVyZSBUYWJ1bGF0ZUFuZEZpbmRJbnRlcnZhbChWYXIgYSwgYjogUmVhbCk7ClZhcgogICAgeCwgc3RlcDogUmVhbDsKICAgIGZvdW5kOiBCb29sZWFuOwpCZWdpbgogICAgc3RlcCA6PSAwLjE7ICAvLyDQmtGA0L7QuiDRgtCw0LHRg9C70Y7QstCw0L3QvdGPCiAgICB4IDo9IC0xMDsgICAgIC8vINCf0L7Rh9Cw0YLQvtC6INGW0L3RgtC10YDQstCw0LvRgyDQtNC70Y8g0L/QvtGI0YPQutGDCiAgICBmb3VuZCA6PSBGYWxzZTsKCiAgICBXcml0ZUxuKCfQotCw0LHRg9C70Y7QstCw0L3QvdGPINGE0YPQvdC60YbRltGXOicpOwogICAgV2hpbGUgeCA8PSAxMCBEbwogICAgQmVnaW4KICAgICAgICBXcml0ZUxuKCdmKCcsIHg6MDoyLCAnKSA9ICcsIGYoeCk6MDo0KTsKICAgICAgICAKICAgICAgICAvLyDQr9C60YnQviDQt9C90LDQudC00LXQvdC+INGW0L3RgtC10YDQstCw0Lsg0LTQtSBmKGEpICogZihiKSA8IDAKICAgICAgICBJZiAoZih4KSAqIGYoeCArIHN0ZXApIDwgMCkgVGhlbgogICAgICAgIEJlZ2luCiAgICAgICAgICAgIGEgOj0geDsKICAgICAgICAgICAgYiA6PSB4ICsgc3RlcDsKICAgICAgICAgICAgZm91bmQgOj0gVHJ1ZTsKICAgICAgICAgICAgQnJlYWs7CiAgICAgICAgRW5kOwogICAgICAgIHggOj0geCArIHN0ZXA7CiAgICBFbmQ7CgogICAgSWYgbm90IGZvdW5kIFRoZW4KICAgICAgICBXcml0ZUxuKCfQndC1INC30L3QsNC50LTQtdC90L4g0ZbQvdGC0LXRgNCy0LDQu9GDLCDQtNC1INGE0YPQvdC60YbRltGPINC30LzRltC90Y7RlCDQt9C90LDQui4nKTsKRW5kOwoKUHJvY2VkdXJlIEJpc2VjdGlvbihhLCBiLCBFcHM6IFJlYWwpOwpWYXIKICAgIGM6IFJlYWw7CiAgICBpdGVyYXRpb25zOiBJbnRlZ2VyOwpCZWdpbgogICAgaXRlcmF0aW9ucyA6PSAwOwogICAgV2hpbGUgKGIgLSBhKSA+IEVwcyBEbwogICAgQmVnaW4KICAgICAgICBjIDo9IChhICsgYikgLyAyOwogICAgICAgIElmIGYoYSkgKiBmKGMpIDwgMCBUaGVuCiAgICAgICAgICAgIGIgOj0gYwogICAgICAgIEVsc2UKICAgICAgICAgICAgYSA6PSBjOwogICAgICAgIGl0ZXJhdGlvbnMgOj0gaXRlcmF0aW9ucyArIDE7CiAgICBFbmQ7CiAgICBXcml0ZUxuKCfQmtC+0YDRltC90Ywg0YDRltCy0L3Rj9C90L3RjzogJywgYzowOjYpOwogICAgV3JpdGVMbign0JrRltC70YzQutGW0YHRgtGMINGW0YLQtdGA0LDRhtGW0Lk6ICcsIGl0ZXJhdGlvbnMpOwpFbmQ7CgpWYXIKICAgIGEsIGIsIEVwczogUmVhbDsKQmVnaW4KICAgIEVwcyA6PSAwLjAwMTsKCiAgICAvLyDQkNCy0YLQvtC80LDRgtC40YfQvdC1INGC0LDQsdGD0LvRjtCy0LDQvdC90Y8g0YLQsCDQv9C+0YjRg9C6INGW0L3RgtC10YDQstCw0LvRgwogICAgVGFidWxhdGVBbmRGaW5kSW50ZXJ2YWwoYSwgYik7CgogICAgSWYgKGEgPD4gYikgQW5kIChmKGEpICogZihiKSA+IDApIFRoZW4KICAgICAgICBXcml0ZUxuKCfQndC10LzQsNGUINC60L7RgNC10L3RjyDQvdCwINGG0YzQvtC80YMg0ZbQvdGC0LXRgNCy0LDQu9GWJykKICAgIEVsc2UgSWYgKGEgPD4gYikgVGhlbgogICAgICAgIEJpc2VjdGlvbihhLCBiLCBFcHMpOwpFbmQu