单片机里怎么实现log运算的代码怎么写

1.如何用C语言编写一个对数运算用库函数math.h 这里面的log就是数学里面ln(底数为e的那个家伙)的意思 。如下代码例子
#include<stdio.h>
#include<math.h>
【单片机里怎么实现log运算的代码怎么写】main()
{
double k;
k=log(2.71828);
printf(" %f ",k);
k=log(8)/log(2);
printf(" %f ",k);
}
第一k是ln(e)的意思,e约为2.71828,屏幕上打印出值为0.999999,
第二k是求底数为2真数为8的值log2(8)=ln(8) /ln(2) (这个数学转化式我不用多说),打印出来的结果是3.000000
2.求log()的实现方法3个建议:1、如果坚持使用该方法,一种加快收敛的方法是让t接近1再求ln(t) 。
这里仅考虑t > 1的情况,如果t < 1,则ln(t) = -ln(1/t) 。设e^x = t,先求x的整数部分n,再求小数部分y 。
只要不断累乘e,直到刚好超过t,累乘的次数就是n+1 。再用你说的泰勒展开求y,因为0 <= y < 1,所以收敛速度可以较快 。
2、实际上,当y接近1时,收敛速度还是不快,因为ln2 = 1 - 1/2 + 1/3 - 1/4 +。
建议求解方程e^x = t 。用牛顿法,迭代公式是x1 = x0 - 1 + t/e^x0 。
其中e^x0可以用泰勒展开近似,结合1中的建议,无需展开多项 。我试了一下,效果不错 。
3、上面的方法都很麻烦,直接做积分最简单了 。1/x在1到t上的积分就是ln(t) 。
有无数的方法可以做,效果最好了 。

单片机里怎么实现log运算的代码怎么写

文章插图