#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
double f(double x)
{
return 0.25 * x * x - 2;
}
int main()
{
double a = 2.0;
double b = 4.0;
double eps = 0.0001;
double c;
// Sprawdzenie warunku
if (f(a) * f(b) >= 0)
{
cout << "Brak miejsca zerowego w przedziale!" << endl;
return 0;
}
// Metoda bisekcji
while ((b - a) >= eps)
{
c = (a + b) / 2.0;
if (f(c) == 0.0)
break;
else if (f(a) * f(c) < 0)
b = c;
else
a = c;
}
cout << "Miejsce zerowe: x = " << c << endl;
// Zapis danych do wykresu
ofstream file("dane.txt");
for (double x = 1.5; x <= 4.5; x += 0.05)
file << x << " " << f(x) << endl;
file.close();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxmc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmRvdWJsZSBmKGRvdWJsZSB4KQp7CiAgICByZXR1cm4gMC4yNSAqIHggKiB4IC0gMjsKfQoKaW50IG1haW4oKQp7CiAgICBkb3VibGUgYSA9IDIuMDsKICAgIGRvdWJsZSBiID0gNC4wOwogICAgZG91YmxlIGVwcyA9IDAuMDAwMTsKICAgIGRvdWJsZSBjOwoKICAgIC8vIFNwcmF3ZHplbmllIHdhcnVua3UKICAgIGlmIChmKGEpICogZihiKSA+PSAwKQogICAgewogICAgICAgIGNvdXQgPDwgIkJyYWsgbWllanNjYSB6ZXJvd2VnbyB3IHByemVkemlhbGUhIiA8PCBlbmRsOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIC8vIE1ldG9kYSBiaXNla2NqaQogICAgd2hpbGUgKChiIC0gYSkgPj0gZXBzKQogICAgewogICAgICAgIGMgPSAoYSArIGIpIC8gMi4wOwoKICAgICAgICBpZiAoZihjKSA9PSAwLjApCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGVsc2UgaWYgKGYoYSkgKiBmKGMpIDwgMCkKICAgICAgICAgICAgYiA9IGM7CiAgICAgICAgZWxzZQogICAgICAgICAgICBhID0gYzsKICAgIH0KCiAgICBjb3V0IDw8ICJNaWVqc2NlIHplcm93ZTogeCA9ICIgPDwgYyA8PCBlbmRsOwoKICAgIC8vIFphcGlzIGRhbnljaCBkbyB3eWtyZXN1CiAgICBvZnN0cmVhbSBmaWxlKCJkYW5lLnR4dCIpOwogICAgZm9yIChkb3VibGUgeCA9IDEuNTsgeCA8PSA0LjU7IHggKz0gMC4wNSkKICAgICAgICBmaWxlIDw8IHggPDwgIiAiIDw8IGYoeCkgPDwgZW5kbDsKICAgIGZpbGUuY2xvc2UoKTsKCiAgICByZXR1cm4gMDsKfQo=