Dha*_*iya 6 python numpy python-2.7
我正在学习使用python进行数值计算.我想用中心差分法计算导数.当我尝试设置我的间隔dx时,即使实际值为(1/6),python也会将其设为0?有什么办法摆脱这个?
这是代码:
import numpy as np
import matplotlib.pyplot as plt
a = 0
b = 1
n = 7
dx = np.float(((b-a)/n))
x = np.linspace(a,b,n)
xpp = np.zeros(n)
for ii in range(1,n-1):
xpp[ii] = (x[ii-1] - 2*x[ii+1] + x[ii+1])/(pow(dx,2))
print xpp
Run Code Online (Sandbox Code Playgroud)
在Python 2.7中,整数除法会floor
:
>>> a = 0
>>> b = 1
>>> n = 7
>>> (b - a) / n
0
Run Code Online (Sandbox Code Playgroud)
=> dx
成为0.0
=>在for
循环体内,它用作分隔符。(0 2 = 0)
您需要将一个(或两个)操作数转换为浮点数以防止地板分割:
>>> float(b - a) / n
0.14285714285714285
Run Code Online (Sandbox Code Playgroud)