Una secuencia de números se llama progresión armónica si el recíproco de los términos está en AP . En términos simples, a, b, c, d, e, f están en HP si 1/a, 1/b, 1/c, 1/d, 1/e, 1/f están en AP. Por ejemplo, 1/a, 1/(a+d), 1/(a+2d), etc. están en HP porque a, a + d, a + 2d están en AP.
Hecho sobre la progresión armónica:
- Para resolver un problema de Progresión Armónica, se debe hacer la serie AP correspondiente y luego resolver el problema.
- Como el n-ésimo término de un AP está dado por an = a + (n-1)d , el n-ésimo término de un HP está dado por 1/ [a + (n-1) d] .
- Para dos números, si A, G y H son respectivamente las medias aritmética, geométrica y armónica , entonces
- UN ≥ G ≥ H
- AH = G 2 , es decir, A, G, H están en GP
- Si necesitamos encontrar tres números en un HP, entonces deben asumirse como 1/a–d, 1/a, 1/a+d
- La mayoría de las preguntas de HP se resuelven convirtiéndolas primero en AP
Fórmula de Progresión Armónica:
¿Cómo comprobamos si una serie es progresión armónica o no?
La idea es recíproca la array o serie dada. Después del recíproco, verifica si las diferencias entre elementos consecutivos son iguales o no. Si todas las diferencias son iguales, la progresión aritmética es posible. Entonces, como sabemos, si el recíproco de los términos está en AP, dada una secuencia de series, está en HP. Tomemos una serie 1/5, 1/10, 1/15, 1/20, 1/25 y verifiquemos si es una progresión armónica o no. A continuación se muestra la implementación:
C++
// CPP program to check if a given // array can form harmonic progression #include<bits/stdc++.h> using namespace std; bool checkIsHP(vector<double> &arr) { int n = arr.size(); if (n == 1) { return true; } // Find reciprocal of arr[] vector<int> rec; for (int i = 0; i < n; i++) { rec.push_back((1 / arr[i])); } // return (rec); // After finding reciprocal, check if // the reciprocal is in A. P. // To check for A.P., first Sort the // reciprocal array, then check difference // between consecutive elements sort(rec.begin(), rec.end()); int d = (rec[1]) - (rec[0]); for (int i = 2; i < n; i++) { if (rec[i] - rec[i - 1] != d) { return false; } } return true; } // Driver Code int main() { // series to check whether it is in H.P vector<double> arr = {1 / 5, 1 / 10, 1 / 15, 1 / 20, 1 / 25}; // Checking a series is in H.P or not if (checkIsHP(arr)) { cout << "Yes" << std::endl; } else { cout << "No" <<endl; } return 0; } // This code is contributed by mits
Java
// Java program to check if a given // array can form harmonic progression import java.util.*; class GFG { static boolean checkIsHP(double []arr) { int n = arr.length; if (n == 1) return true; // Find reciprocal of arr[] ArrayList<Integer> rec = new ArrayList<Integer>(); for (int i = 0; i < n; i++) rec.add((int)(1 / arr[i])); // return (rec); // After finding reciprocal, check if // the reciprocal is in A. P. // To check for A.P., first Sort the // reciprocal array, then check difference // between consecutive elements Collections.sort(rec); int d = (int)rec.get(1) - (int)rec.get(0); for (int i = 2; i < n; i++) if (rec.get(i) - rec.get(i - 1) != d) return false; return true; } // Driver code public static void main(String[] args) { // series to check whether it is in H.P double arr[] = { 1/5, 1/10, 1/15, 1/20, 1/25 }; // Checking a series is in H.P or not if (checkIsHP(arr)) System.out.println("Yes"); else System.out.println("No"); } } // This code is contributed by mits
Python3
# Python3 program to check if a given # array can form harmonic progression def checkIsHP(arr): n = len(arr) if (n == 1): return True # Find reciprocal of arr[] rec = [] for i in range(0, len(arr)): a = 1 / arr[i] rec.append(a) return(rec) # After finding reciprocal, check if the # reciprocal is in A. P. # To check for A.P., first Sort the # reciprocal array, then check difference # between consecutive elements rec.sort() d = rec[1] - rec[0] for i in range(2, n): if (rec[i] - rec[i-1] != d): return False return True # Driver code if __name__=='__main__': # series to check whether it is in H.P arr = [ 1/5, 1/10, 1/15, 1/20, 1/25 ] # Checking a series is in H.P or not if (checkIsHP(arr)): print("Yes") else: print("No")
C#
// C# program to check if a given // array can form harmonic progression using System; using System.Collections; class GFG { static bool checkIsHP(double[] arr) { int n = arr.Length; if (n == 1) return true; // Find reciprocal of arr[] ArrayList rec = new ArrayList(); for (int i = 0; i < n; i++) rec.Add((int)(1 / arr[i])); // return (rec); // After finding reciprocal, check if // the reciprocal is in A. P. // To check for A.P., first Sort the // reciprocal array, then check difference // between consecutive elements rec.Sort(); int d = (int)rec[1] - (int)rec[0]; for (int i = 2; i < n; i++) if ((int)rec[i] - (int)rec[i - 1] != d) return false; return true; } // Driver code public static void Main() { // series to check whether it is in H.P double[] arr = { 1/5, 1/10, 1/15, 1/20, 1/25 }; // Checking a series is in H.P or not if (checkIsHP(arr)) Console.WriteLine("Yes"); else Console.WriteLine("No"); } } // This code is contributed by mits
PHP
<?php // PHP program to check if a given // array can form harmonic progression function checkIsHP($arr) { $n = count($arr); if ($n == 1) return true; // Find reciprocal of arr[] $rec = array(); for ($i=0;$i<count($arr);$i++) { $a = 1 / $arr[$i]; array_push($rec,$a); } return ($rec); // After finding reciprocal, check if the // reciprocal is in A. P. // To check for A.P., first Sort the // reciprocal array, then check difference // between consecutive elements sort($rec); $d = $rec[1] - $rec[0]; for ($i=2;$i<$n;$i++) if ($rec[$i] - $rec[$i-1] != $d) return false; return true; } // Driver code // series to check whether it is in H.P $arr = array( 1/5, 1/10, 1/15, 1/20, 1/25 ); // Checking a series is in H.P or not if (checkIsHP($arr)) print("Yes"); else print("No"); // This code is contributed by mits ?>
Javascript
<script> // JavaScript program to check if a given // array can form harmonic progression function checkIsHP(arr) { let n = arr.length; if (n == 1) { return true; } // Find reciprocal of arr[] let rec = []; for (let i = 0; i < n; i++) { rec.push((1 / arr[i])); } // return (rec); // After finding reciprocal, check if // the reciprocal is in A. P. // To check for A.P., first Sort the // reciprocal array, then check difference // between consecutive elements rec.sort((a,b) => a - b); let d = (rec[1]) - (rec[0]); for (let i = 2; i < n; i++) { if (rec[i] - rec[i - 1] != d) { return false; } } return true; } // Driver Code // series to check whether it is in H.P let arr = [1 / 5, 1 / 10, 1 / 15, 1 / 20, 1 / 25]; // Checking a series is in H.P or not if (checkIsHP(arr)) { document.write("Yes"); } else { document.write("No"); } </script>
Producción:
Yes
Complejidad Temporal: O(n Log n).
Espacio Auxiliar: O(n)
Programa Básico relacionado con la Progresión Armónica
- Progresión armónica Suma
- Programa para encontrar el Número Armónico Nth
- Suma de serie (n/1) + (n/2) + (n/3) + (n/4) +…….+ (n/n)
- Compruebe si el número dado es el número de mineral o no
- Número esperado de ensayos hasta el éxito
¡Artículos recientes sobre la progresión armónica!
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