python - 意外的小数位数和语法查询

标签 python numpy

我试图找到曲线 $ y= x^2+3x+2 $ 和 $ y=x^2+2x+1$ 之间的交点。为此,我编写了以下 python 程序:

from numpy import *
import numpy as np
for x in np.arange(-100, 100, 0.0001):
    y_1=x**2+3*x+2
    y_2=x**2+2*x+1
    if round(y_1, 5)==round(y_2,5):
        print x
print 'end'

控制台显示:

-0.999999996714
end

我有三个问题。

1) 为什么我必须在声明?为什么我不能简单地将它们包含在 from numpy import* 行之后?

2) 当我将np.arange中的步骤指定为小数点后4位时,为什么输出为小数点后12位?

3)为什么不输出-1.0000?

请对我宽容一点,我刚刚开始使用 python,我想尝试用它来解决一些联立方程。

谢谢

jack

最佳答案

  1. 因为 y_1y_2 行正在计算特定值,而不是定义函数。普通 Python 没有内置的符号方程概念。 (尽管您可以通过多种方式实现符号方程。)
  2. 因为 Python 中使用的二进制 float 无法精确表示 0.0001(以 10 为底)。因此,步数是四舍五入的,所以你的步数并不完全是万分之一。 Python print 语句不会四舍五入,因为没有具体的指令来执行此操作,因此您可以准确地获得系统正在使用的值,即使这并不完全是您要求的值。
  3. 同样的原因:由于步长不完全是千分之一,因此函数足够接近以在四舍五入下测试为相等的点并不完全位于 -1。

关于python - 意外的小数位数和语法查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39577927/

相关文章:

python - 了解数据集的香农熵

python - 无序复数浮点集的近似相等

python - 如果向用户定义的类传递形状不正确的数组,则使用 python 引发异常

python - 将绘图添加到 matplotlib 中的给定图形

python - 我如何在不事先下载和转换的情况下将音频从 pytube 流式传输到 FFMPEG 和 discord.py

python - Python设置父类子类自动继承

python - 在数据框/二维数组中查找元组的行平均值

python - 将 GeoTIFF 图像划分为规则网格并计算平均值

python - 如何使用 python 替换大型二维数组中存在的所有匹配数组?

audio - 缩小FFT频谱范围