C++ Bc. 21 cpp
#include <iostream> #include <cmath> double odmocnina(double); void tabulka(std::ostream&, double (*f)(double)); int main() { tabulka(std::cout, &odmocnina); double arg = 0, maxdif = 0; for (double x=0; x<=1; x+=0.01) { double dif = std::sqrt(x) - odmocnina(x); if (std::abs(dif) > std::abs(maxdif)) { maxdif = dif; arg = x; } } using namespace std; cout.setf(ios_base::scientific, ios_base::floatfield); cout.precision(2); cout << "\nMaximalni chyba na intervalu <0,1) je " << maxdif; if (maxdif) { cout.setf(ios_base::fixed, ios_base::floatfield); cout << " pro argument " << arg; } cout << "\n"; } double odmocnina(double x) { if (x == 0) return 0; const double tolerance = 1e-7; double g, f = x; do { g = f; f = 0.5*(f + x/f); } while (std::abs(g - f)/f > tolerance); return f; } void tabulka(std::ostream& out, double (*f)(double)) { using namespace std; const int parg = 1; // presnost zobrazeni argumentu const int pfun = 4; // presnost zobrazeni funkcnich hodnot out << "+-----+------------------------------------+\n"; out << "| x | 0 2 4 6 8 |\n"; out << "+-----+------------------------------------+\n"; out.setf(ios_base::fixed, ios_base::floatfield); for (double x=0; x<0.99; x+= 0.1) { out.precision(parg); out << "| " << x << " | "; out.precision(pfun); for (double dx=0; dx<0.1; dx+= 0.02) { out << f(x+dx) << " "; } out << "|\n"; } out << "+-----+------------------------------------+\n"; }
[ Zpět ]