数学中的连分式、无穷连根式、平方根

news2025/1/20 1:47:57

连分式

        连分式(continued fraction)由和与倒数的多层嵌套构成,可以是有限的,也可以是无限的。

表达式:a_{1} + \frac{1}{a_{2}+\frac{1}{a_{3}+\frac{1}{a_{n}+\frac{1}{...}}}}[a_{1};a_{2},a_{3},a_{n},...]

import math


def fraction_to_continued_fraction(numerator, denominator, max_terms):
    """
    计算一个分数的连分式表示。

    参数:
    numerator (int): 分数的分子。
    denominator (int): 分数的分母。
    max_terms (int): 连分式表示的最大项数。

    返回:
    list: 连分式的部分分母组成的列表。
    """
    coefficients = []
    current_numerator = numerator
    current_denominator = denominator

    while current_denominator != 0 and len(coefficients) < max_terms:
        quotient = current_numerator // current_denominator
        coefficients.append(quotient)
        remainder = current_numerator % current_denominator
        current_numerator, current_denominator = current_denominator, remainder

    return coefficients


def continued_fraction_to_decimal(coefficients):
    """
    将连分式转换为十进制表示的数字。

    参数:
    coefficients (list): 连分式的部分分母组成的列表。

    返回:
    float: 连分式对应的十进制数。
    """
    if not coefficients:
        return 0.0

    decimal_value = coefficients[-1]
    for coefficient in reversed(coefficients[:-1]):
        decimal_value = 1 / decimal_value + coefficient

    return decimal_value


def real_number_to_continued_fraction(x, error_tolerance, max_terms):
    """
    计算一个实数的连分式表示,考虑误差容忍度和最大项数。

    参数:
    x (float): 要表示的实数。
    error_tolerance (float): 允许的误差范围。
    max_terms (int): 连分式表示的最大项数。

    返回:
    list: 连分式的部分分母组成的列表。
    """
    coefficients = []
    integer_part = int(x)
    fractional_part = x - integer_part
    coefficients.append(integer_part)

    while fractional_part > error_tolerance and len(coefficients) < max_terms:
        reciprocal = 1 / fractional_part
        next_term = int(reciprocal)
        coefficients.append(next_term)
        fractional_part = reciprocal - next_term
        current_decimal = continued_fraction_to_decimal(coefficients)
        if abs(current_decimal - x) < error_tolerance:
            break

    return coefficients


if __name__ == '__main__':
    fraction_test = fraction_to_continued_fraction(105, 33, 10)
    print('该测试分数的连分式表示:', fraction_test)
    print('测试分数的分布式转十进制数为:', continued_fraction_to_decimal(fraction_test))

    # 计算小数3.1415926的连分式表示
    pi_value = 3.1415926  # 近似π值
    error_tolerance = 1e-5  # 误差容忍度
    max_terms = 10  # 连分式的最大项数

    pi_fraction_real = real_number_to_continued_fraction(pi_value, error_tolerance, max_terms)
    print("小数3.1415926的连分式表示:", pi_fraction_real)

该测试分数的连分式表示: [3, 5, 2]
测试分数的分布式转十进制数为: 3.1818181818181817
小数3.1415926的连分式表示: [3, 7, 15, 1] 

无穷连根式

  表达式:\sqrt{a_{1}+\sqrt{a_{2}+\sqrt{a_{3}+...}}} 

import math


def infinite_nested_radical_recursive(a, n):
    """
    递归计算无穷连根式的近似值。

    参数:
    a (float): 连根式中的常数。
    n (int): 递归深度,用于近似计算。

    返回:
    float: 无穷连根式的近似值。
    """
    if n == 1:
        return math.sqrt(a)
    return math.sqrt(a + infinite_nested_radical_recursive(a, n - 1))


# 示例:计算 a = 2 的无穷连根式近似值
a = 2
recursion_depth = 10
approximation_recursive = infinite_nested_radical_recursive(a, recursion_depth)
print(f"a = {a} 的无穷连根式近似值 (递归深度 {recursion_depth}): {approximation_recursive}")

 a = 2 的无穷连根式近似值 (递归深度 10): 1.9999976469034038

平方根

        可以使用巴比伦算法求数字的平方根。

        假设数字为x,步骤如下:

  1.  猜测y,作为\sqrt{x}的猜测值
  2. 计算z=x/y
  3. zy的平均值当作新的猜测值
  4. 重复步骤2和3,直到y^{2}-x足够小
import math


def babylonian_sqrt(value, initial_guess, tolerance):
    """
    使用巴比伦算法计算平方根的近似值。

    参数:
    value (float): 要求平方根的数。
    initial_guess (float): 初始猜测值。
    tolerance (float): 误差容忍度。

    返回:
    float: 近似的平方根值。
    """
    current_error = tolerance * 2  # 初始设置一个较大的误差值
    guess = initial_guess

    while current_error > tolerance:
        quotient = value / guess
        new_guess = (guess + quotient) / 2
        current_error = abs(new_guess**2 - value)
        guess = new_guess

    return guess


# 测试平方根计算
value_to_sqrt = 5
initial_guess = 1
tolerance = 1e-15

approx_sqrt = babylonian_sqrt(value_to_sqrt, initial_guess, tolerance)
print(f"使用巴比伦算法计算的 {value_to_sqrt} 的平方根近似值: {approx_sqrt}")
print(f"math.sqrt({value_to_sqrt}) 的结果: {math.sqrt(value_to_sqrt)}")

使用巴比伦算法计算的 5 的平方根近似值: 2.23606797749979
math.sqrt(5) 的结果: 2.23606797749979  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1958065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WordPress原创插件:搜索引擎抓取首图seo图片

WordPress原创插件&#xff1a;搜索引擎抓取首图seo图片 插件设置 插件将在网站头部添加适当的meta标签&#xff0c;以便百度等搜索引擎抓取指定的固定图像。 插件下载 https://download.csdn.net/download/huayula/89596527

[Meachines] [Easy] Friendzone LFI+Python-OS库污染权限提升

信息收集 IP AddressOpening Ports10.10.10.123TCP:21,22,53,80,139,443,445 $ nmap -p- 10.10.10.123 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.3 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Lin…

vue项目上线打包后出现的问题

1、出现空白页 1.1 打包路径&#xff1a; module.exports {publicPath:./, //修改为绝对路径 } 修改完打包路径后build可以展示页面 1.2 路由模式&#xff1a; 项目上线要求是history模式&#xff0c;需要后端做重定向 前端自测可以使用hash模式 2、代理和环境变量 问题…

信创系统上的数据加密和防泄露该如何对应?

随着信息技术的快速发展和数字化转型的深入推进&#xff0c;关于信创加密和信创防泄露的信息安全问题日益凸显。特别是在国家战略层面&#xff0c;推动自主可控的信息技术体系建设成为重中之重。深信达信创沙盒作为一款基于国产操作系统&#xff08;如麒麟、统信等&#xff09;…

Hugo 部署与自动更新(Git)

文章目录 Nginx部署Hugonginx.confhugo.conf Hugo自动更新Hugo自动更新流程添加访问令牌添加web hookrust实现自动更新接口 Nginx部署Hugo nginx.conf user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;even…

大模型系统学习路线

随着技术的进步&#xff0c;大模型如OpenAI的GPT-4和Sora、Google的BERT和Gemini等已经展现出了惊人的能力-从理解和生成自然语言到创造逼真的图像及视频。所以掌握大模型的知识和技能变得越来越重要。 下面是学习大模型的一些建议&#xff0c;供大家参考。 必备基础知识 **…

爬虫实战-掌上高考网实战

1.确定需求&#xff1a;爬取什么数据爬取大学名称 2.找到数据源地址数据在哪个链接中https://api.zjzw.cn/web/api/?keyword&page1&province_id&ranktype&request_type1&size20&top_school_id[3703,2461,659,3117,597,1724]&type&uriapidata/…

【NPU 系列专栏 2.6 -- - NVIDIA Xavier SoC】

文章目录 NVIDIA Xavier SoCXavier 主要组件Xavier SoC 的型号Xavier SoC 的算力Xavier AGXXavier NXXavier 应用场景自动驾驶机器人物联网(IoT)医疗设备NPU 对比SummaryNVIDIA Xavier SoC 英伟达 Xavier SoC 是英伟达推出的一款高性能系统级芯片,专门为人工智能(AI)和自…

c# - - - ASP.NET Core 网页样式丢失,样式不对

c# - - - ASP.NET Core 网页样式丢失&#xff0c;样式不对 问题 正常样式是这样的。 修改项目名后&#xff0c;样式就变成这样了。底部的内容跑到中间了。 解决 重新生成解决方案&#xff0c;然后发布网站。 原因&#xff1a; 修改项目名之前的 div 上有个这个自定义属…

Mysql开启远程控制简化版,亲测有效

首先关闭防火墙 改表法 打开上图的CMD&#xff0c;输入密码进入&#xff0c;然后输入一下指令 1.use mysql; 2.update user set host % where user root;//更新root用户的权限&#xff0c;允许任何主机连接 3.FLUSH PRIVILEGES;//刷新权限&#xff0c;使更改生效 具体参考…

详解 @RequestHeader 注解在 Spring Boot 中的使用

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…

JS+H5在线文心AI聊天(第三方接口)

源码在最后面 调用的不是文心官方接口 可以正常聊天 有打字动画 效果图 源代码 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-s…

文献笔记|综述|A Survey of Large Language Models (前3章)

A Survey of Large Language Models 题目&#xff1a;大语言模型综述 作者&#xff1a;Wayne Xin Zhao, Kun Zhou, Junyi Li et al. 来源&#xff1a;arXiv 单位&#xff1a;中国人民大学高瓴人工智能学院、中国人民大学信息学院 关键词&#xff1a;Large Language Models; Eme…

如何快速获取全网精准客流?揭秘不为人知的5大运营策略!

有同行所在的地方&#xff0c;就一定拥有咱们需要的客户。客户看的是结果&#xff0c;搜索的是问题&#xff0c;寻找的是答案。 如果没有付费流量&#xff0c;单纯靠搞免费流量&#xff0c;很多大厂的运营也会变得一文不值。一个牛逼的运营&#xff0c;不仅是会做付费流量&…

【Vue2】3-使用Vue脚手架

目录 初始化脚手架 说明 具体步骤 模板项目的结构 关于不同版本的Vue vue.config.js配置文件 ref属性 配置项props mixin&#xff08;混入&#xff09; 插件 scoped样式 总结TodoList案例 webStorage&#xff08;浏览器本地存储&#xff09; TodoList本地存储 组…

pp 5 报废 分派 替代

报废&#xff1a; 装配报废是关于成品的&#xff0c;会在生产订单自动增加数量&#xff0c;对组件有影响 但是在组件上面设置报废是不是影响成品物料的 注意&#xff1a;成品报废和组件报废数量会进行叠加的 但是物料主数据和bom同时设置报废率&#xff0c;不会叠加&#xff0…

python画蜡烛图

Claude3 Opus 在Python中&#xff0c;您可以使用各种绘图库来绘制蜡烛图&#xff0c;例如Matplotlib和Plotly。这里我以Matplotlib库为例&#xff0c;演示如何使用Python绘制蜡烛图。 首先&#xff0c;您需要安装并导入Matplotlib库。您可以使用以下命令来安装Matplotlib&…

字符串专题

1. 2. 3. 4.CtrlAltV自动生成左侧&#xff1b; 5.拼接字符串 6. 7.金额转换之CtrlAltT猛猛包裹 package 字符串; import java.util.Scanner; public class MoneyReverse {public static void main(String[] args) {//1.键盘录入一个金额Scanner sc new Scanner(System.in);i…

有关链表的oj题

203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;给出一个新的指针newnode来接收&#xff0c;cur遍历原truct ListNode* head&#xff0c;tail来接收 cur->val!val的值&#xff0c;最后返回newnode。 struct ListNode* removeElements(struct Li…

Transformer--编码器和解码器(包含掩码张量,注意力机制,多头注意力机制)

1.编码器介绍 2.掩码张量 2.1掩码张量介绍 2.2掩码张量的作用 2.3生成掩码张量的代码分 2.4掩码张量可视化 3.注意力机制 3.1什么是注意力机制 3.2注意力机制的作用 3.3计算规则以及代码分析 4.多头注意力机制 &#xff08;了解&#xff09; 4.1多头注意里机制的概念…