1748|0

2015

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

非线性运算混合法的方法 [复制链接]

混合法提高查表法的精度
       查表所得结果的精度随表的大小而变化,表越大,则精度越高,但存储量也越大。当系统的存储量有限而精度要求也较高时,查表法就不太适合。那么能否在适当增加运算量的情况下提高非线性运算的精度呢?下面介绍一种查表结合少量运算来计算非线性函数的混合法,这种方法适用于在输入变量的范围内函数呈单调变化的情形。混合法是在查表的基础上来用计算的方法以提高当输入值处于表格两点之间时的精度。提高精度的一个简便方法是采用折线近似法,
      设输入值为x,则精确的对数值为y,在表格值的两点之间作一直线,用y'作为y的近似值,则有:
y'=y0+△y
复制代码


       其中y0由查表求得。现在只需在查表求得y0的基础上增加△y既可。△y的计算方法如下:                   △y=(△x/△x0)△y=△x(△y0/△x0)
       其中△y0/△x0对每一段来说是一个恒定值,可作一个表格直接查得。此外计算此时需用到每段横坐标的起始值,这个值也可作一个表格。这佯共有三个大小均为10的表格,分别为存储每段起点对数值的表logtab0、存储每段△y0/△x0值的表logtab1和存储每段输入起始值x0的表logtab2,表logtab1和表logtab2可用下列两个数组表示。
int  logtab1[10]={22529,20567,18920,17517,16308,
15255,14330,13511,12780,12124};/*△y0/△x0:Q13*/
int  logtab2[10]={16384,18022,19660,21299,22938,
24576,26214,27853,29491,31130};/*x0:Q15*/
复制代码


       综上所述,采用混合法计算对数值的方法可归纳为:
       (1)根据输人值,计算查表地址:index=((x-16384)*20)>>15;
       (2)查表得y0=logtab0[index];
       (3)计算△x=x-logtab2[index];
       (4)计算△y=(△x*logtab1[index])>>13;
       (5)计算得结果y=y0+△y。
       例1.13已知x=0.54,求log2(x)。
       0.54的精确对数值为y=log2(0.54)=-0.889。
       混合法求对数值的过程为:
       (1)定标Q15,定标值x=0.54*32768=17694;
       (2)表地址index=((x-16384)*20)>>15=0;
       (3)查表得y0=logtab0[0]=-32768;
       (4)计算△x=x-logtab2[0]=17694-16384=1310;
       (5)计算△y=(△xlogtab1[0]>>13=(13l0*22529L)>>13=3602
       (6)计算结果y=y0+△y=-32768+3602=-29166。
       结果y为Q15定标,析算成浮点数为-29166/32768=-0.89,可见精度较高。

点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表