2

在我问这个问题之前,我先介绍一下问题的背景。

我的 PIC 18F 汇编程序解决了 Rntc 到 T°C 的关系。但最好的精度是 3 位数。

我在组装示例中使用的 NTC 参考电阻是 10000 欧姆,对应于 25°C 的温度。

只有 3 位可用,方程解为 =xF6 ,d246 在 T 的显示屏上显示,小数点在 24 和 6 之间。

计算 T(包括牛顿近似)的时间约为 800us。这个计算时间看起来比 MPlab C 好很多

计算方程 y = 9.228*x*x-840.852*x+25236.82 的 sqrt 的汇编程序遇到了缩放 b2-4ac 的问题……当我尝试包含小数时,这些数字溢出了我的 24 位数学套件,例如我必须使用 a=9 。b=840 c=25236

Q1 使用整数,是否有一些技巧可以使用 24 位数学计算上述数字?

4

1 回答 1

5

我认为一个人真的不需要超过大约 10 位的精度。

方程sqrt(a* x^2 + b*x + c), x=178..1196 给出了相当多的线性响应。甚至不必使用查找表进行分段线性逼近。

线性方程为 y=3.03x-129

编辑:通过注意到 0.03*x ~= 8/256 * x; 可以进一步简化方程。
因此y=a+(a<<1)+(a>>5) - 131; // 8/256 = 0.03125 to be precise.

将常数修改为 131 以将误差微调至零均值。这些图显示了相对误差(左)和绝对误差(右)180<x<1200

相对与绝对误差

于 2012-11-24T10:42:59.103 回答