gpt4 book ai didi

求解实数的 Haskell 方程

转载 作者:行者123 更新时间:2023-12-02 05:25:00 37 4
gpt4 key购买 nike

我刚开始玩 GHCi。我看到列表生成器基本上解决了给定集合中的方程式:

Prelude> [x | x <- [1..20], x^2 == 4]
[2]

(如预期的那样只找到一个根)

现在,既然解包含在指定范围内,为什么我不能求解结果为 ℝ 的方程?

[x | x <- [0.1,0.2..2.0], x*4 == 2]

如何在实数集内求解此类方程?

编辑:抱歉,我的意思是 0.1,当然。

最佳答案

列表理解不会求解方程,它只是生成属于特定集合的项目列表。如果您的集合定义为[1..20] 中的任何x 使得x^2==4,这就是你得到的。

你不能用从 0.012.0 的任何实数的完整列表来做到这一点,因为这样的实数列表不能在 haskell 中表示(或者更好:它不能在任何计算机上表示),因为它有无限的数字和无限的精度。

[0.01,0.2..2.0] 是由以下数字组成的列表:

Prelude> [0.01,0.2..2.0]
[1.0e-2,0.2,0.39,0.5800000000000001,0.7700000000000001,0.9600000000000002,1.1500000000000004,1.3400000000000005,1.5300000000000007,1.7200000000000009,1.910000000000001]

而且这些数字都不符合您的要求。


请注意,您可能指的是 [0.1,0.2..2.0] 而不是 [0.01,0.2..2.0]。仍然:

Prelude> [0.1,0.2..2.0]
[0.1,0.2,0.30000000000000004,0.4000000000000001,0.5000000000000001,0.6000000000000001,0.7000000000000001,0.8,0.9,1.0,1.1,1.2000000000000002,1.3000000000000003,1.4000000000000004,1.5000000000000004,1.6000000000000005,1.7000000000000006,1.8000000000000007,1.9000000000000008,2.000000000000001]

关于求解实数的 Haskell 方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4983985/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com