#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
// Funkcja
double f(double x) {
return 0.25 * x * x - 2.0;
}
int main() {
// Stałe wartości – brak inputu
double a = 2.0;
double b = 4.0;
double eps = 1e-6;
double c;
// Sprawdzenie warunku bisekcji
if (f(a) * f(b) >= 0) {
cout << "Brak miejsca zerowego w przedziale." << endl;
return 1;
}
// 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 funkcji: x = " << c << endl;
// Dane do wykresu
ofstream dane("dane.txt");
for (double x = 1.5; x <= 4.5; x += 0.01) {
dane << x << " " << f(x) << endl;
}
dane.close();
// Skrypt gnuplot
ofstream gp("wykres.gp");
gp << "set terminal jpeg size 800,600\n";
gp << "set output 'wykres.jpg'\n";
gp << "set title 'f(x) = 1/4 x^2 - 2'\n";
gp << "set xlabel 'x'\n";
gp << "set ylabel 'f(x)'\n";
gp << "set grid\n";
gp << "plot 'dane.txt' with lines title 'f(x)'\n";
gp.close();
system("gnuplot wykres.gp");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPGNtYXRoPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEZ1bmtjamEKZG91YmxlIGYoZG91YmxlIHgpIHsKICAgIHJldHVybiAwLjI1ICogeCAqIHggLSAyLjA7Cn0KCmludCBtYWluKCkgewogICAgLy8gU3RhxYJlIHdhcnRvxZtjaSDigJMgYnJhayBpbnB1dHUKICAgIGRvdWJsZSBhID0gMi4wOwogICAgZG91YmxlIGIgPSA0LjA7CiAgICBkb3VibGUgZXBzID0gMWUtNjsKICAgIGRvdWJsZSBjOwoKICAgIC8vIFNwcmF3ZHplbmllIHdhcnVua3UgYmlzZWtjamkKICAgIGlmIChmKGEpICogZihiKSA+PSAwKSB7CiAgICAgICAgY291dCA8PCAiQnJhayBtaWVqc2NhIHplcm93ZWdvIHcgcHJ6ZWR6aWFsZS4iIDw8IGVuZGw7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgLy8gTWV0b2RhIGJpc2VrY2ppCiAgICB3aGlsZSAoKGIgLSBhKSA+IGVwcykgewogICAgICAgIGMgPSAoYSArIGIpIC8gMi4wOwoKICAgICAgICBpZiAoZihjKSA9PSAwLjApCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGVsc2UgaWYgKGYoYSkgKiBmKGMpIDwgMCkKICAgICAgICAgICAgYiA9IGM7CiAgICAgICAgZWxzZQogICAgICAgICAgICBhID0gYzsKICAgIH0KCiAgICBjb3V0IDw8ICJNaWVqc2NlIHplcm93ZSBmdW5rY2ppOiB4ID0gIiA8PCBjIDw8IGVuZGw7CgogICAgLy8gRGFuZSBkbyB3eWtyZXN1CiAgICBvZnN0cmVhbSBkYW5lKCJkYW5lLnR4dCIpOwogICAgZm9yIChkb3VibGUgeCA9IDEuNTsgeCA8PSA0LjU7IHggKz0gMC4wMSkgewogICAgICAgIGRhbmUgPDwgeCA8PCAiICIgPDwgZih4KSA8PCBlbmRsOwogICAgfQogICAgZGFuZS5jbG9zZSgpOwoKICAgIC8vIFNrcnlwdCBnbnVwbG90CiAgICBvZnN0cmVhbSBncCgid3lrcmVzLmdwIik7CiAgICBncCA8PCAic2V0IHRlcm1pbmFsIGpwZWcgc2l6ZSA4MDAsNjAwXG4iOwogICAgZ3AgPDwgInNldCBvdXRwdXQgJ3d5a3Jlcy5qcGcnXG4iOwogICAgZ3AgPDwgInNldCB0aXRsZSAnZih4KSA9IDEvNCB4XjIgLSAyJ1xuIjsKICAgIGdwIDw8ICJzZXQgeGxhYmVsICd4J1xuIjsKICAgIGdwIDw8ICJzZXQgeWxhYmVsICdmKHgpJ1xuIjsKICAgIGdwIDw8ICJzZXQgZ3JpZFxuIjsKICAgIGdwIDw8ICJwbG90ICdkYW5lLnR4dCcgd2l0aCBsaW5lcyB0aXRsZSAnZih4KSdcbiI7CiAgICBncC5jbG9zZSgpOwoKICAgIHN5c3RlbSgiZ251cGxvdCB3eWtyZXMuZ3AiKTsKCiAgICByZXR1cm4gMDsKfQo=