几何级数:根据总和以及第一个和最后一个元素计算商和元素数量

问题描述 投票:0回答:3

如果已知序列的起始值和最终值,例如使用

numpy.logspace
numpy.geomspace
,则可以轻松地在给定的基数和元素数量上创建对数刻度(几何级数)上均匀间隔的数字。现在假设我想以相反的方式定义几何级数,即基于所得几何级数的属性。如果我知道级数的总和以及级数的第一个和最后一个元素,我可以计算商和元素数量吗?

例如,假设级数的第一个和最后一个元素是

a_0
a_n
,级数的总和是
s_n
。我从反复试验中知道它适用于
n=9
r≈1.404
,但是如何计算这些值?

python arrays algorithm numpy math
3个回答
3
投票

我们必须重建几何级数,即获得

a, q, m
(这里
^
意味着提升到权力):

a, a * q, a * q^2, ..., a * q^(m - 1)

如果我们知道

first, last, total
:

first = a                       # first item
last  = a * q^(m - 1)           # last item
total = a * (q^m - 1) / (q - 1) # sum

解这些方程我们可以发现

a = first
q = (total - first) / (total - last)
m = log(last / a) / log(q)

如果您想获得数量的物品

n
,请注意
n == m + 1

代码:

import math

...

def Solve(first, last, total):
    a = first
    q = (total - first) / (total - last)
    n = math.log(last / a) / math.log(q) + 1
    
    return (a, q, n);

小提琴

如果您输入数据(

1
15
50
),您就会得到解决方案

a = 1 
q = 1.4 
n = 9.04836151801382 # not integer

因为

n
不是整数,您可能想要调整;当
last == 15
可以变化时,让
total
准确。在这种情况下
q = (last / first) ^ (1 / (n - 1))
total = first * (q ^ n - 1) / (q - 1)

a = 1
q = 1.402850552006674
n = 9

total = 49.752 # now n is integer, but total <> 50

2
投票

您必须针对

r
n
求解以下两个方程:

a:= An / Ao = r^(n - 1)

s:= Sn / Ao = (r^n - 1) / (r - 1)

您可以通过

消除
n

s = (r a - 1) / (r - 1)

并求解

r
。然后
n
接下来是
log(a) / log(r) + 1


就您而言,从

s = 50
a = 15
,我们获得
r = 7/5 = 1.4
n = 9.048...

n
舍入为
9
是有意义的,但是
r^8 = 15
(
r ~ 1.40285
) 和
r = 1.4
不太兼容。


2
投票

您有足够的信息来解决它:

Sum of series = a + a*r + a*(r^2) ... + a*(r^(n-1))
= a*((r^n)-1)/(r-1)
= a*((last element * r) - 1)/(r-1)

给定级数

a
和最后一个元素的总和,您可以使用上面的等式来查找
r
的值。 插入给定示例的值:

50 = 1 * ((15*r)-1) / (r-1)
50r - 50 = 15r - 1
35r = 49
r = 1.4

然后,使用

sum of series = a*((r^n)-1)/(r-1)
:

50 = 1*((1.4^n)-1)(1.4-1)
21 = 1.4^n
n = log(21)/log(1.4) = 9.04

如果

n
不是整数,您可以近似
r
并重新计算
n

© www.soinside.com 2019 - 2024. All rights reserved.