复利现值相似的公式,利率的计算

求帮忙一下,这个公式中的i该怎么计算出来,用什么东西计算。谢谢!

img

只能近似计算,先试出一个大概的边界,再用实数二分

guess = 0.01 # 从 1% 利率开始试
PV = 33404.87
FV = [144.5, 202.3, 375.7, 578, 722.5, 34867]

def init(FV, guess):
    guess_PV = 0
    for i in range(len(FV)):
        guess_PV += FV[i]/((1+guess)**(i+1))
    return guess_PV

while init(FV, guess) > PV:
    guess += 0.01

l, r = guess-0.01, guess
while r - l > 1e-6:
    mid = (l+r)/2
    if init(FV, mid) < PV: r = mid
    else: l = mid

print(f"{l:.5f}")

结果是当利率大概是0.01704,也就是1.704%的时候,6笔投资的现值大概是33404.48

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/934491
  • 这篇博客也不错, 你可以看下图(公园导游系统的无向图,使用邻接矩阵存储)
  • 除此之外, 这篇博客: 【蓝桥真题3】蓝桥改革变难,想进国赛这些能力你可缺一不可中的 🍋1.快速求最大公约数及最小公倍数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •         这个考点我相信大家一定不陌生,求最大公约数有的人可能还用的是遍历去查询,如果是填空题时间长点可能无所谓,但是如果大题涉及到最大公约数或者公倍数的问题,蓝桥杯的数据量是出名的大(这个后面会体现),超时是肯定的。所以请大家背下欧几里得公式直接使用(已知效率最快求出公倍数地公式)

            1.gcd函数(欧几里得算法原理)

    //返回值则是a和b的最大公约数
    int gcd(int a,int b){
    		return b == 0 ? a:gcd(b,a%b);
    }

            2.lcm函数(速求最小公倍数,原理基于gcd函数)

    //返回值为a和b的最小公倍数
    int lcm(int a, int b){
    	return a/gcd(a,b)*b;//最小公倍数=两数之积÷两数最大公约数    
    }
  • 您还可以看一下 正月十六工作室老师的公有云部署与运维-华为云课程中的 任务3-1 购买云硬盘小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题标题: 求解复利现值相似公式中的利率计算方式

    问题内容: 我在计算复利现值相似公式时需要求解其中的利率i。请问在这种情况下,我该使用什么样的计算方法来确定利率i的值?我需要注意哪些因素?谢谢!

    解决方案:

    复利现值相似公式是指在不同的利率和不同的时间下,其两个不同的现值相等。假设在利率i下,金额P现在投资,n年后到期,得到的现值为Sn,现在我们想知道利率i的大小。可以用以下式子来计算:

    Sn = P * (1 + i)^n

    化简之后:

    i = (S/P)^(1/n) - 1

    其中,P为现值,S为复利终值,n为年份。

    需要注意的是,由于使用n次方根对i求解,若n较大时,这个求解结果较为困难,因此,在实际使用时,建议使用二分查找法等算法来近似地求解i的取值。具体可以按以下步骤来实现:

    1. 假设利率的范围在[0, 1]之间,可以使用二分查找法来查找i的区间。首先确定一个精度值ε,i的初始区间为[0, 1],然后进行二分查找,每次将i的区间缩小一半,若此时得到的Sn与S的差值小于ε,则认为i已经找到。具体可参考下述代码实现:
    def find_rate(P, S, n, epsilon=1e-6):
        left, right = 0, 1  # 初始利率区间
        while left <= right:
            mid = (left + right) / 2
            Sn = P * (1 + mid)**n
            if abs(Sn - S) < epsilon:  # 已经找到目标利率
                return mid
            elif Sn > S:  # 当前利率过高,将右界移动至mid-epsilon
                right = mid - epsilon
            else:  # 当前利率过低,将左界移动至mid+epsilon
                left = mid + epsilon
        return -1  # 未找到目标利率
    
    1. 另外还需注意的是,由于计算较为复杂,可能会涉及到浮点精度问题,因此,在实际运算时,建议使用decimal等高精度运算库来避免精度问题的影响。例如,使用Python的decimal库进行高精度运算的代码如下:
    from decimal import Decimal
    
    def find_rate(P, S, n, epsilon=Decimal('1E-6')):
        left, right = Decimal('0'), Decimal('1')
        while left <= right:
            mid = (left + right) / Decimal('2')
            Sn = P * (Decimal('1') + mid)**n
            if abs(Sn - S) < epsilon:
                return mid
            elif Sn > S:
                right = mid - epsilon
            else:
                left = mid + epsilon
        return -1