python - 在 double_scalars 中遇到除以零进行导数计算

标签 python python-2.7 numpy

我正在学习使用 Python 进行数值计算。我想用中心差分法计算导数。当我尝试设置我的间隔 dx 时,python 将它设为 0,即使实际值为 (1/6)?有什么办法可以解决这个问题?

代码如下:

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

最佳答案

在 Python 2.7 中,整数除法执行 floor:

>>> a = 0
>>> b = 1
>>> n = 7
>>> (b - a) / n
0

=> dx 变成0.0 => 在for 循环体内,它被用作除数。 (02 = 0)

您需要将一个(或两个)操作数转换为 float 以防止 floor-division:

>>> float(b - a) / n
0.14285714285714285

关于python - 在 double_scalars 中遇到除以零进行导数计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34326722/

相关文章:

python - Python 中的双哈希 SHA256

python - 将项目添加到 Python 词典时删除冗余

python - 在 Flask 中使用 root_path 参数

python - 如何在 Python 中应用分段线性拟合?

python:通过从列表中排除特定值来创建随机值

python - 为什么 python 类属性的语义在分配给实例后会发生变化?

python - 从字符串中提取前 3 个单词

python - 从 Python 发送 Outlook 2010 电子邮件

python-2.7 - 决定 pip 和 easy_install 使用哪个 python 版本

python - 最后一行代码是什么意思,x1[ x1[ :, 1]>3 ]