如何手算对数?为简单起见,以222为底数演示。

问题:求log⁡2a\log_2alog2​a的值,其中aaa为已知实数。

由于人们的思维逻辑普遍是线性的,而对数是非线性的,对数需要规模化思维才更好理解,因此将问题转化成求指数会更直观一些:

2x=a2^x=a2x=a,问aaa可以拆成多少222的次幂相乘,将幂加起来即可。

下面是过程:

将aaa不断除以2,一直到除不尽余bbb:

2x=a=21212121b2^x=a=2^12^12^12^1b2x=a=21212121b

bbb比222小,它如何写成222的次幂呢?

由于指数函数f(x)=2xf(x)=2^xf(x)=2x递增步长是222的次幂,bbb是222的α\alphaα次幂,等价于b2b^2b2是222的α2\dfrac{\alpha}{2}2α​次幂,这样如果b2b^2b2大于222,就可以递归了。

显然b=(b2)12b=(b^2)^{\frac{1}{2}}b=(b2)21​,设b2=cb^2=cb2=c,则类似aaa拆分ccc:

c=2121dc=2^12^1dc=2121d

显然d=(d2)12d=(d^2)^{\frac{1}{2}}d=(d2)21​,设d2=ed^2=ed2=e,则类似aaa拆分eee:

这是一个递归的手算对数的最简单方法,不用查表,不需要任何高数知识。

若底数不是222,假设是AAA,则:

Ax=A1A1..bA^x=A^1A^1..bAx=A1A1..b

b=(bA)1Ab=(b^A)^{\frac{1}{A}}b=(bA)A1​

接着递归处理bAb^AbA即可。

下面是一个按照上述的手算步骤写的C代码,可求任意底数的对数:

#include <stdio.h>
#include <stdlib.h>double logarithm(int i, double temp, double base, double num, int acc)
{if (acc == 1)return 0;if (num >= base) {return 1 + logarithm(0, 1, base, num/base, acc-1);} else {while (i++ < base)  {temp *= num;}return (1/base)*logarithm(0, 1, base, temp, acc-1);}
}int main(int argc, char **argv)
{double base, num, ret;int acc = (int)atoi(argv[1]); // 递归层数,表示精度,一般设置100base = (double)atoi(argv[2]); // 底数num = (double)atoi(argv[3]); // 待求数ret = logarithm(0, 1, base, num, acc);printf("%.18lf\n", ret);}

这篇文章源自于一个朋友在知乎上的问题:
怎么推导或证明 e^x 的导数是自身? - 知乎
我以为:
“y=exy=e^xy=ex表示在以xxx为增长率的增长极限(比如以xxx为利率的复利极限),那么在xxx为增长率的时候,yyy的增长最大就是exe^xex,这就是yyy的导数(毕竟导数就是增长率的极限)了,就是它自身了。
eee是通过(1+1n)n(1+\dfrac{1}{n})^n(1+n1​)n的极限定义出来的,所以直接从那个定义的形式入手去理解即可。”
说实话,将eee的定义用二项式展开,然后求极限后求导会更像个正经答案,但那只是数学把式,我承认摆置数学把式是笛卡尔方法论的核心用例(在笛卡尔之前,数学无法工程化),这也是我一再强调和推崇的,但同时我需要有一个直观的解释,而不是单纯比划公式。读历史会发现,任何伟大的公式背后,在一开始都源自于一种直观的直觉,然后在寻求表达时才有了公式,比如伟大的平方反比律。
一直以来,我希望自己的孩子关注两个基本点:
1.培养一种思维习惯,用历史的,跨界的眼光思考问题,关注发展和变化。
2.掌握笛卡尔方法论,将从线索到结论的过程通过一种工程框架串联起来。
这也是我自己一直以来关注的。
当看到一些我平时发布的博客,朋友圈之后,很多人不能理解我为什么能为这么显而易见的简单东西兴奋这么久,我无法反驳,因为这些东西确实简单,但我又可以反驳,因为它们并不是很显而易见,若非老师或者书本告诉你,你自己以为的那部分在哪里?简单的,有多少人可以不用任何四则混合运算知识,将绳子分成5等份?复杂的,如果所有的书籍和记忆消失了,人类有多大的几率比5万年前的原始智人更强?
传统教育让我们注重客观,少说“我以为”,但我以为这是不正确的,智人之跃入文明,全在形而上。

浙江温州皮鞋湿,下雨进水不会胖。

手工计算对数的方法和对应的C代码相关推荐

  1. ios计算个税方法以及ui界面设计代码详解

    // // ZYAppDelegate.m // UITest1 // // Created by cacahaha on 15/4/8. // Copyright (c) 2015年 ZhiYou. ...

  2. boost::gil模块沿 x 轴计算梯度的方法的示例

    boost::gil模块沿 x 轴计算梯度的方法的示例 实现功能 C++实现代码 实现功能 boost::gil模块沿 x 轴计算梯度的方法的示例 C++实现代码 #include <boost ...

  3. yolov5-计算fps(新加入:4. 记录运行B导yolov7-tiny后计算fps的方法)

    目录 0. FPS记录的原理 1. 自己的 2. 其实yolov5有自带的打印这些参数 3. 清风大佬分享的 3.1 单个的计算fps函数 3.2 整体的完整代码 4. 记录运行B导yolov7-ti ...

  4. 用正割对数计算积分的方法

    用正割对数计算积分的方法 下面介绍一种利用正割对数,计算积分的方法. 相关资料下载网址: 链接:https://pan.baidu.com/s/1z3R9b-UmV3AcJKLPFNNT3A?pwd= ...

  5. Python中用于计算对数的log()方法

    本文转载至:http://www.jb51.net/article/66130.htm 这篇文章主要介绍了Python中用于计算对数的log()方法,是Python入门基础中的必会的方法,需要的朋友可 ...

  6. 利用计算机辅助设计,一种利用计算机辅助设计和制作手工栽绒毯的方法

    一种利用计算机辅助设计和制作手工栽绒毯的方法 [技术领域] [0001]本发明属于手工栽绒毯的设计制作领域,特别涉及一种利用计算机辅助设计和制作手工栽绒毯的方法. [背景技术] [0002]手工栽绒毯 ...

  7. Python 手工计算x的算术平方根,一个中国古代的数学成就

    目录 原理 代码 测试 sqrt(n)与n**0.5 科学计算法测试 精度测试 1000位到1万位的耗时测试 其他方法 牛顿迭代法 二分法 原理 据说这个平方根计算法出自<九章算术>,成书 ...

  8. 2020-08-24绘制ROC   PR曲线 核心方法总结 ,计算AUC核心方法

    #1   绘制ROC AUC   PR曲线 #核心方法 roc_curve(y_test, preds)  #  preds为概率形式 #source code import matplotlib.p ...

  9. 关于字符串计算size的方法比较

    往往字符串需要计算size来满足UI排版的自适应的需要,而一般字符串也是放在UILabel里的. 而在计算size的方法里,一般有两种方式(deprecated的就不说了). NSString的方法 ...

最新文章

  1. 暂存单点传播帧,以及使用 TIM 来传递
  2. ACL 2020 | 基于多级排序学习的层次化实体标注
  3. 2018信息安全铁人三项第三赛区数据赛题解
  4. webservice的css哪里添加,jQuery_XML+XSLT+CSS+JQuery+WebService组建Asp.Net网(2), 3.       更 - phpStudy...
  5. PyTorch深度学习实践03
  6. git工作区和缓存区概念理解
  7. [NewLife.XCode]实体类详解
  8. python class tynu()_Visual Studio Express | Teraz Visual Studio Community
  9. 吴恩达斯坦福大学机器学习 CS229 课程学习笔记(二)
  10. 【视频】利用IDEA 创建 spring mvc项目
  11. Aspose.Pdf for .NET控件PDF文档到Excel、EPS、SVG等的转换
  12. 学校年检计算机台账,学校年检整改报告.docx
  13. java逻辑运算符的使用
  14. Network Delay Time
  15. hive sql脚本学习
  16. 行政人员为什么需要一套固定资产管理系统?
  17. We never been grown up
  18. 大乐斗2服务器维护,《QQ宠物》和《乐斗II》停止运营
  19. 高校青年教师应该怎么提高收入
  20. 软件测试工程师是这么写年终报告的

热门文章

  1. otf和ctf的意义_北京邮电大学出版社
  2. Python实现直方图梯度提升分类模型(HistGradientBoostingClassifier算法)并基于网格搜索进行优化同时绘制PDP依赖图项目实战
  3. libnids分析(9)---nids.h注释
  4. 嵌入式 printf(\033[1;33m Hello World. \033[0m \n);有趣的串口之超级终端的玩法
  5. 社区儿童计算机活动总结,幼儿园小班的社区活动总结
  6. 实战:k8s中网络策略实验(成功测试-博客输出)-20211005
  7. MyEclipse 10 注册码 破解 到期限制
  8. linux 日历服务器,使用linux的cal命令显示日历
  9. Python Web异常处理
  10. 子类不能抛出新的异常