 Open in App
Not now

# Program to calculate sum of an Infinite Arithmetic-Geometric Sequence

• Last Updated : 20 Jul, 2022

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 AGP void sumOfInfiniteAGP(double a, double d,                       double r) {     // Stores the sum of infinite AGP     double ans = a / (1 - r)                  + (d * r) / pow((1-r),2);       // Print the required sum     cout << ans; }   // Driver Code int main() {     double a = 0, d = 1, r = 0.5;     sumOfInfiniteAGP(a, d, r);       return 0; } // Correction done by Yogesh0903

## Java

 import java.lang.Math; // Java program for the above approach 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) / Math.pow((1-r),2);       // Print the required sum     System.out.print(ans); }   // Driver Code public static void main(String[] args) {     double a = 0, d = 1, r = 0.5;           sumOfInfiniteAGP(a, d, r); } }   // This code is contributed by 29AjayKumar // Correction done by Yogesh0903

## Python3

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

## C#

 // C# program for the above approach using 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) / Math.Pow((1-r),2);           // 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. // Correction done by Yogesh0903

## Javascript

 

Output

0.666667

Time Complexity: O(1)
Auxiliary Space: O(1),  since no extra space has been taken.

My Personal Notes arrow_drop_up
Related Articles