You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定的Mathematica代码转换为对应的Python代码?

Mathematica 随机游走+盒计数分形维计算的Python等效实现

你提供的Mathematica代码实现了二维随机游走生成+盒计数法求分形维度的功能,对应Python实现如下:


依赖安装

需要用到三个常用科学计算库,安装命令:
pip install numpy matplotlib scipy


完整实现代码

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import linregress

# 1. 生成二维随机游走,和原Mathematica逻辑完全对齐
n = 1000
steps = np.random.choice([-1, 1], size=(n, 2))
walk = np.cumsum(steps, axis=0)

# 2. 绘制随机游走路径
plt.figure(figsize=(8, 8))
plt.plot(walk[:, 0], walk[:, 1], linewidth=1)
plt.gca().set_aspect('equal', adjustable='box')
plt.title('二维随机游走路径')
plt.show()

# 3. 盒计数函数,和原Mathematica的BoxCount实现逻辑一致
def box_count(points, box_size):
    normalized_coords = np.floor(points / box_size)
    return len(np.unique(normalized_coords, axis=0))

# 4. 计算不同盒尺寸下的盒数量,做线性回归求分形维
sizes = 2 ** np.arange(0, 11)
counts = np.array([box_count(walk, s) for s in sizes])

x = np.log10(1 / sizes)
y = np.log10(counts)
fit_res = linregress(x, y)

print(f"拟合得到的分形维度:{fit_res.slope:.3f}")
print(f"拟合R²:{fit_res.rvalue**2:.3f}")

实现说明

  • 随机游走生成逻辑和原代码完全一致:每一步x、y方向独立取±1,累加得到路径坐标
  • 盒计数逻辑和原代码完全一致:将坐标按盒大小缩放后向下取整,统计不重复的盒坐标数量
  • 线性拟合结果和原Mathematica的LinearModelFit输出完全对齐,拟合直线的斜率即为所求的分形维度

内容的提问来源于stack exchange,提问作者user17511022

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:06:10