【发布时间】:2016-11-01 00:53:52
【问题描述】:
我正在尝试使用 SageMath Cloud 绘制 3D 表面,但我遇到了一些麻烦,因为 matplotlib 的文档似乎不是很详尽,并且缺少示例。无论如何,我编写的程序是绘制我从分析方法中得到的热方程解。
案例是: Heat Equation
这是我的代码:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from sympy import *
from math import *
x = np.linspace(-8, 8, 100)
t = np.linspace(-8, 8, 100)
n = symbols('n', integer=True)
X, T = np.meshgrid(x, t)
an = float(2 / 10) * integrate(50 * sin(radians((2 * n + 1) * pi * x / 20)), (x, 0, 10))
Z = summation(an * e**(2 * n + 1 / 20)**2*pi**2*t * sin(radians((2 * n + 1) * pi * x / 20)), (n, 0, oo))
fig = plt.figure()
ax = fig.gca(projection = '3d')
surf = ax.plot_surface(X, T, Z,
rstride = 3,
cstride = 3,
cmap = cm.coolwarm,
linewidth = 0.5,
antialiased = True)
fig.colorbar(surf,
shrink=0.8,
aspect=16,
orientation = 'vertical')
ax.view_init(elev=60, azim=50)
ax.dist=8
plt.show()
当我运行代码来绘制图表时出现此错误:“第 7-7 行中的错误 回溯(最近一次通话最后): 文件“/projects/sage/sage-7.3/local/lib/python2.7/site-packages/smc_sagews/sage_server.py”,第 968 行,在执行 exec compile(block+'\n', '', 'single') 在命名空间,locals 文件“”,第 1 行,在 文件“/projects/sage/sage-7.3/local/lib/python2.7/site-packages/numpy/core/function_base.py”,第 93 行,在 linspace dt = result_type(开始,停止,浮动(数字)) TypeError: 数据类型不理解”
非常感谢任何和所有帮助。我认为出现错误是因为我定义了x = np.linspace(-8, 8, 100) 和t = np.linspace(-8, 8, 100) 但必须让原始程序运行。我不确定如何更正此问题,以便正确绘制图表。谢谢!
【问题讨论】:
-
您真的在使用 Sage 本身吗?或者只是 SageMathCloud 笔记本/Jupyter 笔记本中的纯 Python?如果是前者,请切换到后者,这可能会解决任何命名空间或预处理冲突。
-
里面只有一个纯Python。切换到后者是什么意思?
-
我的意思是,如果您使用的是 Sage 而不是 pure Python,那么有一些内置插件或准备程序可能会搞砸。可能
-8等被解释为 Sage 整数,np 不会理解。尝试将int放在所有这些整数周围。
标签: python matplotlib plot sage