背景:用DeepSeek实践:欧拉乘积+黎曼猜想摘要:上图可视化了 ζ 函数在复平面上的映射变形,并展示 Re(s)=1/2 临界线上非平凡零点代码如下:import numpy as npfrom mpmath import zeta, zetazero, mpimport matplotlib.pyplot
为了实践以下视频的内容,折腾了python3. 就问了DeepSeek。
以下是DeepSeek的回答。我按照方法二实现了可视化与黎曼非平凡零点分布。
上图可视化了 ζ 函数在复平面上的映射变形,并展示 Re(s)=1/2 临界线上非平凡零点代码如下:import numpy as npfrom mpmath import zeta, zetazero, mp
import matplotlib.pyplot as plt
# 启用 mpmath 的快速浮点优化(加速计算)
mp.dps = 15# 设置计算精度(平衡速度与精度)
# 定义临界线附近的区域范围
real_min, real_max = 0.4, 0.6# Re(s) 范围
imag_min, imag_max = 0, 50# Im(s) 范围(前50高度内的零点)
# 生成网格点(降低密度以加速)
real_points = np.linspace(real_min, real_max, 30)
imag_points = np.linspace(imag_min, imag_max, 100)
s_grid = real_points[:, None] + 1j * imag_points[None, :]
# 定义映射函数(确保返回 Python 复数)
defzeta_mapping(s):
return complex(zeta(mp.mpc(s))) # 转换为 mpmath 复数计算,再转回 Python 复数
# 向量化计算(显式指定输出类型为复数)
zeta_values = np.vectorize(zeta_mapping, otypes=[complex])(s_grid)
# 绘制原始网格与 ζ 映射后的变形
plt.figure(figsize=(12, 6))
# 原始网格(左图)
plt.subplot(121)
plt.title("Original Grid near Re(s)=1/2")
plt.plot(s_grid.real, s_grid.imag, 'b', lw=0.3, alpha=0.7)
plt.plot(s_grid.real.T, s_grid.imag.T, 'b', lw=0.3, alpha=0.7)
plt.xlabel("Re(s)"), plt.ylabel("Im(s)")
# ζ 映射后的网格(右图)
plt.subplot(122)
plt.title("Deformed Grid by Zeta Mapping")
plt.plot(zeta_values.real, zeta_values.imag, 'r', lw=0.3, alpha=0.7)
plt.plot(zeta_values.real.T, zeta_values.imag.T, 'r', lw=0.3, alpha=0.7)
plt.xlabel("Re(zeta(s))"), plt.ylabel("Im(zeta(s))")
plt.grid(True, alpha=0.3)
# 添加非平凡零点
zeros = [complex(zetazero(n)) for n in range(1, 11)] # 前10个零点
# 在原始网格图标记零点
plt.subplot(121)
for s in zeros:
plt.scatter(s.real, s.imag, c='red', s=30, edgecolors='k', zorder=10)
# 在映射图标记零点对应的 ζ(s)(应接近原点)
plt.subplot(122)
for s in zeros:
z = zeta_mapping(s)
plt.scatter(z.real, z.imag, c='blue', s=30, edgecolors='k', zorder=10)
# 调整映射图的坐标范围以聚焦零点附近
plt.xlim(-5, 5)
plt.ylim(-5, 5)
plt.tight_layout
plt.show
在 macOS(包括 Apple M1 Pro 芯片)上解决 No module named 'mpmath' 的错误,需要确保 Python 环境中已正确安装 mpmath 库。以下是详细解决方案:步骤 1:安装 方法一:直接通过 pip 安装打开终端(Terminal)。输入以下命令安装 mpmath:pip3 install mpmath
如果提示权限错误,可添加 --user 参数安装到用户目录:pip3 install --user mpmath
方法二:使用虚拟环境(推荐)
在 Python 交互界面中测试导入 :# 打开终端,输入以下命令进入 Pythonpython3
# 在 Python 中测试导入
>>> import mpmath
>>> print(mpmath.__version__)
确保在安装 的环境中执行代码。例如:# 激活虚拟环境(如果使用)
source myenv/bin/activate
# 运行你的 Python 脚本
python3 your_script.py
步骤 4:解决常见问题
pip3安装 pip3(如果未安装):curl http://bootstrap.pypa.io/get-pip.py -o get-pip.pypython3 get-pip.py
2. M1 芯片兼容性问题
mpmath 是纯 Python 库,无需编译,兼容 Apple Silicon(M1/M2)。如果其他库报错(如需要编译的库),可参考 Apple 官方指南 或使用 conda 管理环境:# 安装 Miniforge(专为 M1 优化的 conda)brew install miniforge
conda create -n myenv python=3.9
conda activate myenv
conda install mpmath
3. 多版本 Python 冲突
确认 python3 和 pip3 指向同一版本:which python3 # 查看 Python 路径which pip3 # 查看 pip 路径
步骤 5:长期维护建议
每个项目单独创建虚拟环境,避免全局依赖冲突。记录依赖项:生成 requirements.txt:pip3 freeze > requirements.txt他人可通过以下命令安装依赖:pip3 install -r requirements.txt
更新库版本:pip3 install --upgrade mpmath
最终验证代码
运行以下代码测试是否成功:
from mpmath import zetazeron = 1
zero = zetazero(n)
print(f"第{n}个非平凡零点:s = 1/2 + {zero.imag}i")
预期输出:
第1个非平凡零点:s = 1/2 + 14.134725141734693i通过以上步骤,你可以解决 mpmath 模块缺失的问题,并为未来运行类似代码建立稳定的 Python 环境。用DeepSeek实践:欧拉乘积+黎曼猜想实践:超赞的Python数学动画库ManimManim:超赞的Python数学动画库暑假来了,终于有时间写一个自己的python游戏了在Python里想要四舍五入有多麻烦?基于交换的三种排序方法Python实现介绍一款强大的Python开发工具——Pycharm
来源:璐璐课堂
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!