// Funkcja liczy połowę okresu drgań wahadła matematycznego double PolOkresDrgan(double theta0, double dt) { double theta, theta_2, v, v_2, t, PolOkres; // Inicjalizacja zmiennych theta = theta0; // Kąt odchylenia od pionu v = 0.0; // prędkość kątowa t = 0.0; // Obliczania Theta_2, v_2 dla kolejnych kroków czasowych while (true) { theta_2 = theta + dt * v; v_2 = v - dt * (g / l) * sin(theta); if (v * v_2 < 0) break; // wahadło osiąga makymalne wychylenie, gdy v zmiania znak - upływa wtedy pół okresu drgań // Aktualizacja wartości theta = theta_2; v = v_2; t = t + dt;

PolOkres = t; return PolOkres; }

int main() { double angle, theta0, dt, Okres; angle = 179; // Amplituda drgań w stopniach dt = 0.000001; // krok iteracji

theta0 = angle * M_PI / 180.0; // Konwersja kąta na radiany Okres = 2.0 * PolOkresDrgan(theta0, dt); cout << " theta0 = " << angle << " [stopnie] T = " << Okres << " [sekundy]" << endl;

return 0; }