导数计算中的双标量除零

2024-05-28 19:55:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习使用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

Tags: 代码importnumpy间隔matplotlibasnp中心
2条回答

您还可以在future下面导入以避免楼层划分。

from __future__ import division

在Python 2.7中,整数除法做floor

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

=>;dx变成0.0=>;在for循环体中,它用作dividor。(02=0)

您需要将一个(或两个)操作数转换为浮点,以防止地板分割:

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

相关问题 更多 >

    热门问题