- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Julia 中的 isapprox()
函数用于测试两个数字或数组是否近似相等。我希望能够测试任何所需数量的有效数字的近似相等性。正如下面的代码示例所示,近似值的公差要么以绝对值给出,要么以相对(百分比)偏差给出。
# Syntax
isapprox(a, b; atol = <absolute tolerance>, rtol = <relative tolerance>)
# Examples
# Absolute tolerance
julia> isapprox(10.0,9.9; atol = 0.1) # Tolerance of 0.1
true
# Relative tolerance
julia> isapprox(11.5,10.5; rtol = 0.1) # Rel. tolerance of 10%
true
julia> isapprox(11.4,10.5; rtol = 0.01) # Rel. tolerance of 1%
false
julia> isapprox(98.5, 99.4; rtol = 0.01) # Rel. tolerance of 1%
true
我在某个论坛上读到,设置rtol = 1e-n
,其中n
是有效数字的数量,将比较有效数字。 (不幸的是,我无法再次找到它。)无论如何,正如示例所示,这显然不是真的。
鉴于我们在这种情况下希望用两个有效数字近似相等,11.4 和 10.5 都近似等于 11。但是,两者之间的相对差异大于 1%,返回近似值 false
。但是,对于任何大于 90 的数字,近似值为 true
。将相对容差增加十倍到 10% 将导致灵敏度过低,如代码所示。
是否有一个参数/值/公式,我可以为 isapprox()
设置 rtol
来为任何所需数量的有效值正确返回 true
数字?
最佳答案
简单的回答是否,rtol
没有固定值,您可以选择保证isapprox(x, y; rtol=rtol)
将值 x
和 y
与一定数量的有效数字进行比较。这是因为how isapprox
is implemented :rtol
是相对于 norm(x)
和 norm(y)
的最大值计算的。您必须为要比较的每对 x
和 y
计算不同的 rtol
。
您所要求的似乎是一种将x
和y
的值四舍五入与一定数量的有效值进行比较的方法数字(以 10 为基数)。 round
方法有一个可能有用的关键字sigdigits
:
isapproxsigfigs(a, b, precision) = round(a, sigdigits=precision) == round(b, sigdigits=precision)
isapproxsigfigs(10, 9.9, 1) # true, 10 == 10
isapproxsigfigs(10, 9.9, 2) # false, 10 != 9.9
isapproxsigfigs(11.4, 10.5, 1) # true, 10 == 10
isapproxsigfigs(11.4, 10.5, 2) # false, 11 != 10 (remember RoundingMode!)
isapproxsigfigs(11.4, 10.51, 1) # true, 10 == 10
isapproxsigfigs(11.4, 10.51, 2) # true, 11 == 11
isapproxsigfigs(11.4, 10.51, 3) # false, 11.4 != 10.5
对于第二个示例,请记住,如果将平局四舍五入,则 10.5 仅“接近 11”。默认RoundingMode
Julia 使用的是 RoundNearest
,四舍五入为偶数。如果您希望将关系向上舍入,请使用 RoundNearestTiesUp
:
isapproxsigfigs2(a, b, precision) =
round(a, RoundNearestTiesUp, sigdigits=precision) ==
round(b, RoundNearestTiesUp, sigdigits=precision)
isapproxsigfigs2(11.4, 10.5, 2) # true, 11 == 11
关于julia - 如何在 Julia 中测试特定数字有效数字的近似相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68666525/
所以我必须用以下方法来近似 Pi:4*(1-1/3+1/5-1/7+1/9-...)。它也应该基于迭代次数。所以函数应该是这样的: >>> piApprox(1) 4.0 >>> piApprox(1
输入:图 G 输出:多个独立集,使得一个节点对所有独立集的成员资格是唯一的。因此,节点与它自己的集合中的任何节点都没有连接。这是一个示例路径。 由于这里需要澄清,因此再次改写: 将给定的图划分为多个集
我已经使用查找表和低阶多项式近似实现了定点 log2 函数,但对整个 32 位定点范围 [-1,+1) 的准确度不太满意。输入格式为 s0.31,输出格式为 s15.16。 我在这里发布这个问题,以便
大多数拥有CS学位的人当然会知道Big O stands for是什么。 它可以帮助我们评估算法的可扩展性。 但是我很好奇,您如何计算或估算算法的复杂性? 最佳答案 我会尽力在这里简单地解释它,但要注
我的目标是近似二项式变量总和的分布。我使用以下纸张The Distribution of a Sum of Binomial Random Variables作者:肯·巴特勒和迈克尔·斯蒂芬斯。 我想
我知道有方法 approximate cubic Bezier curves ( this page 也是一个很好的引用),但是有没有更快的方法来逼近 N 次贝塞尔曲线?还是只能使用下面的概括? 来自
大多数拥有CS学位的人当然会知道Big O stands for是什么。 它有助于我们评估算法的可扩展性。 但是我很好奇,您如何计算或估算算法的复杂性? 最佳答案 我会尽力在这里简单地解释它,但要注意
我是 C++ 和编码本身的初学者,所以请原谅任何词汇错误。我找不到这个具体问题,但在互联网上找到了类似的问题,但我仍然很难获得我需要的结果。 所以我使用莱布尼茨公式来近似 pi,即: pi = 4 ·
有多种方法可以通过显示名称查找联系人。例如这个答案Android - Find a contact by display name 但是我需要找到模糊匹配的联系人。例如如果找不到“Kim”,我需要返回
我一直在尝试使用以下代码使用级数表示来近似 e 以获得尽可能多的精度数字,但无论我计算多少项,精度数字的数量似乎都保持不变。即: 2.718281984329223632812500000000000
大多数拥有CS学位的人当然会知道Big O stands for是什么。 它可以帮助我们评估算法的可扩展性。 但是我很好奇,您如何计算或估算算法的复杂性? 最佳答案 我会尽力在这里简单地解释它,但要注
大多数拥有CS学位的人当然会知道Big O stands for是什么。 它可以帮助我们评估算法的可扩展性。 但是我很好奇,您如何计算或估算算法的复杂性? 最佳答案 我会尽力在这里简单地解释它,但要注
大多数拥有计算机科学学位的人肯定知道什么是Big O stands for。 它有助于我们衡量一个算法的实际效率,如果您知道在what category the problem you are try
大多数拥有计算机科学学位的人肯定知道什么是Big O stands for。 它有助于我们衡量一个算法的实际效率,如果您知道在what category the problem you are try
我做了很多随机的数学程序来帮助我完成作业(合成除法是最有趣的),现在我想反转一个激进的表达式。 例如,在我方便的 TI 计算器中我得到 .2360679775 好吧,我想将该数字转换为等效的无理数表达
我可以通过 CPU 分析器看到,compute_variances() 是我项目的瓶颈。 % cumulative self self total
大多数拥有 CS 学位的人肯定知道什么 Big O stands for . 它帮助我们衡量算法的可扩展性。 但我很好奇,你如何计算或近似算法的复杂性? 最佳答案 我会尽我所能用简单的术语在这里解释它
这是迄今为止我的代码, from math import * def main(): sides = eval(input("Enter the number of sides:"))
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
大多数拥有 CS 学位的人肯定知道什么 Big O stands for . 它帮助我们衡量算法的扩展性。 但我很好奇,你如何计算或近似算法的复杂性? 最佳答案 我会尽我所能用简单的术语在这里解释它,
我是一名优秀的程序员,十分优秀!