抽象代码
import mathi = 2
a = 0
b = 2
o = 0
xiebian = 0
while True:
i = 2*i
z =math.sqrt(b**2-1.4142135623731**2)
print("z=",z)
y = (1.4142135623731/(b+1.4142135623731))*z
print(y)
xiebian = math.sqrt(y**2+1.4142135623731**2)
print(xiebian)
cos = 1.4142135623731/xiebian
print("cos=",cos)
zz = 2*cos
print(zz)
hhh = (y/xiebian)
print(hhh)
aaa = 2*hhh
hh = 2 - zz
print(hh)
r = math.sqrt(hh**2+aaa**2)
print(r)
pi = r*(i*4)
print("pi=",pi/4)
b = math.sqrt(y**2+1.4142135623731**2)
print(b) 这段代码通过迭代逼近的方式计算圆周率π,其核心是使用多边形近似圆的几何原理(类似割圆术)。每次迭代将多边形边数翻倍,逐步逼近π值。以下是代码关键点的解析:
核心步骤:
1. 初始化:设置初始边数 i=2(对应4边形?),边长相关变量 b=2
2. 循环迭代:
- 边数加倍:i = 2*i
- 计算辅助边长 z(勾股定理)
- 通过比例关系计算新边长 y
- 用新边长更新斜边 xiebian 和 b
- 计算余弦值 cos 并推导半径 r
- 计算当前π近似值:pi = r * (i*4) / 4
关键数学原理:
- 基于单位圆内接多边形,通过勾股定理迭代更新边长
- 每次边数加倍(4→8→16→32...),提高精度
- 硬编码值 1.4142135623731 是 √2 的近似值
输出说明:
最终输出 pi/4 即圆周率近似值,迭代次数越多结果越精确(需手动终止循环)。
简化示例(第一次迭代后):
i=4, 输出π≈3.12 (对应8边形)
i=8, 输出π≈3.1376(对应16边形)
i=16, 输出π≈3.14128(对应32边形)...
注意事项:
1. 初始值设定影响收敛速度
2. 硬编码√2可能引入误差
3. 无限循环需手动中断(如设置最大迭代次数)
建议改进方向:添加迭代终止条件(如精度阈值),并替换硬编码值为动态计算。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2025-6-21 23:30
这段代码通过迭代逼近的方式计算圆周率π,其核心是使用多边形近似圆的几何原理(类似割圆术)。每次迭代将 ...
什么时候ai怎么强了 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吗?
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 import math
i = 2
a = 0
b = 2
o = 0
xiebian = 0
while True:
i = 2*i
z =math.sqrt(b**2-1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727**2)
print("z=",z)
y = (1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727/(b+1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727))*z
print(y)
xiebian = math.sqrt(y**2+1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727**2)
print(xiebian)
cos = 1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727/xiebian
print("cos=",cos)
zz = 2*cos
print(zz)
hhh = (y/xiebian)
print(hhh)
aaa = 2*hhh
hh = 2 - zz
print(hh)
r = math.sqrt(hh**2+aaa**2)
print(r)
pi = r*(i*4)
print("pi=",pi/4)
b = math.sqrt(y**2+1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727**2)
print(b) FishC 发表于 2025-6-21 23:35
哈哈,鱼油这个问题很有意思!AI的快速发展其实是多方面因素共同推动的结果,简单说几个关键点:
1. ...
import math
i = 2
a = 0
b = 2
o = 0
xiebian = 0
while True:
i = 2*i
z =math.sqrt(b**2-1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727**2)
print("z=",z)
y = (1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727/(b+1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727))*z
print(y)
xiebian = math.sqrt(y**2+1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727**2)
print(xiebian)
cos = 1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727/xiebian
print("cos=",cos)
zz = 2*cos
print(zz)
hhh = (y/xiebian)
print(hhh)
aaa = 2*hhh
hh = 2 - zz
print(hh)
r = math.sqrt(hh**2+aaa**2)
print(r)
pi = r*(i*4)
print("pi=",pi/4)
b = math.sqrt(y**2+1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727**2)
print(b) 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(最终π值)
改进建议:
import math
# 建议改用动态计算提高可读性
sqrt2 = math.sqrt(2)
max_iter = 20# 添加迭代上限
pi_history = []
for _ in range(max_iter):
i *= 2
# 中间计算过程...
current_pi = r * i
pi_history.append(current_pi)
# 当精度满足时退出循环
if abs(current_pi - math.pi) < 1e-10:
break
典型输出:
迭代3次(128边形)可得π≈3.14159,迭代10次(约400万边形)可达小数点后10位精度。
这个算法展示了古人计算π的智慧(类似刘徽割圆术),现代编程中建议直接使用math.pi获取标准值。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 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. **提高可读性**:添加注释
### 优化后代码
import math
# 初始化
i = 2
b = 2
sqrt2 = math.sqrt(2)# 使用动态计算替代硬编码
max_iter = 10# 最大迭代次数
for iter in range(max_iter):
i *= 2# 边数加倍
# 计算新边长
z = math.sqrt(b**2 - sqrt2**2)
y = (sqrt2 / (b + sqrt2)) * z
hypotenuse = math.sqrt(y**2 + sqrt2**2)
# 计算角度相关参数
cos_val = sqrt2 / hypotenuse
zz = 2 * cos_val
hhh = y / hypotenuse
aaa = 2 * hhh
# 计算半径和圆周率
hh = 2 - zz
r = math.sqrt(hh**2 + aaa**2)
pi_approx = r * i# 等价于原代码的 pi/4
print(f"迭代{iter+1}: 边数={4*i}, π≈{pi_approx}")
# 更新变量
b = hypotenuse
print("\n提示:增加max_iter可获得更高精度")
### 输出示例
迭代1: 边数=16, π≈3.1224...
迭代2: 边数=32, π≈3.1383...
迭代3: 边数=64, π≈3.1413...
...
迭代10: 边数=4096, π≈3.141592653589793
### 改进说明
1. 使用变量`sqrt2`替代硬编码值,提高可维护性
2. 用`for循环`替代`while True`,避免无限循环
3. 只输出关键迭代结果,减少干扰信息
4. 添加注释说明关键计算步骤
5. 显示多边形边数变化过程
> 注意:当边数达到4096时,π的精度可达小数点后15位(Python浮点数极限)
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 本帖最后由 小甲鱼的二师兄 于 2025-6-22 02:05 编辑
{:10_256:} 割圆法 我也来一个:
import math
n = 4
side = math.sqrt(2)
for _ in range(10):
n *= 2
side = math.sqrt(2 - math.sqrt(4 - side ** 2))
pi_approx = n * side / 2
print(f"边数: {n}, π ≈ {pi_approx}")
页:
[1]