Program to calculate sum of an Infinite Arithmetic-Geometric Sequence

• Last Updated : 13 May, 2021

Given three integers A, D, and R representing the first term, common difference, and common ratio of an infinite Arithmetic-Geometric Progression, the task is to find the sum of the given infinite Arithmetic-Geometric Progression such that the absolute value of R is always less than 1.

Examples:

Input: A = 0, D = 1, R = 0.5
Output: 0.666667

Input: A = 2, D = 3, R = -0.3
Output: 0.549451

Approach: An arithmetic-geometric sequence is the result of the term-by-term multiplication of the geometric progression series with the corresponding terms of an arithmetic progression series. The series is given by:

a, (a + d) * r, (a + 2 * d) * r2, (a + 3 * d) * r3, …, [a + (N − 1) * d] * r(N − 1).

The Nth term of the Arithmetic-Geometric Progression is given by:

=>

The sum of the Arithmetic-Geometric Progression is given by:

=>

where, |r| < 1.

Below is the implementation of the above approach:

C++

 // C++ program for the above approach #include using namespace std; // Function to find the sum of the// infinite AGPvoid sumOfInfiniteAGP(double a, double d,                      double r){    // Stores the sum of infinite AGP    double ans = a / (1 - r)                 + (d * r) / (1 - r * r);     // Print the required sum    cout << ans;} // Driver Codeint main(){    double a = 0, d = 1, r = 0.5;    sumOfInfiniteAGP(a, d, r);     return 0;}

Java

 // Java program for the above approachclass GFG{ // Function to find the sum of the// infinite AGPstatic void sumOfInfiniteAGP(double a, double d,                             double r){         // Stores the sum of infinite AGP    double ans = a / (1 - r) +           (d * r) / (1 - r * r);     // Print the required sum    System.out.print(ans);} // Driver Codepublic static void main(String[] args){    double a = 0, d = 1, r = 0.5;         sumOfInfiniteAGP(a, d, r);}} // This code is contributed by 29AjayKumar

Python3

 # Python3 program for the above approach # Function to find the sum of the# infinite AGPdef sumOfInfiniteAGP(a, d, r):       # Stores the sum of infinite AGP    ans = a / (1 - r) + (d * r) / (1 - r * r);     # Print the required sum    print (round(ans,6)) # Driver Codeif __name__ == '__main__':    a, d, r = 0, 1, 0.5    sumOfInfiniteAGP(a, d, r) # This code is contributed by mohit kumar 29.

C#

 // C# program for the above approachusing System;class GFG{       // Function to find the sum of the    // infinite AGP    static void sumOfInfiniteAGP(double a, double d,                                 double r)    {               // Stores the sum of infinite AGP        double ans = a / (1 - r) + (d * r) / (1 - r * r);         // Print the required sum        Console.Write(ans);    }     // Driver Code    public static void Main()    {        double a = 0, d = 1, r = 0.5;        sumOfInfiniteAGP(a, d, r);    }} // This code is contributed by ukasp.

Javascript

 
Output
0.666667

Time Complexity: O(1)
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up