Program na obliczanie szeregu leibniza. C++
Czy chodzi o szereg Gregory-Leibniz'a o postaci:
Jeśli tak to poniższy program oblicza sumę tego szeregu pokazując co pewien czas wynik do którego doliczył.
Warunek stopu ustaliłem na 2^64 iteracji lub dojście do obliczenia z dokładnością 4 eps.
/* * File: main.cpp * Author: ksm * * Created on 14 marzec 2012, 14:33 */
#include <iostream>#include <limits>#include <cmath>
using namespace std;
/* * */int main(int argc, char** argv) {
unsigned long long n = 0; double dokl = 4.0 * numeric_limits<double>::epsilon(); double sum = 0.0, osum = 2.0; std::cout.setf(std::ios::fixed, std::ios::floatfield); std::cout.setf(std::ios::showpoint); std::cout.precision(18); while (n < numeric_limits<unsigned long long>::max() && abs(osum - sum) > dokl) { osum = sum; double nd = static_cast<double>(n); if ((n & 1) == 0) { // n parzyste (-1)^n == 1 sum += 1.0 / (2.0 * nd + 1.0); } else { sum -= 1.0 / (2.0 * nd + 1.0); } if ((n & 0xFFFFFF) == 0) { cout << "Suma po " << n << " elementach: " << sum << endl; } n++; } cout << "Suma po " << n << " elementach: " << sum << endl; return 0;}
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
Czy chodzi o szereg Gregory-Leibniz'a o postaci:
Jeśli tak to poniższy program oblicza sumę tego szeregu pokazując co pewien czas wynik do którego doliczył.
Warunek stopu ustaliłem na 2^64 iteracji lub dojście do obliczenia z dokładnością 4 eps.
/*
* File: main.cpp
* Author: ksm
*
* Created on 14 marzec 2012, 14:33
*/
#include <iostream>
#include <limits>
#include <cmath>
using namespace std;
/*
*
*/
int main(int argc, char** argv) {
unsigned long long n = 0;
double dokl = 4.0 * numeric_limits<double>::epsilon();
double sum = 0.0, osum = 2.0;
std::cout.setf(std::ios::fixed, std::ios::floatfield);
std::cout.setf(std::ios::showpoint);
std::cout.precision(18);
while (n < numeric_limits<unsigned long long>::max()
&& abs(osum - sum) > dokl) {
osum = sum;
double nd = static_cast<double>(n);
if ((n & 1) == 0) {
// n parzyste (-1)^n == 1
sum += 1.0 / (2.0 * nd + 1.0);
} else {
sum -= 1.0 / (2.0 * nd + 1.0);
}
if ((n & 0xFFFFFF) == 0) {
cout << "Suma po " << n << " elementach: " << sum << endl;
}
n++;
}
cout << "Suma po " << n << " elementach: " << sum << endl;
return 0;
}