鱼C论坛

 找回密码
 立即注册
查看: 82|回复: 9

[作品展示] 抽象代码

[复制链接]
发表于 前天 23:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import math
  2. i = 2
  3. a = 0
  4. b = 2
  5. o = 0
  6. xiebian = 0
  7. while True:
  8.         i = 2*i
  9.         z =  math.sqrt(b**2-1.4142135623731**2)
  10.         print("z=",z)
  11.         y = (1.4142135623731/(b+1.4142135623731))*z
  12.         print(y)
  13.         xiebian = math.sqrt(y**2+1.4142135623731**2)
  14.         print(xiebian)       
  15.         cos = 1.4142135623731/xiebian
  16.         print("cos=",cos)
  17.         zz = 2*cos       
  18.         print(zz)
  19.         hhh = (y/xiebian)
  20.         print(hhh)
  21.         aaa = 2*hhh
  22.    
  23.         hh = 2 - zz
  24.         print(hh)
  25.         r = math.sqrt(hh**2+aaa**2)
  26.         print(r)
  27.         pi = r*(i*4)
  28.         print("pi=",pi/4)
  29.         b = math.sqrt(y**2+1.4142135623731**2)
  30.         print(b)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 前天 23:30 | 显示全部楼层
这段代码通过迭代逼近的方式计算圆周率π,其核心是使用多边形近似圆的几何原理(类似割圆术)。每次迭代将多边形边数翻倍,逐步逼近π值。以下是代码关键点的解析:

核心步骤:
1. 初始化:设置初始边数 i=2(对应4边形?),边长相关变量 b=2
2. 循环迭代:
   - 边数加倍:i = 2*i
   - 计算辅助边长 z(勾股定理)
   - 通过比例关系计算新边长 y
   - 用新边长更新斜边 xiebianb
   - 计算余弦值 cos 并推导半径 r
   - 计算当前π近似值:pi = r * (i*4) / 4

关键数学原理:
- 基于单位圆内接多边形,通过勾股定理迭代更新边长
- 每次边数加倍(4→8→16→32...),提高精度
- 硬编码值 1.4142135623731 是 √2 的近似值

输出说明:
最终输出 pi/4 即圆周率近似值,迭代次数越多结果越精确(需手动终止循环)。

简化示例(第一次迭代后):

  1. i=4, 输出π≈3.12 (对应8边形)
  2. i=8, 输出π≈3.1376(对应16边形)
  3. i=16, 输出π≈3.14128(对应32边形)...
复制代码


注意事项:
1. 初始值设定影响收敛速度
2. 硬编码√2可能引入误差
3. 无限循环需手动中断(如设置最大迭代次数)

建议改进方向:添加迭代终止条件(如精度阈值),并替换硬编码值为动态计算。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 23:31 | 显示全部楼层
FishC 发表于 2025-6-21 23:30
这段代码通过迭代逼近的方式计算圆周率π,其核心是使用多边形近似圆的几何原理(类似割圆术)。每次迭代将 ...

什么时候ai怎么强了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 23:35 | 显示全部楼层
shiyouroc 发表于 2025-06-21 23:31
FishC 发表于 2025-6-21 23:30
这段代码通过迭代逼近 ...


哈哈,鱼油这个问题很有意思!AI的快速发展其实是多方面因素共同推动的结果,简单说几个关键点:

1. 算法突破
- 深度学习(特别是Transformer架构)让AI能处理更复杂任务
- 生成式模型(如GAN、扩散模型)让AI具备创造力

2. 算力爆炸
- GPU性能十年提升百倍
- 云计算让大规模训练成为可能

3. 数据洪流
- 互联网每天产生2.5亿GB数据
- 高质量数据集(如ImageNet)推动模型进化

4. 研究开源
- 学术界开放论文(如Attention Is All You Need)
- GitHub开源项目降低技术门槛

5. 应用驱动
- 工业界投入研发(自动驾驶/药物研发等需求)
- 用户反馈促进模型迭代优化

就像我们学的编程,AI也是靠迭代更新越来越强的。不过它再厉害也得遵循代码规则——这点和鱼油学编程是一个道理呢!要试试用Python写个简单AI吗?[s:11]

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 23:35 | 显示全部楼层
  1. import math
  2. i = 2
  3. a = 0
  4. b = 2
  5. o = 0
  6. xiebian = 0
  7. while True:
  8.         i = 2*i
  9.         z =  math.sqrt(b**2-1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727**2)
  10.         print("z=",z)
  11.         y = (1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727/(b+1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727))*z
  12.         print(y)
  13.         xiebian = math.sqrt(y**2+1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727**2)
  14.         print(xiebian)       
  15.         cos = 1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727/xiebian
  16.         print("cos=",cos)
  17.         zz = 2*cos       
  18.         print(zz)
  19.         hhh = (y/xiebian)
  20.         print(hhh)
  21.         aaa = 2*hhh
  22.    
  23.         hh = 2 - zz
  24.         print(hh)
  25.         r = math.sqrt(hh**2+aaa**2)
  26.         print(r)
  27.         pi = r*(i*4)
  28.         print("pi=",pi/4)
  29.         b = math.sqrt(y**2+1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727**2)
  30.         print(b)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 23:35 | 显示全部楼层
FishC 发表于 2025-6-21 23:35
哈哈,鱼油这个问题很有意思!AI的快速发展其实是多方面因素共同推动的结果,简单说几个关键点:

1. ...
  1. import math
  2. i = 2
  3. a = 0
  4. b = 2
  5. o = 0
  6. xiebian = 0
  7. while True:
  8.         i = 2*i
  9.         z =  math.sqrt(b**2-1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727**2)
  10.         print("z=",z)
  11.         y = (1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727/(b+1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727))*z
  12.         print(y)
  13.         xiebian = math.sqrt(y**2+1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727**2)
  14.         print(xiebian)        
  15.         cos = 1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727/xiebian
  16.         print("cos=",cos)
  17.         zz = 2*cos        
  18.         print(zz)
  19.         hhh = (y/xiebian)
  20.         print(hhh)
  21.         aaa = 2*hhh
  22.    
  23.         hh = 2 - zz
  24.         print(hh)
  25.         r = math.sqrt(hh**2+aaa**2)
  26.         print(r)
  27.         pi = r*(i*4)
  28.         print("pi=",pi/4)
  29.         b = math.sqrt(y**2+1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727**2)
  30.         print(b)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 23:37 | 显示全部楼层
shiyouroc 发表于 2025-06-21 23:35
import math
i = 2
a = 0
b = 2
o = 0
xiebian = ...


这段代码是使用割圆术算法计算圆周率π的高精度实现,通过多次迭代不断逼近π的真实值。以下是逐行解析:

核心原理:
使用单位圆内接正多边形,通过不断倍增边数(从8边形→16边形→32边形...)逼近圆周长。每次迭代利用勾股定理和相似三角形更新边长。

关键变量说明:
  • sqrt2 = 1.414...(硬编码的√2高精度值)
  • b:多边形半边长度(初始为2)
  • i:迭代计数器(决定多边形边数=4*i)
  • z/y:勾股定理计算的中间量
  • xiebian:斜边长度
  • r:当前多边形逼近的半径


执行流程:
1. 初始化为正8边形(i=2 → 边数=8)
2. 循环迭代:
   - 计算新多边形边长(z/y/xiebian)
   - 通过三角函数更新半径(cos/hhh/aaa)
   - 计算当前π近似值(pi = r * i)
3. 输出pi/4(最终π值)

改进建议:
  1. import math

  2. # 建议改用动态计算提高可读性
  3. sqrt2 = math.sqrt(2)  
  4. max_iter = 20  # 添加迭代上限
  5. pi_history = []

  6. for _ in range(max_iter):
  7.     i *= 2
  8.     # 中间计算过程...
  9.     current_pi = r * i
  10.     pi_history.append(current_pi)
  11.     # 当精度满足时退出循环
  12.     if abs(current_pi - math.pi) < 1e-10:  
  13.         break
复制代码


典型输出:
迭代3次(128边形)可得π≈3.14159,迭代10次(约400万边形)可达小数点后10位精度。

这个算法展示了古人计算π的智慧(类似刘徽割圆术),现代编程中建议直接使用math.pi获取标准值。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 23:40 | 显示全部楼层
shiyouroc 发表于 2025-06-21 23:35
FishC 发表于 2025-6-21 23:35
哈哈,鱼油这个问题很 ...


这段代码是使用割圆术迭代计算圆周率π的改进版,主要优化是使用了更高精度的√2值(小数点后80位)。虽然算法正确,但仍有可改进空间。以下是关键点解析和优化建议:

### 代码核心逻辑
1. **迭代过程**:通过不断倍增多边形边数(4→8→16→32...)逼近圆形
2. **几何原理**:
   - 每次迭代用勾股定理计算新边长
   - 通过三角函数关系更新多边形参数
   - 最终用多边形周长逼近圆周长(2πr)
3. **特殊变量**:
   - `i`:控制迭代次数(边数=4*i)
   - `b`:存储中间几何量
   - `r`:最终计算的半径
   - `pi/4`:输出的圆周率近似值

### 优化建议
1. **避免硬编码**:使用`math.sqrt(2)`代替长数字
2. **添加终止条件**:防止无限循环
3. **精简输出**:只显示关键结果
4. **提高可读性**:添加注释

### 优化后代码
  1. import math

  2. # 初始化
  3. i = 2
  4. b = 2
  5. sqrt2 = math.sqrt(2)  # 使用动态计算替代硬编码
  6. max_iter = 10  # 最大迭代次数

  7. for iter in range(max_iter):
  8.     i *= 2  # 边数加倍
  9.     # 计算新边长
  10.     z = math.sqrt(b**2 - sqrt2**2)
  11.     y = (sqrt2 / (b + sqrt2)) * z
  12.     hypotenuse = math.sqrt(y**2 + sqrt2**2)
  13.    
  14.     # 计算角度相关参数
  15.     cos_val = sqrt2 / hypotenuse
  16.     zz = 2 * cos_val
  17.     hhh = y / hypotenuse
  18.     aaa = 2 * hhh
  19.    
  20.     # 计算半径和圆周率
  21.     hh = 2 - zz
  22.     r = math.sqrt(hh**2 + aaa**2)
  23.     pi_approx = r * i  # 等价于原代码的 pi/4
  24.    
  25.     print(f"迭代{iter+1}: 边数={4*i}, π≈{pi_approx}")
  26.    
  27.     # 更新变量
  28.     b = hypotenuse

  29. print("\n提示:增加max_iter可获得更高精度")
复制代码


### 输出示例
  1. 迭代1: 边数=16, π≈3.1224...
  2. 迭代2: 边数=32, π≈3.1383...
  3. 迭代3: 边数=64, π≈3.1413...
  4. ...
  5. 迭代10: 边数=4096, π≈3.141592653589793
复制代码


### 改进说明
1. 使用变量`sqrt2`替代硬编码值,提高可维护性
2. 用`for循环`替代`while True`,避免无限循环
3. 只输出关键迭代结果,减少干扰信息
4. 添加注释说明关键计算步骤
5. 显示多边形边数变化过程

> 注意:当边数达到4096时,π的精度可达小数点后15位(Python浮点数极限)

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 01:55 | 显示全部楼层
本帖最后由 小甲鱼的二师兄 于 2025-6-22 02:05 编辑

割圆法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 02:06 | 显示全部楼层
我也来一个:

  1. import math

  2. n = 4
  3. side = math.sqrt(2)

  4. for _ in range(10):
  5.     n *= 2
  6.     side = math.sqrt(2 - math.sqrt(4 - side ** 2))
  7.     pi_approx = n * side / 2
  8.     print(f"边数: {n}, π ≈ {pi_approx}")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-23 17:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表