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),因为没有使用额外的空间。
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP