ln2近似值的计算

ln2近似值的计算

题目与要求

【问题分析】分别用方法一和方法二法估算ln2的值(具体方法描述见下文),并比较两种方法的优缺点,对两种方法求解的结果可视化展示。

需求分析

在这里插入图片描述

设计

在这里插入图片描述

结果与分析

程序截图
在这里插入图片描述

由上图可以直观的看出:方法二比方法一收敛的要快;由以上的程序设计得知方法二要比方法一算法的时间复杂度高。两种方法各有利弊,应该根据实际需要进行选择。

源代码

import matplotlib.pyplot as plt
import numpy as np


def method01_ln2(num):
    ln2_collection = []
    ln2 = 0
    temp = -1
    for i in range(num):
        temp = temp * (-1)
        ln2 = ln2 + temp * (1 / (i + 1))
        ln2_collection.append(ln2)
    return ln2_collection

def method02_ln2(num):
    ln2_collection2 = []
    ln2 = 0
    temp2 = 1 / 3
    for i in range(0, num):
        temp1 = 2 * i + 1
        temp2 = temp2 * 9
        ln2 = ln2 + 1 / (temp1 * temp2)
        ln2_collection2.append(ln2 * 2)
    return ln2_collection2

n = 100

x_method01_ln2 = np.arange(0, n)
x_method02_ln2 = np.arange(0, n)

y_method01_ln2 = method01_ln2(n)
y_method02_ln2 = method02_ln2(n)

plt.scatter(x_method01_ln2, np.array(y_method01_ln2))
plt.scatter(x_method02_ln2, np.array(y_method02_ln2))

plt.title("ln2 estimate", fontsize=24)
plt.xlabel("x", fontsize=14)
plt.ylabel("y", fontsize=14)
plt.tick_params(axis='both', labelsize=14)
plt.legend(['method01', 'method02'], loc='upper right')
plt.show()

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值