C++ Bc. 8 cpp: Porovnání verzí
Bez shrnutí editace |
m +kategorie programovani, c++ |
||
| (Nejsou zobrazeny 4 mezilehlé verze od 2 dalších uživatelů.) | |||
| Řádek 2: | Řádek 2: | ||
#include <cmath> | #include <cmath> | ||
#include <iomanip> | #include <iomanip> | ||
double vypocet(double x) | double vypocet(double x) | ||
| Řádek 71: | Řádek 70: | ||
cout << "+-----------------------------------------+\n"; | cout << "+-----------------------------------------+\n"; | ||
} | } | ||
+-----------------------------------------+ | +-----------------------------------------+ | ||
| Řádek 96: | Řádek 94: | ||
| 1.00 1.57079631 1.57079631 -2.22e-16 | | | 1.00 1.57079631 1.57079631 -2.22e-16 | | ||
+-----------------------------------------+ | +-----------------------------------------+ | ||
[ [[C++ Bc. 8|Zpět]] ] | |||
[[Kategorie:Programování]] | |||
[[Kategorie:C++]] | |||
Aktuální verze z 2. 9. 2006, 10:41
#include <iostream>
#include <cmath>
#include <iomanip>
double vypocet(double x)
{
double znam = 1;
if (x < 0)
{
znam = -1;
x = -x;
}
// alternativni vypocet pro x > 0.5
bool alt = false;
if (x > 0.5)
{
alt = true;
x = std::sqrt((1-x)/2);
}
// Tayloruv rozvoj
const double tol = 1e-16;
double i = 1;
double pom1 = 1, pom2 = 6;
double dif = x, soucet = x;
while(dif> tol)
{
dif *= x*x * pom1 / pom2;
soucet += dif;
i += 1;
pom1 += 2;
pom2 = 2*i/pom1*(pom1+2);
}
// alternativni vypocet pro x > 0.5
if (alt)
{
soucet = M_PI/2 - 2*soucet;
}
return znam*soucet;
}
int main()
{
using namespace std;
cout << "+-----------------------------------------+\n";
for(double n=-1; n<=1; n+=0.1)
{
double h1 = asin(n), h2 = vypocet(n), dif = h2-h1;
cout << "|" << ' ';
cout.setf(ios_base::fixed, ios_base::floatfield);
cout << setw(5) << setprecision(2) << n << ' ';
cout << setprecision(8) << setw(11) << h1 << ' ';
cout << setprecision(8) << setw(11) << h2 << ' ';
cout.setf(ios_base::scientific, ios_base::floatfield);
cout << setprecision(2) << setw(9) << dif;
cout << ' ' << "|" << endl;
}
cout << "+-----------------------------------------+\n";
}
+-----------------------------------------+ | -1.00 -1.57079633 -1.57079633 0.00e+00 | | -0.90 -1.11976951 -1.11976951 0.00e+00 | | -0.80 -0.92729522 -0.92729522 1.11e-16 | | -0.70 -0.77539750 -0.77539750 -2.22e-16 | | -0.60 -0.64350111 -0.64350111 0.00e+00 | | -0.50 -0.52359878 -0.52359878 3.33e-16 | | -0.40 -0.41151685 -0.41151685 0.00e+00 | | -0.30 -0.30469265 -0.30469265 5.55e-17 | | -0.20 -0.20135792 -0.20135792 -2.78e-17 | | -0.10 -0.10016742 -0.10016742 0.00e+00 | | -0.00 -0.00000000 -0.00000000 0.00e+00 | | 0.10 0.10016742 0.10016742 0.00e+00 | | 0.20 0.20135792 0.20135792 2.78e-17 | | 0.30 0.30469265 0.30469265 0.00e+00 | | 0.40 0.41151685 0.41151685 5.55e-17 | | 0.50 0.52359878 0.52359878 2.22e-16 | | 0.60 0.64350111 0.64350111 -1.11e-16 | | 0.70 0.77539750 0.77539750 1.11e-16 | | 0.80 0.92729522 0.92729522 -1.11e-16 | | 0.90 1.11976951 1.11976951 0.00e+00 | | 1.00 1.57079631 1.57079631 -2.22e-16 | +-----------------------------------------+
[ Zpět ]