精华内容
下载资源
问答
  • 自然对数

    千次阅读 2017-02-17 11:28:25
    以常数e为底数的对数叫做自然对数,记作lnN(N>0)。...1数学表示方法2概念▪有关概念▪对数函数▪e的级数展开式3对数的生物学意义 4历史5自然律▪螺线▪自然律之美▪渊源及发展6复数的对数 7e与π的哲学意义
    以常数e为底数的对数叫做自然对数,记作lnN(N>0)。自然对数在物理学,生物学等自然科学中有重要的意义
    中文名
    自然对数
    外文名
    Natural logarithm
    类    别
    数学

    数学表示方法

    编辑
    自然对数的一般表示方法为lnx。数学中也常见以logx表示自然对数。若为了避免与基为10的常用对数lgx混淆,可用“全写”㏒ex。[1] 

    概念

    编辑
    它的含义是单位时间内,持续的翻倍增长所能达到的极限

    有关概念

    自然对数的底数e是由一个重要极限给出的。我们定义:当n趋于无限时,
    .
    e是一个无限不循环小数,其值约等于2.718281828459…,它是一个超越数

    对数函数

    当自然对数
    真数为连续自变量时,称为对数函数,记作
    x为自变量,y因变量).

    e的级数展开式

    易证明:函数展开为x的级数(Maclaurin级数)是
    特别地,当x=1时就得到了e的展开式

    对数的生物学意义

    编辑
    在连锁交换定律中,重组率或重组值是指双杂合体测交产生的重组型配子的比例,即重组率=重组配子数/总配子数(亲组合+重组和)×100%,重组是交换的结果,所以重组率(recombination fraction)通常也称作交换率(crossing over percentage)或交换值。可是仔细推敲起来,这两个数值是不尽相同。
    如果我们假定,沿染色体纵长的各点上交换的发生大体上是随机确定的。那么可以这样认为,如果两个基因座相距很近,由交换而分开较少,重组率就低;如果两基因座离开很远,交换发生的次数较多,重组率就高。所以可以根据重组率的大小计算有关基因间的相对距离,把基因顺序地排列在染色体上,绘制出基因图。生物学家就是这样做的。
    如果有关的两个基因座在染色体上分开较远,举例说重组率在12%-15%以上,那么进行杂交试验时,其间可能发生双交换或四交换等更高数目的偶数交换,形成的配子却仍然是非重组型的。这时如简单地把重组率看作数交换率,那么交换率就要被低估了。因为遗传图是以1%交换率作为图距单位的,所以如交换率低估了,图距自然也随之缩小了,这就需要校正。校正的公式较多,可根据自己得出的连锁与交换试验的结果,提出单是适用于某一生物的校正公式。一般来说,一个合适的校正公式应该满足下列两个条件:①最大的重组率不超过0.5或50%,因为这数值说明两个基因之间遵循自由组合定律;②较小的重组率应该大致上是加性的。常用的的较简单的公式是Haldane推导的作图函数R=[1-e^(-2x)]/2,式中R代表重组率,x代表交换率。这公式表示重组率与图距的关系,而图距的单位是1%交换率。
    说明一下Haldane曲线的几点性质:①曲线的起始一小段基本上是直线,斜率接近于1,重组率可以直接看作是图距,所以重组率是加性的。②在曲线的曲度较大的区域,重组率就不是加性的了。当图距比较大,两端的基因的重组率就要小于相邻两个重组率之和,即Rab+Rbc>Rac,例如abc是三个连锁基因,两两间的重组率R值是非加性的,0.23+0.32>0.40。吧Haldane公式加以改写:x=-ln(1-2R)/2,把上面R值代入公式,求得x值如下:在0.31+0.51,稍大于0.81,x值大致上成为加性的了。③标记基因间的图距很大时,重组率与图距无关,接近或等于1/2。
    所以重组率大致代表交换率,但当重组率逐渐增大时,重组率往往小于交换率,需要加以校正。在实际应用时,要看研究的生物而定。像黑腹果蝇那样,各染色体上定位的基因已经很多,标记的区域已划分得很细,就无需用作图函数来校正了。但对一种新的生物开始进行连锁研究,可供利用的标记基因很少,这是最好用作图函数来加以校正,以得到更接近实际的图距。

    历史

    编辑
    约翰·纳皮尔在1614年以及Jost Bürgi(英语:Jost Bürgi)在6年后,分别发表了独立编制的对数表,当时通过对接近1的底数的大量乘运算,来找到指定范围和精度的对数和所对应的真数,当时还没出现有理数幂的概念,1742年William Jones(英语:William Jones (mathematician))才发表了幂指数概念。按后来人的观点,Jost Bürgi的底数1.0001相当接近自然对数的底数e,而约翰·纳皮尔的底数0.99999999相当接近1/e。实际上不需要做开高次方这种艰难运算,约翰·纳皮尔用了20年时间进行相当于数百万次乘法的计算,Henry Briggs(英语:Henry Briggs (mathematician))建议纳皮尔改用10为底数未果,他用自己的方法于1624年部份完成了常用对数表的编制。
    形如f(x) = x的曲线都有一个代数反导数,除了特殊情况p = −1对应于双曲线的弓形面积(英语:Quadrature (mathematics)),即双曲线扇形;其他情况都由1635年发表的卡瓦列里弓形面积公式(英语:Cavalieri's quadrature formula)给出,其中抛物线的弓形面积由公元前3世纪的阿基米德完成(抛物线的弓形面积(英语:The Quadrature of the Parabola)),双曲线的弓形面积需要发明一个新函数。1647年Grégoire de Saint-Vincent(英语:Grégoire de Saint-Vincent)将对数联系于双曲线xy=1的弓形面积,他发现x轴上[a,b]两点对应的双曲线线段与原点围成的双曲线扇形同[c,d]对应的扇形,在a/b=c/d时面积相同,这指出了双曲线从x = 1到x = t的积分f(t)满足:
    1649年,Alphonse Antonio de Sarasa(英语:Alphonse Antonio de Sarasa)将双曲线下的面积解释为对数。大约1665年,伊萨克·牛顿推广了二项式定理,他将1/(1+x)展开并逐项积分,得到了自然对数的无穷级数。“自然对数”最早描述见于尼古拉斯·麦卡托在1668年出版的著作《Logarithmotechnia》中,他也独立发现了同样的级数,即自然对数的麦卡托级数。大约1730年,欧拉定义互为逆函数的指数函数和自然对数为:
    e在科学技术中用得非常多,一般不使用以10为底数的对数。以e为底数,许多式子都能得到简化,用它是最“自然”的,所以叫“自然对数”。
    我们可以从自然对数最早是怎么来的来说明其有多“自然”。以前人们做乘法就用乘法,很麻烦,发明了对数这个工具后,乘法可以化成加法,即:log(ab) = loga + logb。
    但是能够这么做的前提是,我要有一张对数表,能够知道loga和logb是多少,然后求和,能够知道log多少等于这个和。虽然编对数表很麻烦,但是编好了就是一劳永逸的事情,因此有个大数学家开始编对数表。但他遇到了一个麻烦,就是这个对数表取多少作为底数最合适?10吗?或是2?为了决定这个底数,他做了如下考虑:
    1.所有乘数/被乘数都可以化到0-1之内的数乘以一个10的几次方,这个用科学记数法就行了。
    2.那么只考虑做一个0-1之间的数的对数表了,那么我们自然用一个0-1之间的数做底数(如果用大于1的数做底数,那么取完对数就是负数,不好看)。
    3.这个0-1间的底数不能太小,比如0.1就太小了,这会导致很多数的对数都是零点几;而且“相差很大的两个数的对数值却相差很小”,比如0.1做底数时,两个数相差10倍时,对数值才相差1。换句话说,像0.5和0.55这种相差不大的数,如果用0.1做底数,那么必须把对数表做到精确到小数点以后很多位才能看出他们对数的差别。
    4.为了避免这种缺点,底数一定要接近于1,比如0.99就很好,0.9999就更好了。总的来说就是1 - 1/X ,X越大越好。在选了一个足够大的X(X越大,对数表越精确,但是算出这个对数表就越复杂)后,你就可以算
    (1-1/X)1 = P1 ,
    (1-1/X)2 = P2 ,
    ……
    那么对数表上就可以写上P1的对数值是1,P2的对数值是2……(以1-1/X作为底数)。而且如果X很大,那么P1,P2,P3……间都靠得很紧,基本可以满足均匀地覆盖了0.1-1之间的区间
    5.最后他再调整了一下,用(1- 1/X)X作为底,这样P1的对数值就是1/X,P2的对数值就是2/ X,……PX的对数值就是1,这样不至于让一些对数值变得太大,比如若X=10000,有些数的对数值就要到几万,这样调整之后,各个数的对数值基本在0-1之间。两个值之间最小的差为1/X。
    6.让对数表更精确,那么X就要更大,数学家算了很多次,1000,1万,十万,最后他发现,X变大时,这个底数(1 - 1/X)X趋近于一个值。这个值就是1/e,自然对数底的倒数(虽然那个时候还没有给它取名字)。其实如果我们第一步不是把所有值放缩到0.1-1之间,而是放缩到1-10之间,那么同样的讨论,最后的出来的结果就是e了--- 这个大数学家就是著名的欧拉(Euler),自然对数的名字e也就来源于欧拉的姓名。
    当然后来数学家对这个数做了无数研究,发现其各种神奇之处,出现在对数表中并非偶然,而是相当自然或必然的。因此就叫它自然对数底了。

    自然律

    编辑

    螺线

    涡形或螺线型是自然事物极为普遍的存在形式,比如:一缕袅袅升上蓝天的炊烟,一朵碧湖中轻轻荡开的涟漪,数只缓缓攀援在篱笆上的蜗牛和无数在恬静的夜空携拥着旋舞的繁星……螺线表达自然律。螺线特别是对数螺线的美学意义可以用指数的形式来表达:φkρ=αe。其中,α和k为常数,φ是极角,ρ是极径,e是自然对数的底。为了讨论方便,我们把e或由e经过一定变换和复合的形式定义为“自然律”。因此,“自然律”的核心是e,其值为2.71828……,是一个无限不循环数。

    自然律之美

    “自然律”是e及由e经过一定变换和复合的形式。e是“自然律”的精髓,在数学上它是函数:(1+1/x)x
    当X趋近无穷时的极限。人们在研究一些实际问题,如物体的冷却、细胞的繁殖、放射性元素的衰变时,都要研究(1+1/x)x,当X趋近无穷时的极限。正是这种从无限变化中获得的有限,从两个相反方向发展(当X趋向正无穷大的时,上式的极限等于e=2.71828……,当X趋向负无穷大时候,上式的结果也等于e=2.71828……)得来的共同形式,充分体现了宇宙的形成、发展及衰亡的最本质的东西。

    渊源及发展

    1.宇宙与生命
    现代宇宙学表明,宇宙起源于“大爆炸”,熵定律,即热力学第二定律相吻合。熵定律指出,物质的演化总是朝着消灭信息、瓦解秩序的方向,逐渐由复杂到简单、由高级到低级不断退化的过程。退化的极限就是无序的平衡,即熵最大的状态,一种无为的死寂状态。这过程看起来像什么?只要我们看看天体照相中的旋涡星系的照片即不难理解。如果我们一定要找到亚里士多德所说的那种动力因,那么,可以把宇宙看成是由各个预先上紧的发条组织,或者干脆把整个宇宙看成是一个巨大的发条,历史不过是这种发条不断争取自由而放出能量的过程。
    生命体的进化却与之有相反的特点,它与热力学第二定律描述的熵趋于极大不同,它使生命物质能避免趋向与环境衰退。任何生命都是耗散结构系统,它之所以能免于趋近最大的熵的死亡状态,就是因为生命体能通过吃、喝、呼吸等新陈代谢的过程从环境中不断吸取负熵。新陈代谢中本质的东西,乃是使有机体成功的消除了当它自身活着的时候不得不产生的全部熵。
    2.自然律的价值
    “自然律”一方面体现了自然系统朝着一片混乱方向不断瓦解的崩溃过程(如元素的衰变),另一方面又显示了生命系统只有通过一种有序化过程才能维持自身稳定和促进自身的发展(如细胞繁殖)的本质。正是具有这种把有序和无序、生机与死寂寓于同一形式的特点,“自然律”才在美学上有重要价值。
    如果荒僻不毛、浩瀚无际的大漠是“自然律”无序死寂的熵增状态,那么广阔无垠、生机盎然的草原是“自然律”有序而欣欣向荣的动态稳定结构。因此,大漠使人感到肃穆、苍茫,令人沉思,让人回想起生命历程的种种困顿和坎坷;而草原则使人兴奋、雀跃,让人感到生命的欢乐和幸福。
    3.自然律的表达
    e=2.71828……是“自然律”的一种量的表达。“自然律”的形象表达是螺线。螺线的数学表达式通常有下面五种:(1)对数螺线;(2)阿基米德螺线;(3)连锁螺线;(4)双曲螺线;(5)回旋螺线。对数螺线在自然界中最为普遍存在,其它螺线也与对数螺线有一定的关系,不过我们仍未找到螺线的通式。对数螺线是1638年经笛卡尔引进的,后来瑞士数学家雅各·伯努利曾详细研究过它,发现对数螺线的渐屈线和渐伸线仍是对数螺线,极点在对数螺线各点的切线仍是对数螺线,等等。伯努利对这些有趣的性质惊叹不止,竟留下遗嘱要将对数螺线画在自己的墓碑上。
    4.螺线的哲学
    英国著名画家和艺术理论家荷迦兹深深感到:旋涡形或螺线形逐渐缩小到它们的中心,都是美的形状。事实上,我们也很容易在古今的艺术大师的作品中找到螺线。为什么我们的感觉、我们的“精神的”眼睛经常能够本能地和直观地从这样一种螺线的形式中得到满足呢?这难道不意味着我们的精神,我们的“内在”世界同外在世界之间有一种比历史更原始的同构对应关系吗?
    我们知道,作为生命现象的基础物质蛋白质,在生命物体内参与着生命过程的整个工作,它的功能所以这样复杂高效和奥秘无穷,是同其结构紧密相关的。化学家们发现蛋白质的多钛链主要是螺旋状的,决定遗传的物质——核酸结构也是螺旋状的。
    古希腊人有一种称为风鸣琴的乐器,当它的琴弦在风中振动时,能产生优美悦耳的音调。这种音调就是所谓的“涡流尾迹效应”。让人深思的是,人类经过漫长岁月进化而成的听觉器官的内耳结构也具涡旋状。这是为便于欣赏古希腊人的风鸣琴吗?还有我们的指纹、发旋等等,这种审美主体的生理结构与外在世界的同构对应,也就是“内在”与“外在”和谐的自然基础。
    有人说数学美是“一”的光辉,它具有尽可能多的变换群作用下的不变性,也即是拥有自然普通规律的表现,是“多”与“一”的统一,那么“自然律”也同样闪烁着“一”的光辉。谁能说清e=2.71828……给数学家带来多少方便和成功?人们赞扬直线的刚劲、明朗和坦率,欣赏曲线的优美、变化与含蓄,殊不知任何直线和曲线都可以从螺线中取出足够的部分来组成。有人说美是主体和客体的同一,是内在精神世界同外在物质世界的统一,那么“自然律”也同样有这种统一。人类的认识是按否定之否定规律发展的,社会、自然的历史也遵循着这种辩证发展规律,是什么给予这种形式以生动形象的表达呢?螺线!
    5.自然律的哲学
    有人说美在于事物的节奏,“自然律”也具有这种节奏;有人说美是动态的平衡、变化中的永恒,那么“自然律”也同样是动态的平衡、变化中的永恒;有人说美在于事物的力动结构,那么“自然律”也同样具有这种结构——如表的游丝、机械中的弹簧等等。
    “自然律”是形式因与动力因的统一,是事物的形象显现,也是具象和抽象的共同表达。有限的生命植根于无限的自然之中,生命的脉搏无不按照宇宙的旋律自觉地调整着运动和节奏……有机的和无机的,内在的和外在的,社会的和自然的,一切都合而为一。这就是“自然律”揭示的全部美学奥秘吗?不!“自然律”永远具有不能穷尽的美学内涵,因为它象征着广袤深邃的大自然。正因为如此,它才吸引并且值得人们进行不懈的探索,从而显示人类不断进化的本质力量。(原载《科学之春》杂志1984年第4期,原题为:《自然律——美学家和艺术家的瑰宝》)

    复数的对数

    编辑
    问题:求复数
    的自然对数
    解答:把复数写成指数形式,也就是
    为复数的模,即
    为复数的辐角主值
    这就是当真数为复数时的自然对数运算公式
    例:求ln(-1)
    解:-1=-1+0i,对应复平面上的点为(-1,0),则其幅角主值为π,模长为1。
    代入公式得:
    由此可见
    ,即
    ,这就是欧拉恒等式

    e与π的哲学意义

    编辑
    数学讲求规律和美学,可是圆周率π和自然对数e那样基本的常量却那么混乱,就如同两个“数学幽灵”。人们找不到π和e的数字变化的规律,可能的原因:例如:人们用的是十进制,古人掰指头数数,因为是十根指头,所以定下了十进制,而二进制才是宇宙最朴素的进制,也符合阴阳理论,1为阳,0为阴。再例如:人们把π和e与那些规整的数字比较,所以觉得e和π很乱,因此涉及“参照物”的问题。那么,如果把π和e都换算成最朴素的二进制,并且把π和e这两个混乱的数字相互比较,就会发现一部分数字规律,e的小数部分的前17位与π的小数部分的第5-21位正好是倒序关系,这么长的倒序,或许不是巧合。
    说明[ ]符号内为17位倒序区。
    二进制π取部分值为11.0010[01000011111101101]010100010001000010110100011
    二进制e取部分值为10.[10110111111000010]101000101100010100010101110110101
    17位倒序区的意义:或许暗示e和π的发展初期可能按照某种彼此相反的规律发展,之后e和π都脱离了这个规律。但是,由于2进制只用0和1来表示数,因而出现相同,倒序相同,栅栏重排相同的情况不足为奇,虽然这种情况不一定是巧合,但思辨性结论不是科学结论,不应该作为科学证据使用。
    展开全文
  • # 选取数组中元素大于0.5的元素的bool数组 >> mask array ([[ False , True , True , True , True ], [ False , False , True , True , False ], [ True , True , False , False ...
    python里面数组运算numpy是首选, C的运算效率, 下面是个简单例子
    >>import numpy as np
    >>arr = np.random.rand(5,5) # 5x5的随机数组
    >>arr
    array([[ 0.36401504,  0.87729325,  0.53453396,  0.5031851 ,  0.90744627],
           [ 0.44607108,  0.22673265,  0.77539262,  0.84064101,  0.41774629],
           [ 0.91686641,  0.71480639,  0.09617148,  0.41535823,  0.4175782 ],
           [ 0.25753864,  0.73196495,  0.43557823,  0.97497112,  0.54451645],
           [ 0.58167148,  0.50382906,  0.88490307,  0.77238085,  0.17427672]])
    >>mask = arr>0.5 # 选取数组中元素大于0.5的元素的bool数组
    >>mask
    array([[False,  True,  True,  True,  True],
           [False, False,  True,  True, False],
           [ True,  True, False, False, False],
           [False,  True, False,  True,  True],
           [ True,  True,  True,  True, False]], dtype=bool)
    >>arr[mask] = 0 # 将数组中大于0.5的值设为0
    >>arr
    array([[ 0.36401504,  0.        ,  0.        ,  0.        ,  0.        ],
           [ 0.44607108,  0.22673265,  0.        ,  0.        ,  0.41774629],
           [ 0.        ,  0.        ,  0.09617148,  0.41535823,  0.4175782 ],
           [ 0.25753864,  0.        ,  0.43557823,  0.        ,  0.        ],
           [ 0.        ,  0.        ,  0.        ,  0.        ,  0.17427672]])
    展开全文
  • 对数几率回归

    千次阅读 2017-08-13 21:36:11
    如是二分类任务,其输出标记为,而线性回归的预测值为实值,我们需将实值转为0/1值,我们必然想到单位阶跃函数(unit-step function),若大于0就判为正例,小于0则判为反例,预测值为临界值为0则可任意判别。但

    本文损失函数部分内容参考:http://www.cnblogs.com/fionacai/p/5865480.html

    目的:

    利用线性回归时,输出的是实值,但要做的是分类任务该怎么办,答案就是线性模型的广义线性回归,即找到一个单调可微的函数将分类任务的真实标记和线性回归的预测值联系起来。

    如是二分类任务,其输出标记为,而线性回归的预测值为实值,我们需将实值转为0/1值,我们必然想到单位阶跃函数(unit-step function),若大于0就判为正例,小于0则判为反例,预测值为临界值为0则可任意判别。但是,单位阶跃函数不连续,因此找到近似单位阶跃函数的“替代函数”,因此我们采用对数几率函数(logistic function):

            (1

    该函数又叫作Sigmoid 函数。

    方法:

    代入公式(1),则可得到,该式可变化为 (2),若将视为样本为正例的可能性,则是其反例可能性,两者的比值:
    称为“几率”(odds),反映了作为正例的相对可能性。对几率取对数则得到对数几率(log odds)
    由此可以看出,实际上我们是用线性回归模型的预测结果去逼近真实标记的对数几率,因此该模型成为“对数几率
    回归”(logistic regression)。需要注意的是,虽然名字为回归,其实是一种分类学习方法。
    得到表达式后,接下来要做的就是如何得到。我们将视为类后验概率估计, 则表达式(2)可以
    表达为:
    (3)
    显然有
    (4)
    (5)
    因此,我们可以通过“极大似然法”(maximum likelihood function)估计。对数几率回归模型的最大化“对数
    似然”
    (6)
    即令每个样本属于其真实标记的概率越大越好,为便于讨论,令
    可简写为,则(下式中的为sigmoid函数,因为利用极大似然推到较为麻烦,因此这里直接利
    用损失函数,损失函数是利用极大似然准则函数推导的,,具体的推导求解过程可参见博客
    http://blog.csdn.net/suipingsp/article/details/41822313 另一种较为好理解的方式是,如果Y=1,你胆敢给出一个h(x)很小的概率比
    如0.01,那么损失函数就会变得很大:
    此时的损失函数变成了凸函数,Theta的求解,就是梯度下降法(Gradient Descent,GD)求最小值,此时加入的正则化项,是解决过拟合问题。
    (过拟合问题:如果我们的模型有非常多的特征,模型很复杂,模型对原始数据的拟合效果很好,但是丧失一般性,对新的待预测变量预测
    效果很差。怎么解决呢?限制参数,损失函数加上关于theta的限制,即如果theta太多太大,则就给予惩罚。L2正则化。)
    则参数的利用GD进行迭代求最优值为

    该公式将一直被迭代执行,直至达到收敛()在每一步迭代中都减小,如果某一步减少的值少于某个很小的值()(小于0.001),

     则其判定收敛)或某个停止条件为止(比如迭代次数达到某个指定值或算法达到某个可以允许的误差范围)。 转换为向量的处理方法同样可

    参见上文博客:http://blog.csdn.net/suipingsp/article/details/41822313

    展开全文
  • 原根与离散对数

    千次阅读 2015-08-14 13:28:20
    设m是大于1的整数,(a,m)=1,则a^φ(m)=1(mod m).  注:(a,m)表示a和m的GCD. 也就是说,若(a,m)=1,m>1,则至少存在一个正整数r,满足a^r=1(mod m). 指数的定义: 若m>1,(a,m)=1,则使得同余式a^r=1(mod m)...

    概念1:原根

    欧拉定理:

    设m是大于1的整数,(a,m)=1,则a^φ(m)=1(mod m).  注:(a,m)表示a和m的GCD.

    也就是说,若(a,m)=1,m>1,则至少存在一个正整数r,满足a^r=1(mod m).

    指数的定义:

    若m>1,(a,m)=1,则使得同余式a^r=1(mod m)成立的最小正整数r叫做a对于模m的指数(阶),记r为ordm(a).

    定理1:若(a,m)=1,m>0,则x是 a^x=1(mod m) 的解的充要条件是:ordm(a)|x.

    定理2:若(a,m)=1,m>0,则a^i=a^j(mod m),当且仅当i=j(mod ordm(a)),其中i,j是非负整数.

    推论:(a,m)=1,m>0,则ordm(a)|φ(m).

    原根的定义:

    (a,m)=1,m>0,且ordm(a)=φ(m),则a称为模m的一个原根.

    注:并不是所有的模m都存在原根.

    指数的性质:

    性质1:若x对于模m的指数是ab,a>0,b>0,则x^a对于模m的指数是b.

    性质2:若x对于模m的指数是a,y对于模m的指数是b,并且(a,b)=1,1),则xy对于模m的指数是ab.

    原根的性质:

    性质1: (a,m)=1,m>0,如果a是模m的一个原根,则a^0,a^1,a^2…,a^φ(m)构成模m的简化剩余类.
    性质2: 若ordm(a)=t, u是一个正整数,则ordm(a^u)=t/(t,u).
    推论: 若a是模m的一个原根, m为整数且m>1, 则a^u是模m的一个原根的充要条件是(u,φ(m))=1.

    原根存在的条件:
    模m为1, 2, 4, p^t, 2p^t,其中p为奇质数,t为正整数时,此模m才有原根。

    原根求法:

    问题:求一个mod p意义下的原根(p为素数)

    原理:由于最小原根通常较小, 可以通过从小到大枚举正整数来快速寻找一个原根.

             对p-1的每个素因子a,检查g^((p-1)/a)=1(mod p)是否成立,如果成立则说明不是原根

    模板:

    //求原根  
    vector<LL>a;  
    bool g_test(LL g,LL p)  
    {  
        for(LL i=0;i<a.size();i++)  
        {  
            if(pow_mod(g,(p-1)/a[i],p)==1)  
                return 0;  
        }  
        return 1;  
    }  
    LL primitive_root(LL p)  
    {  
        LL tmp=p-1;  
        a.clear();  
        for(LL i=2;i<=tmp/i;i++)  
        {  
            if(tmp%i==0)  
            {  
                a.push_back(i);  
                while(tmp%i==0)  
                    tmp/=i;  
            }  
        }  
        if(tmp!=1)  
            a.push_back(tmp);  
        LL g=1;  
        while(true)  
        {  
            if(g_test(g,p))  
                return g;  
            g++;  
        }  
    }

    概念2:离散对数

    部分转载自http://blog.csdn.net/acdreamers/article/details/9767947

    离散对数是一种在整数中基于同余运算和原根的对数运算.

    离散对数的定义:

    设g是模m的一个原根,对已知的a,存在整数r,使得 g^r=a (mod m)成立,

    则称r为以g为底的a对模m的一个离散对数。记作r=dlog(a)。

    离散对数的性质

    当模有原根时,为模的一个原根,则当时,

    此处的以整数为底模的离散对数值。


    应用:

    问题给定A,B,C,求同余方程的解,其中是素数。

    问题给定X,B,C,求同余方程的解,其中是素数。

    分析:利用离散对数的知识,先求模的一个原根,那么就有

         对于,用Baby Step Giant Step能很好地解决.

         那么这样我们再用扩展欧几里得算法可以计算出A或者,快速幂再进一步求,所以就可以完美解决。


    那么,如果为合数呢?

    其实,如果为合数,我们要做的第一件事就是把素因子分解,即

    那么我们分别计算,然后用CRT(中国剩余定理)合并即可。

    那么对于,有两种情况:

    (1)

    (2)

    对于情况(1),我们就直接先求原根,然后利用离散对数来解决。

    而对于情况(2),我们有,这样就转化为情况(1)了。

    假设对于每个的解的个数为,那么方程的解的个数为


    baba-step

    LL pow_mod(LL a,LL p,LL n)
    {
        LL ans=1;
        while(p)
        {
            if(p&1)
                ans=(ans*a)%n;
            p>>=1;
            a=(a*a)%n;
        }
        return ans;
    }
    void gcd(LL a,LL b,LL &d,LL &x,LL &y)
    {
        if(!b) { d=a; x=1; y=0; }
        else
        {
            gcd(b,a%b,d,y,x);
            y-=x*(a/b);
        }
    }
    LL inv(LL a,LL n)
    {
        LL d,x,y;
        gcd(a,n,d,x,y);
        return d==1 ? (x+n)%n : -1;
    }
    int log_mod(int a,int b,int n)
    {
        int m,v,e=1,i;
        m=(int)sqrt(n+0.5);
        v=inv(pow_mod(a,m,n),n);
        map<int,int> x;
        x[1]=0;
        for(i=1;i<m;i++)
        {
            e=e*a%n;
            if(!x.count(e))
                x[e]=i;
        }
        for(int i=0;i<m;i++)
        {
            if(x.count(b))
                return i*m+x[b];
            b=b*v%n;
        }
        return -1;
    }




    展开全文
  • 离散对数密码学原理

    千次阅读 2020-05-04 11:52:55
    这里写自定义目录标题简介离散对数基本概念离散对数密钥的产生离散对数加密离散对数系统的数字签名 简介 1976年,Diffifie和Hellman提出了首个离散对数系统,该方法是一种密钥协商协议。1984年,ElGamal提出了基于...
  • 如何实现对数ln运算?

    万次阅读 2015-12-11 21:29:07
    好朋友Z说他们期末得设计一个计算器,对数ln的运算挺麻烦的。 我想,这不是就是泰勒展开的事吗? 泰勒展开1.0 立刻想到了这个嘛: 然而,跑一下程序的结果是这样的: 1.1 循环的次数多——Peano余项为o...
  • 离散对数和椭圆曲线加密原理

    万次阅读 多人点赞 2017-08-03 11:35:05
    现代公钥加密系统中,常用的加密算法除了RSA还有离散对数加密和椭圆曲线加密。这两者原理比较相似,在这里一并介绍。 离散对数问题 我们在中学里学的对数问题是指, 给定正实数aaa和axaxa^x,求xxx。也就是...
  • 分治法求逆序对数

    2014-07-17 16:19:00
    #include #include #define maxn 70000 #define LL __int64 int A[maxn], T[maxn]; LL ans; void merge_sort(int A[], int x, int y) //对区间[x,y)进行排序 ... if(y-x> 1) { int m= (y + x)/ 2; mer
  • JQuery对数组的一些操作总结

    千次阅读 2014-11-28 00:45:04
    JQuery对数组的处理非常便捷并且功能强大齐全,一步到位的封装了很多原生js数组不能企及的功能。下面来看看JQuery数组的强大之处在哪。 $.each(array, [callback]) 遍历 不同于例遍 jQuery 对象的 $.each() 方法...
  • sort() 函数用于对数组单元从低到高进行排序。rsort() 函数用于对数组单元从高到低进行排序。...usort() 使用用户自定义的比较函数对数组中的值进行排序uasort() 使用用户自定义的比较函数对数组中
  • 前言:     ...1.介绍:       当我们开发一个分类模型的时候,我们的目标是把输入映射到预测的概率上,当我们训练模型的时候就不停地调整参数使...
  • /*输入两个正整数m和n,输出m到n之间每个整数的自然对数。 输入 输入包括两个整数m和n(m<=n),之间用一个空格隔开。 输出 每行输出一个整数及其对数,整数占4列,对数占8列,右对齐,对数保留4位小数。 */ #...
  • 关于离散对数,请移步至此 =&gt; 离散对数:这个好难。。。 Baby Step Giant Step 中文名叫”大步小步算法”,用来求解如下同余方程x的最小正整数解: ax≡b(modp)其中0&lt;=x&lt;pax≡b(modp)其中0&...
  • (ia[j],我们称这是一对逆序数,我们就要求一个数列中满足这样条件对数,当然采用暴力法两重的 for循环当然可以做到,复杂度是O(n^2),我们采用分治法,类似于合并排序的思想: #include #include using ...
  • 1.while循环 while循环语句的基本格式如下: while <condition>: <statement> else: <statement> 执行流程如下图所示: 条件表达式如果为真时,则循环体重复执行,直到条件判断为假,循环体终止,如果第一次判断...
  • 对数几率回归(logistic regression),有时候会译为逻辑回归(音译),其实是我们把回归模型应用到分类问题时,线性回归的一种变形,主要是针对二分类提出的。既然是线性回归的一种变形,那么在理解对数几率回归时,...
  • 条件熵:H(Y|X)表示在已知随机变量X的条件下,随机变量Y的不确定性,H(Y|X)定义为:举个例子:有一堆西瓜,已知这堆西瓜的色泽,以及每种色泽对应好瓜和坏瓜的个数,如下所示,设X表示色泽,Y表示好瓜或者坏瓜。...
  • :比如大于30岁是1,300岁还是1 4、 简化逻辑回归模型的作用,降低过拟合的风险 优点: 适合需要得到一个分类概率的场景 计算代价小,在时间和内存需求上相当高效。可应用于分布式数据 对于小噪声的...
  • #include /* 本题假设N为2000,申请一个标记数组大小为n的一半,两个数的和为N+1,...若大于则放在tag【2001-i】处,最后在遍历一下tag数组,元素为2的个数就是满足条件对数 */ void main() { int a[2001]={1,401,63
  • 为什么 ["1", "2", "3"].map(parseInt) 返回 [1,NaN,NaN]?

    万次阅读 多人点赞 2014-02-19 08:49:51
    在 javascript 中 ["1", "2", "3"].map(parseInt) 为何返回不是 [1,2,3] 却是 [1,NaN,NaN]? 我们首先回顾一下 parseInt() 个 map() 两个函数的用法: parseInt() 函数 定义和用法 parseInt() 函数可...
  • python不改变二维数组相对位置,得到对应行(列)满足条件的新数组 有时候,程序中会用到不改变二维数组相对位置,得到元素满足对应条件的行。...A = np.array([1,2,3,4,5,6,0,-2,7,8,9]) result ...
  • 它们的信号强度往往连续地和不可控地变化由于改变信道条件,天线位置,以及其他因素。用于接收信道设计师面临的挑战是按比例绘制这个宽测距信号,以便最大限度地与低电平信号的前端灵敏度,同时未超载的较高量值那些...
  • abc+cba=1333,满足条件的abc有几个

    千次阅读 2016-08-23 17:31:29
    描述:有一个三位数,个...思路:十位相加为2b,不可能为奇数3,说明个位相加大于10,也就是2b+1=3,既然个位相加大于10而且个位是3,所以a+c=13,只需要找出a+c=13的对数就可以,共6对,也就是满足条件的三位数有6个。
  • 有一个需求是在前端部分完成筛选功能,一次拿到所有数据,然后根据条件筛选。通常情况下筛选是后台给接口,在数据量不大的情况下,也有人可能会遇到前端筛选这样的情况。 一般情况下的单条件筛选,数组的filter方法...
  • 3)索引字段在等值查询时效率最高(等条件),大于,小于等带范围的查询条件的速度是否能提高要看数据库索引本身的实现技术,因此数据库一般也不会采用B树而采用类似B+树的原因,因为B+树的卫星数据都在叶子节点上,可以实现...
  • 信息熵(Entropy):解决信息的度量问题 一条信息的信息量与其不确定性...香农利用“比特(Bit)”来度量信息量,一个bit是一位二进制数,1字节=8bit。信息量的比特数与所有可能情况的对数函数log有关。 信息熵的...
  • 独立关系和因子分解的等价性,MNs 和 BNs 的转化,概率图统一(有向或无向)的对偶双重视角 || 成对马尔科夫网,吉布斯分布,条件随机场,对数线性模型,Ising 模型,度量马尔可夫随机场,作为模板的共同特征提取 ||...
  • 本博客通过浅显的语言简单介绍了凸优化问题中的拉格朗日对偶问题,KKT条件,并阐述了KKT条件的几何分析
  • 找出数组中符合条件的数对的个数

    千次阅读 2016-06-25 16:00:07
    设计一个算法,找出数列中符合条件的数对的个数,满足数对中两数的和等于N+1。 方法一:排序+二分查找。先对数组进行排序,然后遍历该有序数组,同时使用二分查找方法,查找对应的值是否存在(例如,有序数组中某...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,464
精华内容 17,785
关键字:

对数大于1的条件