使用python 2.7.12运行python脚本无法提供预期的答案。但是,使用python 3.5.2运行它确实可以。
我安装了Ubuntu 16.04和python 2.7.12(默认)以及python 3.5.2
我已经在另一台装有python 2.7.12的Linux机器上运行了脚本,问题是相同的。
我认为问题在于用于计算变量的for循环(脚本中的y)。似乎它没有更新。
from numpy import *
from matplotlib.pyplot import *
import seaborn as sns
sns.set_style('whitegrid')
x0=0
y0=1
xf=10
n=101
deltax=(xf-x0)/(n-1)
x=linspace(x0,xf,n)
y=zeros([n])
y[0]=y0
for i in range(1,n):
y[i] = deltax*(-y[i-1] + sin(x[i-1])) +y[i-1]
for i in range(n):
print(x[i],y[i])
plot(x,y,'o')
show()
期待一个正弦函数图。
python 3.5.2绘制正弦函数,但是 python 2.7.12绘制一条平坦的水平线。
答案 0 :(得分:3)
您的问题在这里
deltax=(xf-x0)/(n-1)
/
运算符在Python 3和Python 2之间有所不同。 here和PEP238
在Python 2中,两个整数之间的/
执行整数除法。在Python 3中,它执行浮点除法。意思是对于Python 2
deltax = (xf - x0) / (n - 1) = (10 - 0) / 100 == 0
在Python 3中
deltax = (xf - x0) / (n - 1) = (10 - 0) / 100 == 0.1
如果要在Python 2中进行浮点除法,则需要请求它,例如
deltax = (xf - x0) / float(n - 1)