Ciąg geometryczny to taki ciąg liczbowy o skończonej lub nieskończonej liczbie wyrazów. Każdy wyraz, prócz pierwszego, jest iloczynem wyrazu poprzedniego oraz stałej wartości q, która jest nazywana ilorazem ciągu. Rekurencyjny wzór na n-ty wyraz ciągu to . Iloraz q, o ile jest różny od 0, można wyliczyć ze wzoru .
Dowolny wyraz ciągu można wyznaczyć na kilka sposobów. Jeden z nich polega na rekurencyjnym wyznaczeniu wyrazu zgodnie ze wzorem :
(1.) Funkcja wyrazN_rekurencja() przyjmuje kolejno a1 - wartość pierwszego wyrazu ciągu, q - wartość ilorazu oraz n - numer wyrazu do wyznaczenia. (2.) Jeśli numer wyrazu n to 1 to zwróć wartość pierwszego wyrazu. W przeciwnym razie (3.) zwróć poprzedni wyraz pomnożony przez iloraz. Takie rozwiązanie podaje prawidłowy wynik, ale można też skorzystać z wzoru . Wtedy rozwiązanie sprowadza się do jednej linijki i użycia funkcji pow() z biblioteki cmath:
Mając nawet niewielką ilość wyrazów nie zawsze jest oczywiste czy dany ciąg jest ciągiem geometrycznym. Podczas pisania algorytmu wykonującego to zadanie należy pamiętać, że . Innymi słowy wystarczy obliczyć iloraz drugiego wyrazu do pierwszego, a następnie sprawdzić czy wyliczona wartość jest prawdziwa dla każdej kolejnej pary wyrazów:
(1.) Funkcja czyGeometryczny_proste() przyjmuje data - listę wyrazów ciągu oraz n - ile elementów ma lista data. Program (2.) wylicza iloraz drugiego wyrazu do pierwszego, a następnie (3.) sprawdza czy wynosi tyle samo dla (4.) każdej kolejnej pary liczb czy iloraz wynosi tyle samo. Jeśli tak nie jest to (5.) zwrócony zostanie fałsz. Jeśli pętla nie zostanie przerwana to program (6.) zwróci prawdę.
Warto jednak zastanowić się nad różnymi przypadkami ciągu, ponieważ mogą w nim wystąpić zera. Powyższy program nie napotka problemu jeśli podzieli 0 przez a, ale napotka problem kiedy podzieli a przez 0. Z tego powodu algorytm nie zadziała dla każdych danych wejściowych. Można to poprawić dodając odpowiednie warunki jaka jest wartość q jeśli w parze będzie jedno lub dwa zera. Jednak istnieje możliwość, aby pominąć dodatkowe warunki. Należy wtedy skorzystać z własności samych wyrazów, że środkowy wyraz jest średnią geometryczną wyrazów sąsiednich tj. . W ten sposób można sprawdzić czy ciąg jest geometryczny bez wyznaczania ilorazu q:
W obydwu przypadkach należy jednak pamiętać, że mogą wystąpić błędy zaokrąglenie liczb rzeczywistych. To może wpływać na błędne rozpoznawanie czy ciąg jest geometryczny.
Tak samo jak w poprzednich przypadkach tak samo w tym nie trzeba używać wzorów matematycznych, aby to osiągnąć. Sumując n pierwszych wyrazów wystarczy:
(2.) Początkowo suma jest ustawiona na wartość pierwszego wyrazu i (3.) dodawane są wartości kolejnych wyrazów. (4.) Wartość a1 jest mnożona przez q, aby uzyskać kolejny wyraz, aby go (5.) dodać do sumy. Na koniec (7.) zwrócona zostaje wartość suma.
Oczywiście w przypadku liczenia sumy ciągu geometrycznego można skorzystać ze wzoru: . Należy w tym przypadku jednak pamiętać, że dzielnik nie może być równy zero, więc należy sprawdzić czy q jest różne od jeden:
(2.) Jeśli podany ciąg ma q = 1 to znaczy, że jest stały, więc wystarczy (3.) zwrócić pierwszą wartość pomnożoną przez n. Jednak dla każdego innego q zwrócony zostanie wynik (4.) zgodny z podanym wcześniej wzorem.
Powyższe funkcje można przetestować przy pomocy poniższej funkcji main():
Napisz program, który wczyta od użytkownika ciąg liczb. Jeśli wprowadzony ciąg będzie geometryczny to program powinien wypisać jego iloraz q na ekran.
Napisz program, który wczyta od użytkownika pierwszy wyraz ciągu oraz jego iloraz q oraz liczby n i k, a następnie wypisze na ekranie n kolejnych wyrazów ciągu począwszy od k-tego.