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

连分式

        连分式(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 mathdef fraction_to_continued_fraction(numerator, denominator, max_terms):"""计算一个分数的连分式表示。参数:numerator (int): 分数的分子。denominator (int): 分数的分母。max_terms (int): 连分式表示的最大项数。返回:list: 连分式的部分分母组成的列表。"""coefficients = []current_numerator = numeratorcurrent_denominator = denominatorwhile current_denominator != 0 and len(coefficients) < max_terms:quotient = current_numerator // current_denominatorcoefficients.append(quotient)remainder = current_numerator % current_denominatorcurrent_numerator, current_denominator = current_denominator, remainderreturn coefficientsdef continued_fraction_to_decimal(coefficients):"""将连分式转换为十进制表示的数字。参数:coefficients (list): 连分式的部分分母组成的列表。返回:float: 连分式对应的十进制数。"""if not coefficients:return 0.0decimal_value = coefficients[-1]for coefficient in reversed(coefficients[:-1]):decimal_value = 1 / decimal_value + coefficientreturn decimal_valuedef 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_partcoefficients.append(integer_part)while fractional_part > error_tolerance and len(coefficients) < max_terms:reciprocal = 1 / fractional_partnext_term = int(reciprocal)coefficients.append(next_term)fractional_part = reciprocal - next_termcurrent_decimal = continued_fraction_to_decimal(coefficients)if abs(current_decimal - x) < error_tolerance:breakreturn coefficientsif __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 mathdef 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 mathdef babylonian_sqrt(value, initial_guess, tolerance):"""使用巴比伦算法计算平方根的近似值。参数:value (float): 要求平方根的数。initial_guess (float): 初始猜测值。tolerance (float): 误差容忍度。返回:float: 近似的平方根值。"""current_error = tolerance * 2  # 初始设置一个较大的误差值guess = initial_guesswhile current_error > tolerance:quotient = value / guessnew_guess = (guess + quotient) / 2current_error = abs(new_guess**2 - value)guess = new_guessreturn guess# 测试平方根计算
value_to_sqrt = 5
initial_guess = 1
tolerance = 1e-15approx_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.mzph.cn/pingmian/51587.shtml

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

相关文章

【无标题】web+http协议+nginx搭建+nginx反向代理(环境准备)

一&#xff0e;Web 为用户提供互联网上浏览信息的服务&#xff0c;web服务是动态的&#xff0c;可交互的。 1.安装httpd yum -y install httpd 2.启动 systemctl start httpd 3.关闭防火墙 systemctl stop firewalld [rootrs html]# echo "我手机号是" > …

如何在 cPanel 上更改主共享 IP 地址

cPanel & WHM的主共享IP地址是服务器上新建虚拟主机账户时的默认IP地址。这使得主机服务商能够轻松创建新账户&#xff0c;并简化原本复杂且耗时的域名和网络服务器配置过程。但如果你想更改cPanel服务器的主共享IP地址&#xff0c;该怎么办呢&#xff1f; 本文将概述更改服…

PHP经销商订货管理系统小程序源码

经销商订货管理系统&#xff1a;重塑供应链效率的利器 &#x1f680; 开篇&#xff1a;解锁供应链管理的新纪元 在竞争激烈的商业环境中&#xff0c;经销商作为供应链的关键一环&#xff0c;其订货效率直接影响到整个供应链的流畅度和响应速度。传统的订货方式往往繁琐、易出…

精品PPT | 云原生大数据平台构建及落地实践.pptx

1、监控和可观测性的关系及渊源 2、当前阶段落地可观测性的挑战在哪里 3、落地好一个可观测系统的三大要素 4、面向故障处理过程的可观测性体系建设案例 5、思考&#xff1a;人工智能2.0对可观测性技术和产品演进的影响

YOLO入门教程(一)——训练自己的模型【含教程源码 + 故障排查】

目录 引言前期准备Step1 打标训练Step2 格式转换Step3 整理训练集Step4 训练数据集4.1创建yaml文件4.2训练4.3故障排查4.3.1OpenCV版本故障&#xff0c;把OpenCV版本升级到4.0以上4.3.2NumPy版本故障&#xff0c;把NumPy降低版本到1.26.44.3.3没有安装ultralytics模块4.3.4Aria…

Web 安全:Memcached 未授权访问漏洞.(11211端口)

Web 安全&#xff1a;Memcached 未授权访问漏洞 Memcached 是一套常用的 key-value 缓存系统&#xff0c;由于它本身没有权限控制模块&#xff0c;所以对公网开放的 Memcache 服务很容易被攻击者扫描发现。然而 Memcached 的默认配置&#xff0c;11211 端口 不需要密码即可访问…

ROUND() Function in SQL(四舍五入)

ROUND() Function in SQL ROUND() 函数用于将数值四舍五入到指定的小数位数或者整数位数。 不同的数据库系统可能会有一些细微的语法差异&#xff0c;但基本功能都是一致的。 1. 基本语法 ROUND(number, decimal_places)number: 要进行四舍五入的数值。decimal_places: 可选参…

Spring事件监听的核心机制及其原理

Spring事件监听 Spring的事件监听机制主要由三大核心部分组成即事件&#xff0c;监听器和播放器三部分组成。 事件的发布是通过spring当中的pulishEvent方法实现。事件监听实现是通过监听器监听了对应事件的监听器来实现的。 事件监听的作用&#xff1a;为系统业务之间进行一…

1、AI测试辅助-提示词优化

AI测试辅助-提示词优化 一、基本规则二、提示词优化技巧&#xff1a;2.1 Prompt 逆向工程2.2 提示词框架2.2.1 CO-STAR 框架 2.3 提示词生成器 三、总结 一、基本规则 写提示词有个通用的基本规则&#xff0c;遵循这个规则基本上能解决大部分的问答&#xff1a; 角色任务要求 …

2024经济师考试报名『注册流程』图解!

⏰报名时间&#xff1a;8月12日—9月11日 ☑️报名注册流程 1、经济师考试报名注册网站&#xff1a;中国人事考试网. 2、点击考生登录栏目中的【新用户注册】按钮&#xff0c;进行注册。 3、进入用户注册界面&#xff0c;填写注册信息。 4、填写完毕确认无误后点击【提交】&…

thinkPHP开发的彩漂网站源码,含pc端和手机端

源码简介 后台thinkPHP架构,页面程序双分离,Mysql数据库严谨数据结构、多重数据审核机制、出票机制和监控机制,html5前端技术适用移动端,后台逻辑更多以server接口可快捷实现对接pc和ap,下载会有少量图片素材丢失,附件有下载说明前端demo账户密码和后台管理地址管理员账户密码…

【C++】C++11的新特性 --- lambda表达式 ,新的类功能,模块的可变参数 , emplace系列接口

如果你停止,就是谷底! 如果你还在继续,就是上坡! 这是我听过关于人生低谷最好的阐述。 -- 刘同 C11的新特性 1 lambda表达式1.1 基本用法1.2 细谈参数列表与捕捉列表 2 新的类功能2.1 移动构造与移动赋值2.2 default和delete 3 模块的可变参数4 emplace系列接口Thanks♪(&…

C语言:指针(1)

一. 内存和地址 比如&#xff0c;我们的内存就相当⼀栋宿舍楼&#xff0c;楼里有很多的房间&#xff0c;每个房间都有一个房间号&#xff0c;每个房间里都住着8个人。这时如果你的朋友想要来找你&#xff0c;我们只需要把房间号告诉他就能快速的找到我们。 然而&#xff0c;&…

Stable Diffusion 提示词攻略

一、提示词作用 提示词所做的工作是缩小模型出图的解空间&#xff0c;即缩小生成内容时在模型数据里的检索范围&#xff0c;而非直接指 定作画结果。 提示词的效果也受模型的影响&#xff0c;有些模型对自然语言做特化训练&#xff0c;有些模型对单词标签对做特化训练&#xf…

负债了,打死也别干的六件事!逾期了,六句谎言千万别信!

负债这事儿&#xff0c;真是一言难尽&#xff0c;稍不留神&#xff0c;就可能让情况雪上加霜。今儿咱们聊聊&#xff0c;负债后那几件打死也别干的几件事&#xff0c;尤其是针对还没有逾期的朋友们&#xff0c;免得后悔莫及。 首先&#xff0c;千万别动歪脑筋&#xff0c;拿公款…

【Golang 面试 - 基础题】每日 5 题(十)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

YOLOV8-人员越界识别

原文:YOLOV8-人员越界识别 - 知乎 (zhihu.com) 一、人员越界识别背景描述 实际生活中某些场景下需要配合摄像头自动识别危险区域,并在发现有人员闯入危险区域(禁止进入区域)时进行报警。翻越围墙监测预警系统对监控区域内的护栏、围墙设定警戒围墙区域,一旦有可疑人员靠…

springboot电子产品销售系统-计算机毕业设计源码80294

摘 要 电子商务行业在全球范围内迅速发展&#xff0c;随之而来的是电子产品销售市场的快速增长和消费者对在线购物体验的需求提升&#xff0c;因此&#xff0c;电子产品销售系统应运而生。该系统旨在满足电子产品市场的需求&#xff0c;提供全面的购物功能和高效的管理操作。 …

高级及架构师高频面试题-基础型

1、设计模式有哪些原则&#xff08;待解释的更直白&#xff09; 单一职责原则&#xff1a;一个类或方法应只负责一项职责&#xff0c;避免一个类因为多个变化原因而改变。开闭原则&#xff1a;软件实体应对扩展开放&#xff0c;对修改封闭。比如要增加用户类别的时候可以新增一…

校车购票小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;我的乘车信息管理&#xff0c;车辆信息管理&#xff0c;座位管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;车辆信息&#xff0c;我的 开发系统…