C++ 几何级数无限项求和程序
什么是几何级数 (GP)?
几何级数 (GP) 是一串数字,其中每一项都是通过将前一项乘以一个常数生成的。这个常数在 GP 中被称为公比。在本文中,我们将讨论如何使用 C++ 中的不同方法来计算 GP 中无限项的和。
注意:需要记住的重要条件是,只有当公比 (r) 的绝对值小于 1 时,GP 的正有效无限和才可能存在,即 ∣r∣ < 1。
计算 GP 中无限项和的方法
以下是计算 GP 中无限项和的两种不同方法(方法)
暴力法
我们使用迭代法来计算 GP 中无限项的和。我们初始化一个变量来存储项的和并获取迭代次数。我们设置第一项 a,并将当前项添加到总和中。通过将其乘以公比来更新当前项。此过程将持续到一定次数的迭代并返回 GP 的无限项之和。
步骤
- 检查 |r| >= 1。如果为真,则返回
NAN
,因为级数不收敛。 - 初始化
sum
和currentTerm
为第一项 a。 - 使用循环迭代计算项的和,在预定义的最大迭代次数后停止以模拟无限项。
实现
#include <bits/stdc++.h> using namespace std; double sumOfInfiniteTermsGP(double a, double r) { if (fabs(r) >= 1) { return NAN; } double sum = 0; double currentTerm = a; // We will take the maximum number of iterations int maxIterations = 10000; // Iteratively calculate the sum of terms while (maxIterations > 0) { sum += currentTerm; currentTerm *= r; maxIterations--; } return sum; } int main() { double ans = sumOfInfiniteTermsGP(12, 0.2); if (!isnan(ans)) { cout << "The sum of infinite terms in the GP is: " << ans << endl; } else { cout << "Sum does not converge as |r| >= 1" << endl; } return 0; }
输出
The sum of infinite terms in the GP is: 15
复杂度分析
- 时间复杂度:O(n),其中 n 是迭代次数。
- 空间复杂度:O(1),因为没有使用额外的空间。
直接公式法
我们可以使用直接公式来找到几何级数的无限项之和。求 GP 无限项和的公式为
GP 的无限项和 = a / (1 - r),如果 ∣r∣ < 1
步骤
- 定义一个函数,该函数采用两个参数:第一项和公比。
- 检查 r 的绝对值是否大于或等于 1。如果为真,则返回
NAN
,因为级数不收敛。 - 使用公式
Sum = a / (1 - r)
计算 GP 的无限项之和。 - 最后,返回总和。
实现
#include <bits/stdc++.h> using namespace std; double sumOfInfiniteTermsGP(double a, double r) { if (fabs(r) >= 1) { return NAN; } return a / (1 - r); } int main() { double ans = sumOfInfiniteTermsGP(12, 0.2); if (!isnan(ans)) { cout << "The sum of infinite terms in the GP is: " << ans << endl; } else { cout << "Sum does not converge as |r| >= 1" << endl; } return 0; }
输出
The sum of infinite terms in the GP is: 15
复杂度分析
- 时间复杂度:O(1),因为计算是在常数时间内完成的。
- 空间复杂度:O(1),因为没有使用额外的空间。
广告