#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
double f(double x) {
return 0.25 * x * x - 2.0;
}
int main() {
double a = 2.0, b = 4.0;
double eps = 0.0001;
double x0;
if (f(a) * f(b) >= 0) {
cout << "Brak miejsca zerowego w podanym przedziale!" << endl;
return 1;
}
// Metoda bisekcji
while ((b - a) >= eps) {
x0 = (a + b) / 2.0;
if (f(x0) == 0.0)
break;
else if (f(a) * f(x0) < 0)
b = x0;
else
a = x0;
}
cout << "Miejsce zerowe: x = " << x0 << endl;
// Zapis danych do wykresu
ofstream data("funkcja.dat");
for (double x = 1.5; x <= 4.5; x += 0.05) {
data << x << " " << f(x) << endl;
}
data.close();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPGNtYXRoPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmRvdWJsZSBmKGRvdWJsZSB4KSB7CiAgICByZXR1cm4gMC4yNSAqIHggKiB4IC0gMi4wOwp9CgppbnQgbWFpbigpIHsKICAgIGRvdWJsZSBhID0gMi4wLCBiID0gNC4wOwogICAgZG91YmxlIGVwcyA9IDAuMDAwMTsKICAgIGRvdWJsZSB4MDsKCiAgICBpZiAoZihhKSAqIGYoYikgPj0gMCkgewogICAgICAgIGNvdXQgPDwgIkJyYWsgbWllanNjYSB6ZXJvd2VnbyB3IHBvZGFueW0gcHJ6ZWR6aWFsZSEiIDw8IGVuZGw7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgLy8gTWV0b2RhIGJpc2VrY2ppCiAgICB3aGlsZSAoKGIgLSBhKSA+PSBlcHMpIHsKICAgICAgICB4MCA9IChhICsgYikgLyAyLjA7CgogICAgICAgIGlmIChmKHgwKSA9PSAwLjApCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGVsc2UgaWYgKGYoYSkgKiBmKHgwKSA8IDApCiAgICAgICAgICAgIGIgPSB4MDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGEgPSB4MDsKICAgIH0KCiAgICBjb3V0IDw8ICJNaWVqc2NlIHplcm93ZTogeCA9ICIgPDwgeDAgPDwgZW5kbDsKCiAgICAvLyBaYXBpcyBkYW55Y2ggZG8gd3lrcmVzdQogICAgb2ZzdHJlYW0gZGF0YSgiZnVua2NqYS5kYXQiKTsKICAgIGZvciAoZG91YmxlIHggPSAxLjU7IHggPD0gNC41OyB4ICs9IDAuMDUpIHsKICAgICAgICBkYXRhIDw8IHggPDwgIiAiIDw8IGYoeCkgPDwgZW5kbDsKICAgIH0KICAgIGRhdGEuY2xvc2UoKTsKCiAgICByZXR1cm4gMDsKfQo=