Zdravim, mozete mi vysvetlit ako pracuje tento program?
#include <iostream>
#include <cmath>
int main()
{
double N = 3;
double x = N/2;
while (std::abs(x*x - N)/N > 1e-6)
x = 0.5 * ( x + N/x);
std::cout << x << " " << x*x - N << std::endl;
}
Akosi tomu nerozumiem, zacinam sa ucit v C++, tak sa nesmejte:) Ked si tam dosadim tie hodnoty premennych na papieri, tak ta funkcia za while mi vychadza -0,25, je tam abs, cize to bude +0,25 a s touto hodnotou sa potom co robi??? Potom ten vyraz x=atd. mi vychadza na papieri 1,75. Nechapem na co je tam hodnota 1e-6, preco sa porovnava s tymi 0,25 a ako sa dany program dopracuje k vysledku tej odmocniny cisla 3. Dakujem za kazdu radu.
Odmocnina v C++?
- kovino
- Začátečník

- Registrován: 03. led 2004
- Bydliště: Slovakia
Odmocnina v C++?
PC : zakladna doska: MSI k7n2 delta-ILSR, cpu: AMD BARTON 2500+, ram: PQI 2x256MB, pevny disk: MAXTOR 6Y80M0 80GB SATA, WD 6,4GB ATA, graf. karta: GAINWARD gf4 ti4600 128MB, monitor: HANSOL 730D, dvd mechaniky: TEAC 516D, SONY DRU-710A
LAPTOP: ASUS A6VA-Q044, centrino 1.73 GHz, 512 MB DDRAMII, 80 GB disk 5400 rpm, ATI X700 128 MB, 15.4 displej, BT, INFRA, wifi, kamera, mikrofon...
LAPTOP: ASUS A6VA-Q044, centrino 1.73 GHz, 512 MB DDRAMII, 80 GB disk 5400 rpm, ATI X700 128 MB, 15.4 displej, BT, INFRA, wifi, kamera, mikrofon...
- next_ghost
- Začátečník

-
- Registrován: 12. kvě 2005
- Bydliště: Chomutov
- Kontaktovat uživatele:
Rozeber si to postupně.
x*x = x^2, což by se mělo rovnat N, tzn. 3
N je odmocňovaný číslo.
Když to od sebe odečteš, mělo by vyjít 0, ale čísla s plovoucí řádovou čárkou se nedaj porovnávat jako absolutní hodnoty, takže se počítá jenom do odchylky 0.0001% ( = 10^-6 = 1e-6).
Samotnej výpočet je o řádek níž a vychází z Newtonova iteračního vzorce pro odmocninu, kterej řiká, že aritmetickej průměr dvou čísel je blíž odmocnině jejich součinu než obě čísla. Až se ukončí cyklus, v x je odmocnina N.
x*x = x^2, což by se mělo rovnat N, tzn. 3
N je odmocňovaný číslo.
Když to od sebe odečteš, mělo by vyjít 0, ale čísla s plovoucí řádovou čárkou se nedaj porovnávat jako absolutní hodnoty, takže se počítá jenom do odchylky 0.0001% ( = 10^-6 = 1e-6).
Samotnej výpočet je o řádek níž a vychází z Newtonova iteračního vzorce pro odmocninu, kterej řiká, že aritmetickej průměr dvou čísel je blíž odmocnině jejich součinu než obě čísla. Až se ukončí cyklus, v x je odmocnina N.