指数函数为例的超越函数的逼近拟合误差分析

本科毕业设计都是糊弄过去的,所以最近在又重新做softmax函数的硬件实现,一步一步来吧。
在芯片中所有的运算都是浮点数,计算多是近似算的,对于运算比较复杂的超越函数,用简单函数去拟合逼近是性价比比较高的,也是工程中常用的方法。以指数函数为例,y=e^x是比较简单的超越函数。但在最底层的计算机运算是个很复杂的过程,并不是我们在软件上看到的那样输入要求的数就有输出。所以就有使用逼近指数函数来达到提高运算速度和降低功耗的。
用matlab中的多项式拟合函数polyfit()函数,分别在n=1,n=2时对函数进行数据拟合,为了提高精度,采用0.5的步长来分段拟合,分为6段,用阶梯函数stairs()作出table图以便于观察分析。用for作循环,依次拟合出各段的函数,并求出各段的误差,最后求出总误差。

分别使用分段线性逼近,二次逼近指数函数,并分析比对误差大小。

matlab求解过程
x=0:.05:3;
y=exp(x);
plot(x,y,'r');hold on
x1=0:.5:3;
y1=exp(x1);
stairs(x1,y1,':')
for i=1:7
    x0=x1(i):.05:x1(i+1);
    y0=exp(x0);
p2=polyfit(x0,y0,2);
vpa(poly2sym(p2),10)
x00=x1(i):.005:x1(i+1);
ya=exp(x00);
y1=polyval(p2,x00);
plot(x00,y1)
    abs(y0-y11);
    s_max=max(abs(y0-y11))
    s_ave=mean(abs(y0-y11))
end

结果评估和分析
1.线性逼近:
在这里插入图片描述在这里插入图片描述

a)	函数:
1st: y1=1.293573584*x + 0.9767419625
2nd: y2=2.132742282*x + 0.5440041083
3th: y3=3.516297566*x - 0.8612376384
4th: y4=5.797394591*x - 4.318638109
5th: y5=9.558287777*x - 11.8993744
6th: y6=15.75895237*x - 27.49822787
b)	误差:
1st: s_max=0.0252   s_ave =0.0123
2nd: s_max=0.0415   s_ave =0.0203
3th: s_max=0.0685   s_ave =0.0335
4th: s_max=0.1129   s_ave =0.0552
5th: s_max=0.1861   s_ave =0.0910
6th:  s_max=0.3069  s_ave =0.1501
c)	总体误差分析
Emax =0.3069(最大误差率30%)   Eave =0.0604(平均误差率6%)

2.二次逼近:
在这里插入图片描述在这里插入图片描述

a)	函数:
1st:  y1=0.6453632306*x^2 + 0.9708919683*x + 1.000943084
2nd:  y2=1.064024086*x^2 + 0.5367061542*x + 1.115917054
3rd:  y3=1.754279142*x^2 - 0.8694002899*x + 1.835966543
4th:  y4=2.892317337*x^2 - 4.325716087*x + 4.466775801
5th:  y5=4.768625115*x^2 - 11.90052524*x + 12.12257462
6th:  y6=7.862133659*x^2 - 27.48278275*x + 31.76260459
b)	误差:
1st: s_max =9.9140e-04 s_ave =5.5891e-04
2nd: s_max =0.0016  s_ave =9.2148e-04
3th: s_max =0.0027  s_ave =0.0015
4th: s_max =0.0044  s_ave =0.0025
5th: s_max =0.0073  s_ave =0.0041
6th: s_max =0.0121  s_ave =0.0068
c)	总体误差分析
Emax =0.0121(最大误差率1%)   Eave =0.0027(平均误差率0.2%)

3.数据分析:
经过比对平均误差二次函数逼近的误差远远小于线性函数的逼近,所以在做超越函数的运算时,用分段二次逼近是不错的选择,精度可观而且二次函数的功耗和占用的资源都很少。

posted @ 2019-08-28 10:44  晨青  阅读(706)  评论(0编辑  收藏  举报