对数函数

算法设计笔记(七)几类重要的函数

女生的网名这么多〃 提交于 2020-02-28 12:47:32
按增长快慢可以分为三类函数 指数函数,多项式函数,对数函数 1、对数函数 一般关注函数的阶而不关注底数 重要的性质证明 2、指数函数与阶乘 斯特林公式的运用 估计搜索空间大小 3、取整函数 取整函数的性质 例:按阶的大小排序 来源: CSDN 作者: chenxiaoqinghua 链接: https://blog.csdn.net/chenxiaoqinghua/article/details/104551395

对数函数的底数是多少

雨燕双飞 提交于 2020-01-13 05:22:08
不强调底数,是因为这时候它是多少没本质的区别。 l o g a x = l o g b x l o g b a log_ax=\frac{log_bx}{log_ba} l o g a ​ x = l o g b ​ a l o g b ​ x ​ 对于x,使用不同的底数a,b取对数,区别只是一个固定的常数系数 l o g b a log_ba l o g b ​ a 罢了。 在讨论时间复杂度、信息熵等不关心常系数的时候,使用任何底数是没有区别的。只有关注常系数的时候,才需要思考对数的底数用什么,否则,2,e,10等哪个计算方便就用哪个。 来源: CSDN 作者: 林晓明 链接: https://blog.csdn.net/weixin_42408467/article/details/103765481

信息熵为什么要定义成-Σp*log(p)?

时光总嘲笑我的痴心妄想 提交于 2020-01-07 12:42:34
信息熵为什么要定义成-Σp*log(p)? 再解释信息熵之前,需要先来说说什么是信息量。 信息量是对信息的度量,单位一般用bit。 信息论之父克劳德·艾尔伍德·香农(Claude Elwood Shannon )对信息量的定义如下: 在解释这个公式之前,先看看下面的例子。 比如一个黑箱里有2个苹果,8个橙子我们把从黑箱里取苹果、橙子看成是一个随机过程,X={x1,x2},其中的随机变量分别表示苹果、橙子。 当我们了解到拿出来的是什么的时候,我们就接受到了信息,这个信息的信息量的大小与这个东西出现的概率有关,这里苹果是0.2,橙子是0.8。越小概率的事情发生,其产生的信息量越大,比如我了解到拿出来的是一个苹果所获得的信息量比一个橙子的信息量要大的多。 所以如果我们要寻找一个函数来定义信息,则该函数要满足如下条件: 要符合随着概率的增大而减小的形式; 函数的值不能为负数,因为信息量最小为0。 带负号的对数函数显然符合以上要求,当然,肯定有其他函数也会符合以上要求,对此,香农在《A Mathematical Theory of Communication》(通信的数学理论)这篇论文中有说明选择对数函数的原因: 大意是说: 如果集合中的消息的数量是有限的,而且每条消息被选择的可能性相等,那么这个消息数或者任意这个消息数的单调函数可以用来做为从集合选择一条消息时产生的信息量的度量

多项式对数函数

随声附和 提交于 2020-01-02 07:45:39
给定一个 \(n-1\) 次多项式 \(A(x)\) ,求一个 \(mod\, x^n\) 下的多项式 \(G(x)\) ,满足 \(G(x)≡ln A(x)\) 前置芝士: 微积分 我们设 \(G(F(x))=F(A(x))\) , \(F(x)=ln(x)\) 对两边同时求导得到 \(G'(x)=f'(A(x))A'(x)\) 由于 \(F'(x)=\frac{1}{x}\) (记住或者现推都行) \(G'(x)=\frac{A'(x)}{A(x)}\) 多项式求逆+求导+积分就好了 #include<bits/stdc++.h> using namespace std; namespace red{ #define int long long #define y1 miao #define eps (1e-8) inline int read() { int x=0;char ch,f=1; for(ch=getchar();(ch<'0'||ch>'9')&&ch!='-';ch=getchar()); if(ch=='-') f=0,ch=getchar(); while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return f?x:-x; } const int N=4e5+10,p

log() exp()函数

空扰寡人 提交于 2019-12-01 12:09:27
1 对数函数表示法 import numpy as np import math print('输出自然底数e:',math.e) # np表示法 # np.log()是以e为底的自然对数 print(np.log(math.e)) # np.log10是以10为底的对数函数 这种写法只可表示底为2和10的对数函数 print(np.log10(10)) # np.log1p()表示ln(1+x) print(np.log1p(math.e-1)) # math表示法 # 任意的对数函数表示方法,第一个数是幂,第二个是底数 print(math.log(64, 2)) View Code 参考:https://www.runoob.com/python/func-number-log.html 2 指数函数表示法 来源: https://www.cnblogs.com/xxswkl/p/11684849.html

【模板】多项式对数函数

别等时光非礼了梦想. 提交于 2019-12-01 04:59:13
代码如下 #include <bits/stdc++.h> using namespace std; typedef long long LL; const LL mod = 998244353, g = 3, ig = 332748118; inline LL fpow(LL a, LL b) { LL ret = 1 % mod; for (; b; b >>= 1, a = a * a % mod) { if (b & 1) { ret = ret * a % mod; } } return ret; } void ntt(vector<LL> &v, vector<int> &rev, int opt) { int tot = v.size(); for (int i = 0; i < tot; i++) if (i < rev[i]) swap(v[i], v[rev[i]]); for (int mid = 1; mid < tot; mid <<= 1) { LL wn = fpow(opt == 1 ? g : ig, (mod - 1) / (mid << 1)); for (int j = 0; j < tot; j += mid << 1) { LL w = 1; for (int k = 0; k < mid; k++) { LL x = v[j + k],