我的目标是创建一个C++程序来计算几何序列的前三项。提供的是前三项及其乘法的总和。
假设答案必须是真实的。
我明白了
b = p¹ᐟ³
a² + (b-s)a + b² = 0
令
a
b
c
为实数,即几何级数的前三项。假设它们都不为 0。否则,“级数”是退化的。
令比率
r
为实数,即连续项之间的比率。因此,
r = b/a (1)
r = c/b (2)
求解
a
和 c
的方程 (1) 和 (2) 得出:
a = b/r (3)
c = br (4)
给定乘积
p
,方程(3)和(4)让我们直接找到b
:
p = abc = (b/r)(b)(br)
p = bbb = b³
b = p¹ᐟ³ (5)
因此,
b
是乘积的立方根。
[注: 此答案中仅使用了两个小数指数:1/3 和 2/3。如果微小的 Unicode 指数难以阅读,您可能需要放大。]
将方程 (1) 设置为等于方程 (2),可得出
c
的另一个方程:
b/a = c/b
bb = ac
b² = ac
c = b²/a
c = (p¹ᐟ³)²/a
c = p²ᐟ³/a (6)
转向总和
s
,我们有:
s = a + b + c
s = a + (p¹ᐟ³) + (p²ᐟ³/a)
两边同时乘以
a
,然后两边减去as
,得到:
as = aa + a(p¹ᐟ³) + a(p²ᐟ³/a)
sa = a² + (p¹ᐟ³)a + p²ᐟ³
0 = a² + (p¹ᐟ³)a - sa + p²ᐟ³
0 = a² + (p¹ᐟ³-s)a + p²ᐟ³ (7)
方程(7)可以通过熟悉的二次公式来求解。对于二次方程
0 = Ax² + Bx + C
,其中使用大写字母与上面的小写字母进行区分,我们可以将方程(7)映射如下:
A
是 1
B
是 p¹ᐟ³-s
C
是 p²ᐟ³
x
是 a
判别式,
B² - 4AC
,确定根的数量和类型。
对于方程(7),我们有
B² = (p¹ᐟ³-s)²
B² = (p¹ᐟ³)² + 2(p¹ᐟ³)(-s) +(-s)²
B² = p²ᐟ³ - 2s(p¹ᐟ³) + s²
4AC = 4(1)(p²ᐟ³)
4AC = 4p²ᐟ³
B² - 4AC = p²ᐟ³ - 2s(p¹ᐟ³) + s² - 4p²ᐟ³
B² - 4AC = -3p²ᐟ³ - 2s(p¹ᐟ³) + s²
B² - 4AC = s² - 2(p¹ᐟ³)s - 3p²ᐟ³
B² - 4AC = (s + p¹ᐟ³)(s - 3p¹ᐟ³) (8)
B² - 4AC = (s + b)(s - 3b) (9)
等式(9)表明判别式在两种情况下消失:
s = -b
s = 3b
设计用于查找该问题的几何级数
a
、b
和 c
的程序必须分析判别式,并相应地提出解决方案。
对于存在的实数解:
a
b
c
方程(8)的因子很好地表明计算机计算中的舍入误差是否影响判别式的分析。如果任一因子“接近”零,则可能无法正确计算判别式的符号。此外,应值为 0 的判别式可以计算为某个“小”值,无论是正值还是负值。