Progresión geométrica – Part 1

Una secuencia de números se llama progresión geométrica si la razón de dos términos consecutivos es siempre la misma. En términos simples, significa que el siguiente número en la serie se calcula multiplicando un número fijo por el número anterior en la serie. Por ejemplo, 2, 4, 8, 16 es un GP porque la relación de dos términos consecutivos cualesquiera en la serie (diferencia común) es igual (4/2 = 8/4 = 16/8 = 2). 

Hecho sobre la progresión geométrica: 

  1. Término inicial: En una progresión geométrica, el primer número se llama término inicial.
  2. Razón común: La razón entre un término en la secuencia y el término anterior se llama “razón común”. 
  3. El comportamiento de una sucesión geométrica depende del valor de la razón común. Si la razón común es:
    • Positivo, los términos serán todos del mismo signo que el término inicial.
    • Negativo, los términos se alternarán entre positivo y negativo.
    • Mayor que 1, habrá un crecimiento exponencial hacia el infinito positivo o negativo (según el signo del término inicial). 
    • 1, la progresión es una secuencia constante.
    • Entre -1 y 1 pero no cero, habrá un decaimiento exponencial hacia cero.
    • -1, la progresión es una secuencia alterna.
    • Menos de -1, para los valores absolutos hay un crecimiento exponencial hacia el infinito (sin signo), debido a la alternancia del signo.

Fórmula del n- ésimo término de una Progresión Geométrica: 
Si ‘a’ es el primer término y ‘r’ es la razón común. Así, la fórmula explícita es 
 

Fórmula de la suma del enésimo término de la Progresión Geométrica: 
 

¿Cómo comprobamos si una serie es una progresión geométrica o no?
Encontremos la razón de los términos consecutivos, entonces podemos decir que la razón de los términos consecutivos de las sucesiones dadas es 13 o una constante. Así que esta secuencia está formando una progresión geométrica. 

C++

// C++ program to check if a given array
// can form geometric progression
#include <bits/stdc++.h>
using namespace std;
 
bool is_geometric(int arr[], int n)
{
    if (n == 1)
        return true;
 
    // Calculate ratio
    int ratio = arr[1] / (arr[0]);
 
    // Check the ratio of the remaining
    for (int i = 1; i < n; i++) {
        if ((arr[i] / (arr[i - 1])) != ratio) {
            return false;
        }
    }
    return true;
}
 
// Driven Program
int main()
{
    int arr[] = { 2, 6, 18, 54 };
    int n = sizeof(arr) / sizeof(arr[0]);
 
    (is_geometric(arr, n)) ? (cout << "True" << endl) : (cout << "False" << endl);
 
    return 0;
}

Java

// Java program to check if a given array
// can form geometric progression
import java.util.Arrays;
 
class GFG {
 
    // function to check series is
    // geometric progression or not
    static boolean is_geometric(int arr[], int n)
    {
        if (n == 1)
            return true;
 
        // Calculate ratio
        int ratio = arr[1] / (arr[0]);
 
        // Check the ratio of the remaining
        for (int i = 1; i < n; i++) {
            if ((arr[i] / (arr[i - 1])) != ratio) {
                return false;
            }
        }
        return true;
    }
 
    // driver code
    public static void main(String[] args)
    {
        int arr[] = { 2, 6, 18, 54 };
        int n = arr.length;
 
        if (is_geometric(arr, n))
            System.out.println("True");
        else
            System.out.println("False");
    }
}

Python3

def is_geometric(li):
    if len(li) <= 1:
        return True
         
    # Calculate ratio
    ratio = li[1]/float(li[0])
     
    # Check the ratio of the remaining
    for i in range(1, len(li)):
        if li[i]/float(li[i-1]) != ratio:
            return False
    return True
 
print(is_geometric([2, 6, 18, 54]))

C#

// C# program to check if a given array
// can form geometric progression
using System;
 
class Geeks {
 
    static bool is_geometric(int[] arr, int n)
    {
        if (n == 1)
            return true;
 
        // Calculate ratio
        int ratio = arr[1] / (arr[0]);
 
        // Check the ratio of the remaining
        for (int i = 1; i < n; i++) {
            if ((arr[i] / (arr[i - 1])) != ratio) {
                return false;
            }
        }
        return true;
    }
 
    // Driven Program
    public static void Main(String[] args)
    {
        int[] arr = new int[] { 2, 6, 18, 54 };
        int n = arr.Length;
 
        if (is_geometric(arr, n))
            Console.WriteLine("True");
        else
            Console.WriteLine("False");
    }
}

PHP

<?php
function is_geometric($arr)
{
    if (sizeof($arr) <= 1)
        return True;
    # Calculate ratio
    $ratio = $arr[1]/$arr[0];
    
    # Check the ratio of the remaining
    for($i=1; $i<sizeof($arr); $i++)
    {
        if (($arr[$i]/($arr[$i-1])) != $ratio)
        {
            return "Not a geometric sequence";
        }
    }       
  return "Geometric  sequence";
}
$my_arr1 = array(2, 6, 18, 54);
 
 
print_r(is_geometric($my_arr1)."\n");
print_r(is_geometric($my_arr2)."\n");
?>

Javascript

<script>
 
// Javascript program to check if a given array
// can form geometric progression
 
// Function to check series is
// geometric progression or not
function is_geometric(arr, n)
{
    if (n == 1)
        return true;
 
    // Calculate ratio
    let ratio = parseInt(arr[1] / (arr[0]));
 
    // Check the ratio of the remaining
    for(let i = 1; i < n; i++)
    {
        if (parseInt((arr[i] /
                     (arr[i - 1]))) != ratio)
        {
            return false;
        }
    }
    return true;
}
 
// Driver code
let arr = [ 2, 6, 18, 54 ];
let n = arr.length;
 
(is_geometric(arr, n)) ?
(document.write("True")) :
(document.write("False"));
 
// This code is contributed by souravmahato348
 
</script>

Producción: 

True

Complejidad de tiempo: O(n)

Espacio Auxiliar: O(1)

Programa Básico relacionado con la Progresión Geométrica 

Más problemas relacionados con la progresión geométrica 

¡Artículos recientes sobre la progresión geométrica!
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *