zoukankan      html  css  js  c++  java
  • 【计算方法】01

    【问题描述】如果在240个月内每月付款300美元,求解满足全部年金A为500000美元的利率I的近似值(精确到小数点后10位)

    【输入形式】在屏幕上输入3个数,分别表示左端点值、右端点值和精确到小数点后的位数。各数间都以一个空格分隔。

    【输出形式】第一行输出迭代次数,第二行输出利率(精确到小数点后11位)

    【样例输入】

     0.15 0.16 10

    【样例输出】

     27

     0.15753931027

    【样例说明】输入:左端点值为0.15,右端点值为0.16,求得的利率精确到小数点后10位。输出:第一行为迭代次数27次,第二行为求得的利率为0.15753931027

    【评分标准】根据输入得到的输出准确

    # -*- coding: utf-8 -*-
    # 第一次作业 - 二分法求利率(非线性方程求解)
    import math
    
    def f(x):
        p=300
        n=240
        A=12*p*((1+x/12)**n-1)/x-500000
        return A
    
    def regula(a, b, accuracy):
        delta = 0.5 * 10**(-accuracy)
        n = math.floor( (math.log(b-a) - math.log(delta))*1.0 / math.log(2) )
        if f(a) * f(b) > 0 :
            print("ya,yb are not suitable ")
            return
        for k in range(1000000):
            c = (a + b) / 2
            if f(c) == 0:
                break
            elif f(a)*f(c) < 0:
                b = c
                c = (a + b) / 2
            else:
                a = c
                c = (a + b) / 2
            err = abs(b - a) / 2
            if err < delta:
                break
        # print(k+1)
        return (n, round(c, accuracy+1))
    
    def main():
        left, right, accuracy = input().split()
        left = float(left)
        right = float(right)
        accuracy = int(accuracy)
        result = regula(left, right, accuracy)
        print(result[0])
        print(result[1])
    
    if __name__ == '__main__':
        main()
    
    
  • 相关阅读:
    自定义404页面
    authenticate的执行流程与重写
    装饰器login_required
    一、词法结构
    Django——用户认证
    多线程
    Django框架4——form表单
    Django框架3——模型
    Django框架2——模板
    Anaconda 安装tensorflow出现错误
  • 原文地址:https://www.cnblogs.com/ME-WE/p/12433582.html
Copyright © 2011-2022 走看看