Пояснення коду C++ для ряду Базеля
Код
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n;
cout << "Enter n: ";
cin >> n;
double sum = 0.0;
for(int i = 1; i <= n; i++) {
sum += 1.0 / ((double)i * i);
}
cout.precision(15);
cout << "Sum = " << sum << endl;
cout << "PI^2/6 = " << M_PI * M_PI / 6 << endl;
return 0;
}
Пояснення рядок за рядком
#include <iostream> – підключаємо бібліотеку для вводу/виводу (cin, cout).
#include <cmath> – підключаємо математичну бібліотеку (M_PI, sqrt, sin, cos).
using namespace std; – щоб не писати постійно std::cout або std::cin.
int main() – головна функція, точка входу в програму.
int n; – оголошуємо змінну для кількості членів ряду.
cout << "Enter n: "; – вивід запиту користувачу.
cin >> n; – зчитування числа, яке вводить користувач.
double sum = 0.0; – змінна для суми ряду.
for(int i = 1; i <= n; i++) – цикл для обчислення суми ряду.
sum += 1.0 / ((double)i * i); – додаємо кожен член ряду 1/i².
cout.precision(15); – встановлюємо точність виводу до 15 цифр.
cout << "Sum = " << sum << endl; – вивід обчисленої суми.
cout << "PI^2/6 = " << M_PI * M_PI / 6 << endl; – вивід теоретичного значення π²/6.
return 0; – успішне завершення програми.
Схема роботи коду (n = 5)
Користувач вводить n = 5
n = 5
sum = 0.0
Цикл for: i = 1 to n
-----------------------------------------
i = 1: sum += 1/1² = 1 → sum = 1
i = 2: sum += 1/2² = 0.25 → sum = 1.25
i = 3: sum += 1/3² ≈ 0.1111 → sum ≈ 1.3611
i = 4: sum += 1/4² = 0.0625 → sum ≈ 1.4236
i = 5: sum += 1/5² = 0.04 → sum ≈ 1.4636
Цикл завершено
-----------------------------------------
Вивід:
Sum ≈ 1.4636111111
PI²/6 ≈ 1.6449340668
Пояснення схеми
- Ініціалізація: sum = 0.0
- Цикл for: додаємо кожен член ряду 1/i² до sum
- Перетворення типу (double)i: точне ділення без переповнення
- Вивід результату: сума та теоретичне π²/6 для порівняння
- З кожною ітерацією sum зростає і наближається до π²/6
- Чим більше n, тим точніше наближення