cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 2906|回复: 0

关于 HP 50g 极限计算的 Bug 的一些考察和解决方法

[复制链接]
发表于 2018-2-18 21:13:20 | 显示全部楼层 |阅读模式
原帖(万年老坟,请勿挖坟!):http://tieba.baidu.com/p/2189630287
论坛原帖(万年老坟):https://www.cncalc.org/forum.php?mod=viewthread&tid=8343

计算 \( \lim{x \to 0}{\frac{cos(x)-exp(-x^2/2)}{x^4}} \) 时,HP 50g 返回了错误的答案。(我们将极限内的算式记做 f(x), 下文使用。)
在原帖中,返回的是无法计算的 ?. 在最新版本 (2.15) 中,则返回了 -3/8, 与正确答案 -1/12 相去甚远。

在计算过程中,计算器提示 SERIES remainder is O(1) at order 3
这表明进行序列展开时,第 3 阶展开是无穷小项。

可以推断,在 HP 50g 进行极限求解的时候,会对原算式进行泰勒展开并计算。但可能由于泰勒展开的代码存在漏洞,导致展开结果错误,进而导致极限计算结果错误。

Google 一番后,发现隔壁 HP Museum 也提出了 50g 极限的 Bug
原帖(请遵守论坛规范):http://www.hpmuseum.org/forum/thread-7812.html

计算 \( \lim{x \to 0}{\frac{cos(x)-1+(\frac{1}{2})*x^2}{x^4}} \) 时答案错误,返回 ?, 而正确答案为 1/24.

后面发现答案:为了加速运算或其他原因,lim 函数使用的展开阶数很低(通常小于 4 阶)。而要计算这些函数的极限,必须使用 4 阶以上展开。

解决方案是使用 SERIES 函数而不使用 lim 函数:
算式放在第 3 层、X=0 放在第 2 层、第 1 层写展开阶数执行 SERIES 函数,则会产生 2: {:Limit:(答案) :Equiv:... ... :Remain: '(余项)'} 和 1: h=X. 其中,Limit 即为函数在 X=0 处的极限,为正确答案。

使用 f(x) 进行测试,X F X 0 = 5 SERIES (线性表达式同等 SERIES(F(X), X=0, 5), 表示于 X=0 处进行 5 阶泰勒展开)得到的结果为:
2: { :Limit: '-1/12' :Equiv: '-1/12' :Expans: '-1/12' :Remain: 'h^2' }
1: h=X
取得正确答案。

至此,HP 50g 极限计算的 Bug 已经展现,解决方案如上。HP 50g 并不是无法计算简单的极限,只是有些时候自作聪明,聪明反被聪明误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-11-23 16:17 , Processed in 0.040517 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表