当前位置: 首页 > 面试题库 >

为什么在使用python和numpy时sin(180)不是零?

李联
2023-03-14
问题内容

有人知道为什么下面的不等于0吗?

import numpy as np
np.sin(np.radians(180))

or:

np.sin(np.pi)

当我把它输入python时,它给出了1.22e-16。


问题答案:

数字“π”不能精确表示为浮点数。所以,
np.弧度(180)不是给你π',而是给你'3.1415926535897931
而“sin(3.1415926535897931)”实际上类似于“1.22e-16”。
那么,你是怎么处理的呢?
你必须算出,或者至少猜测出,适当的绝对值和/或
相对错误界限,然后,您可以写下以下内容,而不是“x==y”:


abs(y - x) < abs_bounds and abs(y-x) < rel_bounds * y

(这也意味着您必须组织计算,以便
相对误差相对于“y”大于相对于“x”。对你来说,因为
y'是常数'0',这很简单,只需反向操作即可。) Numpy提供了一个函数,可以跨整个数组执行此操作, [allclose`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.allclose.html):

np.allclose(x, y, rel_bounds, abs_bounds)

(这实际上检查“abs(y-x)<abs\uBounds+rel\u bounds*y)”,但这是
几乎总是足够的,而且您可以在
没有。)
在您的情况下:

np.allclose(0, np.sin(np.radians(180)), rel_bounds, abs_bounds)

那么,你怎么知道正确的界限是什么呢?没办法教你
在SO答案中进行足够的错误分析。[传播
不确定性在
维基百科提供了一个高层次的概述。如果你真的没有线索,你可以用
默认值为“1e-5”相对值和“1e-8”绝对值。



 类似资料:
  • 问题内容: 有谁知道为什么下面不等于0? 要么: 当我将其输入python时,它的值为1.22e-16。 问题答案: 该数字不能完全表示为浮点数。所以,不给你,它给你。 而其实类似。 那么,您如何处理呢? 您必须计算出或至少猜测出适当的绝对和/或相对误差范围,然后编写而不是: (这也意味着你要组织你的计算,使相对误差相对较大,而不是在你的情况,因为是恒定的,这是微不足道的,只是做了落后的。) Nu

  • 问题内容: 我正在使用Pythons模块进行编码。如果将3D空间中的点的坐标描述为,那不是三个维度,三个轴,三个等级吗?或者,如果那是一个维度,那它不应该是点(复数),而不是点吗? 这里是文档: 在Numpy中,尺寸称为轴。轴数为等级。例如,3D空间[1、2、1]中的点的坐标是等级1的数组,因为它具有一个轴。该轴的长度为3。 资料来源:http : //wiki.scipy.org/Tentati

  • 通过阅读HSL / HSV色彩理论,我得到的印象是色调分量是一个周期性属性,每360度重复一次,可以独立于饱和度和亮度/值而改变。如果我错了,请纠正我,但这些陈述在逻辑上遵循前面的定义: < li >将色调旋转360度会产生相同的颜色 < li >将色调旋转180度两次会产生原始颜色 < li >将色调旋转180度,然后旋转-180度,产生原始颜色 但是,只有选项 1 是正确的。将色调旋转 4 倍

  • 主要内容:NumPy使用需求,NumPy应用场景NumPy 的全称是“ Numeric Python”,它是 Python 的第三方扩展包,主要用来计算、处理一维或多维数组。 在数组算术计算方面, NumPy 提供了大量的数学函数。NumPy 的底层主要用 C语言编写,因此它能够高速地执行数值计算。NumPy 还提供了多种数据结构,这些数据结构能够非常契合的应用在数组和矩阵的运算上。 NumPy 的前身是 Numeric 程序包,该包由 Jim

  • 原文:What is NumPy? NumPy是Python中用于科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生的对象(如掩码数组和矩阵),以及数组快速操作的各种各样的例程,包括数学、逻辑、图形操作,排序、选择、I/O、离散傅里叶变换、基本线性代数、基本统计操作,随机模拟以及其他。 NumPy包的核心是ndarray对象。它封装了均匀数据类型的n维数组,带有一些在编译过的代码

  • 问题内容: 我的问题是为什么python为什么同时使用引用计数和gc的标记和清除?为什么不只是标记和扫描? 我最初的猜测是,使用引用计数可以轻松删除非循环引用的对象,这可能会在某种程度上加快标记扫掠并立即获得内存。不知道我的猜测是否正确? 有什么想法吗? 非常感谢。 问题答案: Python(语言)没有说明它使用哪种形式的垃圾收集。您描述的主要实现(通常称为CPython)。其他版本,例如Jyth