GESP7级C++考试语法知识(三、对数函数(1、认识对数)
数学魔法函数学院第八课《寻找指数小偷——认识对数》—— 当结果知道了指数跑哪去了 本课学习目标学完本课后你将掌握✅ 什么是对数✅ 对数与指数的关系✅ 为什么要发明对数✅ C中的log()函数✅ 如何利用对数反求指数✅ 对数在信息学竞赛中的应用 一、故事开始指数小偷失踪案一天程序王国发生了一件奇怪的事情。1、数学宝库里有一张神秘纸条2 ? 10242、国王急坏了指数不见了3、原来?的位置被神秘小偷偷走了。4、国王下令谁能找到这个指数就封他为皇家数学侦探于是阿Q开始调查。 二、先回顾指数函数阿Q想1、以前学过2¹ 2 2² 4 2³ 8 2⁴ 16 2⁵ 322、继续往后2⁶ 64 2⁷ 128 2⁸ 256 2⁹ 512 2¹⁰ 10243、终于发现2¹⁰ 10244、所以小偷藏起来的数字是10❓ 三、问题来了刚才我们是一个个试出来的。1、如果变成2 ? 1048576怎么办2、或者3 ? 59049怎么办3、难道要一直乘下去太麻烦了4、于是数学家发明了一个超级工具对数Logarithm 四、什么是对数1、数学家规定如果a^xb2、那么对数定义为3、我们简单理解下a要乘自己多少次才能得到b4、例如2¹⁰ 1024那么意思2要乘自己10次 才能得到1024 五、把对数理解成侦探1、指数逆计算2¹⁰ 10241已知底数 22和结果10243求102、这时对数就像侦探一样。专门负责寻找失踪的指数。3、所以指数函数负责已知指数 求结果4、而对数函数负责已知结果 求指数⚖️ 六、指数与对数是一对好朋友1、看看这两个式子1指数形式10 ^ 2 1002对数形式lg100 2其实表达的是同一件事。2、再看1指数形式e ^ 1 e2对数形式ln e 13、指数与对数的关系互为逆运算4、就像加法 ↔ 减法 乘法 ↔ 除法一样。 七、对数魔法表1、阿Q整理出一张对数表。指数形式对数形式2¹ 2log₂2 12² 4log₂4 22³ 8log₂8 32⁴ 16log₂16 42⁵ 32log₂32 52、观察指数是多少 对数就是多少3、因为对数本来就是找指数 八、第一个侦探任务1、求log₂642、意思2的几次方等于643、观察2⁶644、所以log₂646 第二个侦探任务1、求log₃812、意思3的几次方等于813、观察3⁴814、答案4 九、C中的对数函数1、问题来了。2、C有没有log()函数呢3、当然有需要头文件#include cmath4、语法log(x)5、注意这里计算的是自然对数 e6、数学写作lnN比如lne1e是底数e ≈2.71828... 在数学中是非常重要的科学常数。7、C中例如输出cout log(2);输出的是0.693147...❓ 十、为什么结果不是11、很多同学第一次学都会疑惑。2、因为log()不是log₂3、而是ln即以e为底4、在高中数学中我们会学到。5、今天先记住C中的对数函数log()表示自然对数相当于数学中的lnN 十一、如何求 log₂(X)呢1、例如求log₂10242、数学里有一个重要公式换底公式3、于是4、C中#include iostream #include cmath using namespace std; int main() { double ans log(1024) / log(2); cout ans; return 0; }5、输出10 十二、信息学竞赛中的应用以后会遇到很多题目应用1二分查找1例如1024个数2每次砍一半1024 512 256 128 64 32 16 8 4 2 13需要几次4其实就是2的几次方等于10245答案10次应用2满二叉树1第n层节点数2如果有1024个节点求层数。3其实就是求指数需要对数。应用3快速幂1我们学习快速幂时时间复杂度2这里的log就是对数。 十三、初学者最容易犯的错误错误11认为log(8)2等于3错3因为log()默认不是log₂4而是ln错误2忘记包含头文件#include cmath错误31把pow()和log()搞混。2记忆pow() 知道指数求结果 log() 知道结果求指数 挑战任务第一题求log₂32第二题求log₃243第三题已知2^x2048求x第四题为什么2¹⁰ 约等于 1000所以log₂1000 约等于 10 本课总结1、今天我们认识了指数函数最好的朋友对数函数核心定义对数就是寻找失踪的指数。2、一句话指数函数 知道指数求结果 对数函数 知道结果求指数下一课⚔️《魔法天梯有多高——对数增长》⚔️在这里同学们会发现为什么二分查找能那么快为什么100万数据只需要查20次左右对数到底为什么被称为 增长最慢的函数之一。