gpt4 book ai didi

scheme - 余弦函数计算方案

转载 作者:行者123 更新时间:2023-12-02 21:30:13 25 4
gpt4 key购买 nike

我正在制作一个计算方案程序cos(x) = 1-(x^2/2!)+(x^4/4!)-(x^6/6!)......

完成该程序最有效的方法是什么以及如何进行交替加法和减法,这就是我使用模数的目的,但不适用于 0 和 1(前两项)。 x 是 x 的初始值,num 是项数

(define cosine-taylor
(lambda (x num)
(do ((i 0 (+ i 1)))
((= i num))
(if(= 0 (modulo i 2))
(+ x (/ (pow-tr2 x (* i 2)) (factorial (* 2 i))))
(- x (/ (pow-tr2 x (* i 2)) (factorial (* 2 i))))
))
x))

最佳答案

您的问题:

  1. 完成该计划最有效的方法是什么?假设您想要使用泰勒级数展开并简单地对项 n 次求和,那么您的迭代方法就可以了。我在下面对其进行了改进;但你的算法没问题。其他人指出了可能出现的精度损失问题;请参阅下面的我的方法。

  2. 你会如何进行交替加法和减法?使用 odd? 的另一个“参数/局部变量”(一个 bool 值),并使用 not 使其交替。当奇数?时相减,当非奇数?时相加。

(define (cosine-taylor x n)
(let computing ((result 1) (i 1) (odd? #t))
(if (> i n)
result
(computing ((if odd? - +) result (/ (expt x (* 2 i)) (factorial (* 2 i))))
(+ i 1)
(not odd?)))))

> (cos 1)
0.5403023058681398
> (cosine-taylor 1.0 100)
0.5403023058681397

还不错吗?

上面是执行“do”循环的方案方式。您应该能够轻松地看到与 do 的对应关系,其中包含 iresultodd? 三个局部变量。 .

关于数字精度的损失 - 如果您确实想解决精度问题,则将x转换为“精确”数字并使用精确数字进行所有计算。通过这样做,您将获得具有“完美”精度的自然的、Scheme-ly 算法。

> (cosine-taylor (exact 1.0) 100)
3982370694189213112257449588574354368421083585745317294214591570720658797345712348245607951726273112140707569917666955767676493702079041143086577901788489963764057368985531760218072253884896510810027045608931163026924711871107650567429563045077012372870953594171353825520131544591426035218450395194640007965562952702049286379961461862576998942257714483441812954797016455243/7370634274437294425723020690955000582197532501749282834530304049012705139844891055329946579551258167328758991952519989067828437291987262664130155373390933935639839787577227263900906438728247155340669759254710591512748889975965372460537609742126858908788049134631584753833888148637105832358427110829870831048811117978541096960000000000000000000000000000000000000000000000000
> (inexact (cosine-taylor (exact 1.0) 100))
0.5403023058681398

关于scheme - 余弦函数计算方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22491620/

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