精华内容
下载资源
问答
  • 2021-06-16 01:54:23

    第一次:

    一.表达式处理

    题目要求表达式合法,而不合法的表达式显然是不能进行后续操作的,因此第一步要做的就是把不合法的表达式排除在外。

    我的想法是这样的:

    1. 把所有包含正确表达式不该有的字符的输入屏蔽掉

    2. 把所有包含非法数字的表达式屏蔽掉

    3. 把所有含有类似“+++”、“+-+”、“^++”等的表达式屏蔽掉,为下一步的拆分做铺垫

    4. 当表达式差分成一个个项的时候,只要有一个项出现异常,整个串即为不合法

    其中可能会出现一些细节问题,例如:

    1. 判断非法字符的方法:我采用了最土的方法,把合法字符全部删除,如果还存在字符则显然非法。

    2. 不合法数字的正则表达式:"(.*)[-\\+\\^][-\\+]( )+(\\d)(.*)"和"(.*)(\\d)( )+(\\d)(.*)"。

    3. 处理分隔符时的方法:因为我采取的分割口是“+”,所以每两个项之间必须有一个加号,还要保证x^\\d中不能出现加号,因此要将将x^\\d中可能出现的加号删除,将++换成+,--换成+,-+和-换成+-,这样就可以保证所有拆分出来的项都是合法的。当然如果表达式开头出现加号则在开头加上“0”,结尾出现加号则屏蔽掉。

    二.项的处理

    将切分好的项进行标准化,化成"(.*)*x^(.*)"的形式,以便使用*x^进行切割,将两边的数字进行处理,为防止数据溢出采用biginteger,一旦出现异常,则表达式显然不合法。将处理好的键值对存入hashmap中,通过幂次相等来合并同类项。

    求导,更新hashmap中的数值等待输出。

    三.输出处理

    将每个键值对标准化成"\\d*x^\\d\\+"的形式,添加到同一个空字符串上,将系数或指数为0或1的项进行化简,最后删除最末尾的+即可输出。

    第二次:

    一.表达式处理

    和第一次基本相同,又略有差异。首先将不合法表达式粗略的排除在外。

    具体操作如下:

    1.排除空串(将所有‘\t’转化成‘ ’)

    2.将所有包含非合法字符(串)的表达式排除(合法字符包括^*+-以及数字、(x)、sin、cos)

    3.将所有含有类似“++++”、“+-+-”、“^++”、“*++”等的表达式屏蔽掉,为拆分做铺垫

    4.数字非法的正则表达式前多加入正负号,其他均与第一次相同

    5.拆分好的项被称为乘法项,作为下一步处理的输入

    二.乘法项的处理

    将切分好的项再以*号分割,并将同类项合并,利用通式求导化简存入哈希表,x的幂次作为key,新建triangle类用与化简三角函数,最后输出。其他均与第一次相同。

    三.化简处理

    显然输出结果中会出现sinx^2+cosx^2等情况,我在作业中做了如下处理。

    1. 合并同类项(以x为key)

    2. 当出现asinx^(m+2)cosx^(n)+bsinx^(n)cosx^(n+2),ab>0时,可以进行化简提取通式将sin2+cos2化简成1,并降低幂次和系数

    3. 当出现类似asinx^(m)cosx^(n)-asinx^(m)cosx^(n+2)时,可以将两项划为一项

    4. 当出现1-sinx^2时合并成一项。最后按照第一次输出。

    第三次:

    一.表达式处理

    1.判断是否有输入,如果有,则扫描一行字符,判断是否存在非法字符。

    2.判断是否存在不合法数字,即:9  9;+++  9;^+  9;*+  9等(同时避免了++++;^++;*++等的出现。

    3.判断是否存在不合法加减号,并替换成+,+-两种状态。

    4.为满足以加号分割的需求,将所有非连接表达式的+号替换成&。

    5.将切分好的各项存入term中

    二.项的处理

    1.将每个项用*号分割,并存入factor,同时判断拆分出来的表达式的类型,使用term递归。

    2.在处理过程中,严格把控每一种情况,一旦出现非法表达式或项,立刻抛出异常。

    三.Term类

    1.将Term分为三类,

    (1).x类:经过求导之后,直接输出导函数

    (2).sin类:经过求导之后,输出原函数减一次幂乘上脱掉外层括号后的导函数

    (3).cos类:经过求导之后,输出原函数减一次幂乘上脱掉外层括号后的导函数

    2.脱括号:当整个表达式不包含在括号外的*和+时,可以脱掉一层括号,当不能再脱括号时转化成一个Factor类

    3.求完导数后的结果套上一层括号,保存为一个字符串

    4.将Term类数组中的所有导数相加即得到结果

    四.Factor类

    1.将Factor类用*号切割,把每一个切开的项用链式求导法则求导。

    2.求完导数后的结果套上一层括号,保存为一个字符串

    五.输出处理

    本次输出我完全没有处理,还是求稳好一点吧。

    关于互测:

    三次作业我并没有采用对拍等方式进行互测找bug,而是通过查看正则表达式的方法,寻求bug突破点,同时也发现了许多值得注意的地方:

    1.多数同学采用的是Pattern和Matcher类来处理正则,而我直接用(.*)和matches方法来处理。

    2.部分同学使用超长正则一次性匹配,在bug检查时简直无懈可击,但是可能会出现TLE等不可预知的情况

    我的bug:

    第一次出现在正则表达式中的+号和*号失误,导致空格的判断出现问题

    第二次出现在化简时符号省略出错,导致输出变得诡异

    第三次出现在参数带入错误,导致删括号的函数直接删掉了所有外围括号,将许多例如(1)+(1)等的测试点处理成了1)+(1,而后直接判错

    可能我的代码并不是真正的面向对象,(不过相信会慢慢好起来的)。

    更多相关内容
  • 项求导的坑,祸害不浅

    千次阅读 2020-12-24 15:09:05
    可能很多同学会认为真题是需要大家求出个东西,一是收敛域,二是和函数。而小编修改后的真题,只需要求和函数,不用求收敛域了。那么事实真的是这样的吗?2.什么是幂级数的和函数?不妨以自然指数的泰勒展开式...

    为了能够更好地帮助大家理解何为幂级数的和函数,小编在本文将结合一道考研数学真题来讲述。

    1.幂级数和函数考研真题

    下面这道题是2016年考研数学三真题:

    小编对真题稍加修改,大家看看是否会影响解题过程和步骤。

    可能很多同学会认为真题是需要大家求出两个东西,一是收敛域,二是和函数。而小编修改后的真题,只需要求和函数,不用求收敛域了。那么事实真的是这样的吗?

    2.什么是幂级数的和函数?

    不妨以自然指数的泰勒展开式进行说明。

    为了能够更清晰地说明什么是和函数,小编在上式的基础上进行些许改变,如下所示:

    当化简到此,就能明显看出来。当等式右边的极限存在时,上述等式才成立。也就是说,对于变量x的某个特定的值,如果等式右边的极限存在,则上述等式成立。

    扩展到x的一段取值区间(-∞,+∞)。对于这段区间内的任何一个x值,等式右边的极限都存在,此时:

    通过上面这个例子可以看出,讨论幂级数的和函数,必须是基于幂级数的收敛域。因此对于第1节中的问题,答案是两个题目是一样的,都是求和函数,而收敛域是和函数的组成部分。也就是说求和函数,必须要求收敛域。真题之所以要把收敛域明确列出来,目的无外乎是两个:一是提醒大家不要忘记标明幂级数的收敛域,二是给予幂级数的收敛域问题更多的分值。

    3.逐项求导和逐项积分

    逐项求导和逐项积分是求幂级数和函数过程中经常需要用到的概念。那何为逐项求导,何为逐项积分呢?又为何需要逐项求导、逐项积分呢?

    所谓的逐项求导、逐项积分就是对函数项幂级数的每一项进行求导或求积分。

    小编通过下面两个例子来说明。

    逐项求导可能会缩小收敛域,但不会扩大收敛域;逐项积分可能会扩大收敛域,但不会缩小收敛域。而收敛域缩小和扩大的部分只可能是出现在级数收敛域的两侧端点。

    请看下面逐项求导会缩小收敛域的例子:

    同样,将上述例子反过来,就是一个逐项积分扩大收敛域的典型例子。

    那么逐项求导、逐项积分的目的是什么?

    目的是向常见函数的泰勒展开式靠拢!下面小编通过求解考研真题向大家说明这一点。

    4.求解真题

    对于第1节中的考研真题,首先求收敛域。

    对于既可看作缺项幂级数,亦可看作无缺项幂级数,通常采用比值审敛法求解幂级数的收敛域。具体求解过程如下所示:

    在求得幂级数收敛域后,下一步就是求和函数S(x)。

    观察级数的形式,不难发现应采用逐项求导的方法,具体过程如下:

    当进行到上面这一步时,可能很多人都认为,只需要把原级数收敛域写在S(x)后面就算解答完了,即:

    看出来了吗?上面的S(x)取不到点x=-1和x=1,因此本题还没有解答完!

    所以,接下来要考虑的是,当x=-1和x=1时,原级数将收敛于何值。具体解答过程如下:

    因此原级数的和函数为:

    5.求解幂级数和函数通用步骤

    小编将求解幂级数和函数的通用步骤绘制成图1,大家一定要结合第4 节中考研真题的求解来理解。

    图1.求解幂级数和函数的通用步骤

    求解一个幂级数的和函数,先求收敛域,此时根据幂级数是否缺项采用相应的定理进行求解,缺项用比值审敛法;无缺项用收敛半径公式。

    第二步就S(x),在次过程中,核心是向常见函数的泰勒展开式靠拢。有的幂级数可能直接就是常见函数的幂级数,此时可直接求得。对于复杂的幂级数,可以通过逐项求导或逐项积分的方法向常见函数的泰勒展开式进行靠拢。若是采用的逐项求导,需对最后求出的S(x)对收敛域端点进行分析。

    展开全文
  • 我们使用高斯copulas(与固定/自由形式的边距组合)作为自动推理引擎,以对通用分层贝叶斯模型进行变分近似(仅有的个特定于模型的是对数似然和先验及其派生词)。 我们评估了在单变量页边距中复制的特殊性...
  • 误差反向传播中的链式求导法则

    千次阅读 2022-03-12 10:38:53
    误差反向传播中的链式求导法则1 复合函数和可微性2 单变量函数链式法则3 多变量函数链式法则3.1 多变量函数求导3.2 多变量函数链式法则参考 1 复合函数和可微性 有函数 y=f(u)y= f(u)y=f(u) , 同时有另一个函数 u=g...

    1 复合函数和可微性

    有函数 y = f ( u ) y= f(u) y=f(u) , 同时有另一个函数 u = g ( x ) u= g(x) u=g(x), 当 y 表示为 x 的函数时,可以变为 y = f ( g ( x ) ) y= f(g(x)) y=f(g(x)) 的嵌套结构。嵌套结构 f ( g ( x ) ) f(g(x)) f(g(x)) 称为 f ( u ) f(u) f(u) g ( x ) g(x) g(x)复合函数

    对于函数 f 的可微性,我们说函数 f 在 x0 点可微,也即是函数 f 在点 x0 处的极限存在:
    在这里插入图片描述

    2 单变量函数链式法则

    单变量函数 y = f ( u ) y= f(u) y=f(u), u 表示为单变量函数 u = g ( x ) u= g(x) u=g(x) 时,复合函数 f ( g ( x ) ) f(g(x)) f(g(x)) 的导函数可以通过下式求出:
    d y d x = d y d u d u d x (1) \frac{dy}{dx}=\frac{dy}{du}\frac{du}{dx} \tag{1} dxdy=dudydxdu(1)

    :对 x 的函数 y = 1 1 + e − ( w x + b ) y=\frac{1}{1+e^{-(wx+b)}} y=1+e(wx+b)1 (w, b 为常数)求导

    解: 设函数 y = 1 1 + e − u y=\frac{1}{1+e^{-u}} y=1+eu1, u = w x + b u=wx+b u=wx+b,第一个式子为 sigmoid 函数,导数为 d y d u = y ( 1 − y ) \frac{dy}{du}=y(1-y) dudy=y(1y), 第二个式子 d u d x = w \frac{du}{dx}=w dxdu=w
    所以,可以得到:
    d y d x = d y d u d u d x = y ( 1 − y ) w = w 1 + e − ( w x + b ) ( 1 − 1 1 + e − ( w x + b ) ) \frac{dy}{dx}=\frac{dy}{du}\frac{du}{dx}=y(1-y)w=\frac{w}{1+e^{-(wx+b)}}(1-\frac{1}{1+e^{-(wx+b)}}) dxdy=dudydxdu=y(1y)w=1+e(wx+b)w(11+e(wx+b)1)

    补充: 关于 sigmoid 函数 s ( x ) = 1 1 + e − x s(x)=\frac{1}{1+e^{-x}} s(x)=1+ex1 的求导:

    # 定义 sigmoid 函数,将soimoid 每一步都分解为一个函数
    def sigmoid(x):
        f = -x
        g = math.exp(f)
        w = 1 + g
        v = 1 / w
        return v
    

    在这里插入图片描述
    S ′ = e − x ( 1 + e − x ) 2 = 1 + e − x − 1 ( 1 + e − x ) 2 = S − S 2 = S ( 1 − S ) S^{'}=\frac{e^{-x}}{(1+e^{-x})^2}=\frac{1+e^{-x}-1}{(1+e^{-x})^2}=S-S^2=S(1-S) S=(1+ex)2ex=(1+ex)21+ex1=SS2=S(1S)

    3 多变量函数链式法则

    3.1 多变量函数求导

    多变量通用函数可以看作是 n 维的数据映射到 m 维数据, f : R n − > R m f:R^n->R^m f:Rn>Rm, 输出的 m个数据的每一个值都可以看作是由输入的 n 个变量计算而来的

    如果我们将输出向量的每个分量 y i y_i yi i ∈ [ 1 , m ] i∈[1,m] i[1,m] ,看作一个独立的多元变量函数,那我们就可以对 y i y_i yi 的每个 x j x_j xj j ∈ [ 1 , n ] j∈[1,n] j[1,n] 求偏导数:
    [ ∂ y i ∂ x 1 , ∂ y i ∂ x 2 , ⋯   , ∂ y i ∂ x n ] \left[ \frac{\partial y_i }{\partial x_1}, \frac{\partial y_i }{\partial x_2},\cdots,\frac{\partial y_i }{\partial x_n} \right] [x1yi,x2yi,,xnyi]
    将每个 y i y_i yi 的梯度组合就得到了雅各比矩阵
    J = ( ∂ y 1 ∂ x 1 ⋯ ∂ y 1 ∂ x n ⋮ ⋱ ⋮ ∂ y m ∂ x 1 ⋯ ∂ y m ∂ x n ) \begin{aligned}J=\left(\begin{array}{ccc} \frac{\partial y_{1}}{\partial x_{1}} & \cdots & \frac{\partial y_{1}}{\partial x_{n}}\\ \vdots & \ddots & \vdots\\ \frac{\partial y_{m}}{\partial x_{1}} & \cdots & \frac{\partial y_{m}}{\partial x_{n}} \end{array}\right)\end{aligned} J=x1y1x1ymxny1xnym
    也可写作:
    J = ∂ ( y 1 , … , y m ) ∂ ( x 1 , … , x n ) J=\frac{\partial(y_1,…,y_m)}{\partial(x_1,…,x_n)} J=(x1,,xn)(y1,,ym)
    雅可比矩阵表示了函数 f 在每一处可导点的导数。具体地说,设 Δx 为一在 x 处的位移向量(假设为列向量),则 J(x)⋅Δx 就是函数值的位移向量(类似一元数值函数里 Δy=y′(x)∗Δx),该函数值的位移向量即为 x 处的f(x)增量的最佳线性逼近(更熟悉点的词叫全微分)。类似于导数,雅可比矩阵是函数局部的线性化,使用矩阵形式来表示微分(线性逼近)这个线性变换

    3.2 多变量函数链式法则

    根据输出为标量还是为向量,分为两种情况

    情况1 如果多变函数形式为 f : R n − > R 1 f:R^n->R^1 f:Rn>R1 ,即输出为标量,而不是向量

    下面是两个变量的情况, z 为 u,v 的函数,而 u , v 又分别为 x, y 的函数。从下图可以看出 x 对 z 的贡献有两条通道,一条经过 u, 一条经过 v,所以当 z 对 x 求导时也需要分成两部分,即:
    ∂ z ∂ x = ∂ z ∂ u ∂ u ∂ x + ∂ z ∂ v ∂ v ∂ x \frac{\partial{z}}{\partial{x}}=\frac{\partial{z}}{\partial{u}}\frac{\partial{u}}{\partial{x}}+\frac{\partial{z}}{\partial{v}}\frac{\partial{v}}{\partial{x}} xz=uzxu+vzxv
    在这里插入图片描述
    同理对 y 变量求导
    ∂ z ∂ y = ∂ z ∂ u ∂ u ∂ y + ∂ z ∂ v ∂ v ∂ y \frac{\partial{z}}{\partial{y}}=\frac{\partial{z}}{\partial{u}}\frac{\partial{u}}{\partial{y}}+\frac{\partial{z}}{\partial{v}}\frac{\partial{v}}{\partial{y}} yz=uzyu+vzyv

    情况2 如果多变函数形式为 f : R n − > R m f:R^n->R^m f:Rn>Rm ,即输出为向量,情形如下面的简图所示,输入 x i x_i xi 经过层层函数最后输出 y 向量
    在这里插入图片描述
    y 1 y_1 y1 v 1 v_1 v1 求导时,需要经过 u 中的 n 个函数:
    在这里插入图片描述
    y 对 所有 u 层求导可以表示为之前提到的形式,矩阵大小为 (m,n)
    J y ( u ) = ∂ ( y 1 , … , y m ) ∂ ( u 1 , … , u n ) J_y{(u)}=\frac{\partial(y_1,…,y_m)}{\partial(u_1,…,u_n)} Jy(u)=(u1,,un)(y1,,ym)
    而 u 层对所有的 v 求导又可以表示为下面的形式,矩阵大小为(n,n)
    J u ( v ) = ∂ ( u 1 , … , u n ) ∂ ( v 1 , … , v n ) J_u{(v)}=\frac{\partial(u_1,…,u_n)}{\partial(v_1,…,v_n)} Ju(v)=(v1,,vn)(u1,,un)
    每一层都可以写为雅各比矩阵形式,y 对 v 整个多元复合函数的求导过程可以表述成更简洁的形式,大小为 (m,n)

    J y ( u ) = J y ( u ( v ) ) J u ( v ) J_{y(u)}=J_y{(u(v))}J_u{(v)} Jy(u)=Jy(u(v))Ju(v)
    也即两个矩阵相乘:
    ∂ ( y 1 , … , y m ) ∂ ( v 1 , … , v n ) = ∂ ( y 1 , … , y m ) ∂ ( u 1 , … , u n ) ∂ ( u 1 , … , u n ) ∂ ( v 1 , … , v n ) \frac{\partial(y_1,…,y_m)}{\partial(v_1,…,v_n)}=\frac{\partial(y_1,…,y_m)}{\partial(u_1,…,u_n)}\frac{\partial(u_1,…,u_n)}{\partial(v_1,…,v_n)} (v1,,vn)(y1,,ym)=(u1,,un)(y1,,ym)(v1,,vn)(u1,,un)
    从直观上理解一下这个等式。首先,我们知道雅可比矩阵的“成因”是用矩阵来表示一阶微分的,也就是把一阶微分的算子当成一个线性变换,而复合函数等于是一个嵌套,也就是函数的函数,对应到线性变换里,也就是线性变换的线性变换,而我们又知道用矩阵表示线性变换时这种“线性变换的线性变换”,就是相当于两个矩阵的乘积。到这里。我们把微积分和线性代数两种工具结合到了一起,就得到了这个结果。

    参考

    1 The Chain Rule of Calculus
    2 深度学习中的数学
    3 向量函数的雅可比矩阵与链式法则
    4 复杂多元复合函数的导数和雅克比矩阵

    展开全文
  • 一、矩阵求导布局问题 在学习过程中,看到很多样式的求导布局,很多地方都有冲突 比如在某些地方看到 ∂y∂x=(∂y1∂x1∂y2∂x1…∂yn∂x1∂y1∂x2∂y2∂x2…∂yn∂x2⋮⋮⋱⋮∂y1∂xn∂y2∂xn…∂yn∂xn) \frac{\...

    一、矩阵求导布局问题

    在学习过程中,看到很多样式的求导布局,很多地方都有冲突
    比如对于列向量:
    x = ( x 1 x 2 ⋮ x n ) , y = ( y 1 y 2 ⋮ y m ) , y 是 关 于 x 的 函 数 \boldsymbol x= \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{pmatrix}, \quad \boldsymbol y= \begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{pmatrix},\quad y是关于x的函数 x=x1x2xn,y=y1y2ym,yx

    在某些地方看到
    ∂ y ∂ x = ( ∂ y 1 ∂ x 1 ∂ y 2 ∂ x 1 … ∂ y m ∂ x 1 ∂ y 1 ∂ x 2 ∂ y 2 ∂ x 2 … ∂ y m ∂ x 2 ⋮ ⋮ ⋱ ⋮ ∂ y 1 ∂ x n ∂ y 2 ∂ x n … ∂ y m ∂ x n ) ( 列 向 量 对 列 向 量 求 导 ) \frac{\partial \boldsymbol y}{\partial \boldsymbol x}= \begin{pmatrix} \displaystyle{\frac{\partial y_1}{\partial x_1}} & \displaystyle{\frac{\partial y_2}{\partial x_1}} & \dots & \displaystyle{\frac{\partial y_m}{\partial x_1}} \\ \displaystyle{\frac{\partial y_1}{\partial x_2}} & \displaystyle{\frac{\partial y_2}{\partial x_2}} & \dots & \displaystyle{\frac{\partial y_m}{\partial x_2}} \\ \vdots & \vdots & \ddots & \vdots \\ \displaystyle{\frac{\partial y_1}{\partial x_n}} & \displaystyle{\frac{\partial y_2}{\partial x_n}} & \dots & \displaystyle{\frac{\partial y_m}{\partial x_n}} \\ \end{pmatrix} \qquad (列向量对列向量求导) xy=x1y1x2y1xny1x1y2x2y2xny2x1ymx2ymxnym
    分子是列向量,相当于是将 y \boldsymbol y y自动转置了一下再求导。

    而另一些地方却会看到
    ∂ y T ∂ x = ( ∂ y 1 ∂ x 1 ∂ y 2 ∂ x 1 … ∂ y m ∂ x 1 ∂ y 1 ∂ x 2 ∂ y 2 ∂ x 2 … ∂ y m ∂ x 2 ⋮ ⋮ ⋱ ⋮ ∂ y 1 ∂ x n ∂ y 2 ∂ x n … ∂ y m ∂ x n ) ( 行 向 量 对 列 向 量 求 导 ) \frac{\partial \boldsymbol y^\mathrm T }{\partial \boldsymbol x}= \begin{pmatrix} \displaystyle{\frac{\partial y_1}{\partial x_1}} & \displaystyle{\frac{\partial y_2}{\partial x_1}} & \dots & \displaystyle{\frac{\partial y_m}{\partial x_1}} \\ \displaystyle{\frac{\partial y_1}{\partial x_2}} & \displaystyle{\frac{\partial y_2}{\partial x_2}} & \dots & \displaystyle{\frac{\partial y_m}{\partial x_2}} \\ \vdots & \vdots & \ddots & \vdots \\ \displaystyle{\frac{\partial y_1}{\partial x_n}} & \displaystyle{\frac{\partial y_2}{\partial x_n}} & \dots & \displaystyle{\frac{\partial y_m}{\partial x_n}} \\ \end{pmatrix} \qquad (行向量对列向量求导) xyT=x1y1x2y1xny1x1y2x2y2xny2x1ymx2ymxnym
    分子则本来就是行向量,没有对其进行转置操作。

    两个求导形式不一样结果却是一样的,让我很疑惑。。。

    二、两种布局简介

    矩阵求导的布局方式有两种,分子布局分母布局
    下假设 x , x , X x, \boldsymbol x, \boldsymbol X x,x,X(小写字母,小写粗体字母,大写粗体字母) 分别表示标量、列向量、矩阵。

    1.1 分子布局

    有时分子布局也被称为Jacobian形式
    例如:
    ∂ y ∂ x = ( ∂ y 1 ∂ x ∂ y 2 ∂ x ⋮ ∂ y n ∂ x ) \frac{\partial \boldsymbol y}{\partial x}= \begin{pmatrix} \displaystyle{\frac{\partial y_1}{\partial x}} \\ \displaystyle{\frac{\partial y_2}{\partial x}} \\ \vdots \\ \displaystyle{\frac{\partial y_n}{\partial x}} \\ \end{pmatrix} xy=xy1xy2xyn
    即保持与分子的同形式

    1.2 分母布局

    有时分母布局也被称为Hessian形式
    例如:

    ∂ y ∂ x = ( ∂ y ∂ x 1 ∂ y ∂ x 2 ⋮ ∂ y ∂ x n ) \frac{\partial y}{\partial \boldsymbol x}= \begin{pmatrix} \displaystyle{\frac{\partial y}{\partial x_1}} \\ \displaystyle{\frac{\partial y}{\partial x_2}} \\ \vdots \\ \displaystyle{\frac{\partial y}{\partial x_n}} \\ \end{pmatrix} xy=x1yx2yxny
    即保持与分母一致


    但是在这两个布局中,并没有说另一项需要怎么做。
    比如分母布局中,没有说分子如何处理。

    三、我的想法

    我的想法是这样的,不知道对不对,有误的话希望大家指正:
    由于矩阵求导本来就是方便我们计算的,所以如何排列无关紧要,只要你在计算过程中按照同一种模式一直进行就可以,而不用去管它是什么鬼布局。

    比如,我始终遵循:分子不转置分母也不转置的模式,那么就有:
    ∂ x T ∂ x = I , ∂ x T A ∂ x = A \frac{\partial \boldsymbol x^\mathrm T}{\partial \boldsymbol x}=\boldsymbol I, \quad \frac{\partial \boldsymbol x^\mathrm T\boldsymbol A}{\partial \boldsymbol x}=\boldsymbol A xxT=I,xxTA=A

    或者始终遵循:分子先转置分母不转置模式,那么就有:
    ∂ x ∂ x = I , ∂ A x ∂ x = A T \frac{\partial \boldsymbol x}{\partial \boldsymbol x}=\boldsymbol I, \quad \frac{\partial \boldsymbol A\boldsymbol x}{\partial \boldsymbol x}=\boldsymbol A^\mathrm T xx=I,xAx=AT

    等等。

    展开全文
  • matlab 求导

    千次阅读 2021-07-22 08:27:33
    求导 clc;clear; %% 使用matlab建立多项式 p = [4 3 2 1 1]; %确定各项系数和常数。放在一个数组里面。 y = poly2sym(p); %创建目标多项式,函数返回一个符号变量,即我们的函数 disp(y); %显示 clc;clear; %% ...
  • 自动求导

    千次阅读 2020-12-23 11:06:33
    前言:构建深度学习模型的基本流程就是:搭建计算图,求得损失函数,然后计算损失函数对模型参数的导数,再利用梯度下降法等方法来更新参数。搭建计算图的过程,称为...由损失函数求导的过程,称为“反向传播”,...
  • pytorch求导

    千次阅读 2020-03-27 10:13:18
    前言:构建深度学习模型的基本流程...由损失函数求导的过程,称为“反向传播”,求导是件辛苦事儿,所以自动求导基本上是各种深度学习框架的基本功能和最重要的功能之一,PyTorch也不例外,后面有时间会写一下tens...
  • 李代数求导

    2022-04-29 19:46:02
    BCH公式:处理个矩阵指数之积时,会产生一些李括号组成的余 BCH近似:对于某个旋转R,左乘一个微小旋转 = 李代数加上一个 即到转换时求得的称为左乘近似雅可比: 它的逆为: 而右乘雅可比仅需要对自...
  • 矩阵求导,矩阵计算

    千次阅读 2021-04-18 10:07:17
    这几天由于用到矩阵求导相关的知识,但是自己没有学过矩阵论(研究生选课的时候,导师没有让选),于是百度了下,觉得完整的相关资料不多,还好发现了下面的这篇博客,给我了很大的帮助!仔细分析了下博客中的内容,...
  • TensorFlow2.0教程-自动求导

    千次阅读 2019-07-07 23:03:58
    TensorFlow2.0教程-自动求导 愿文地址:https://doit-space.blog.csdn.net/article/details/95040756 最全Tensorflow 2.0 入门教程持续更新:https://blog.csdn.net/qq_31456593/article/details/88606284 完整...
  • 实际上对于如何表示 属于第几个类,有种比较直观的方法: 一种是直接法(i.e., 用 来表示x属于第3类),则 ,其中 为指示函数; 另一种是one-hot法(i.e., 用 来表示x属于第三类),则 ,其中 为向量 的...
  • 对连续输入的个字符进行求导处理 如果常数项为0,则输出“0 0” 代码 #include <stdio.h> int main(){ int a=0, b=0, flag=0; char ch; do{ scanf("%d %d", &a, &b); ch = getchar(); ...
  • 矩阵相乘求导(转载)

    千次阅读 2019-11-05 09:37:16
    Y = A * X --> DY/DX = A' Y = X * A --> DY/DX = A Y = A' * X * B --> DY/DX = A * B' Y = A' * X' * B -->...相当于每个元素求导数后转置一下,注意M×N矩阵求导后变成N×M了 Y = [y(ij)] --> d...
  • 矩阵求导法则

    万次阅读 2018-09-11 16:07:41
    鉴于我看过的一些资料或言之不详、或繁乱无绪,本文来做个科普,分作篇,上篇讲标量对矩阵的求导术,下篇讲矩阵对矩阵的求导术。本文使用小写字母x表示标量,粗体小写字母xx 表示向量,大写字母X表示矩阵。 首先...
  • 矩阵求导方法

    2018-03-22 14:07:23
    鉴于我看过的一些资料或言之不详、或繁乱无绪,本文来做个科普,分作篇,上篇讲标量对矩阵的求导术,下篇讲矩阵对矩阵的求导术。本文使用小写字母x表示标量,粗体小写字母表示(列)向量,大写字母X表示矩阵。首先...
  • 1.变限积分函数求导变限积分函数求导简单的分为三类:第一类(或者形如 这种)可以直接得到 ,第二、第三类被积函数里有x,由于需要对x求导,因此不能直接像第一类一样简单,需要转化一下,其中,第三类需要换元,换元三...
  • 深度学习框架通过自动计算导数,即自动微分(automatic differentiation)来加快求导。 实际中,根据我们设计的模型,系统会构建一个计算图(computational graph), 来跟踪计算是哪些数据通过哪些操作组合起来产生...
  • softmax及函数求导

    千次阅读 2021-09-22 10:43:04
    {j}}}}}-{{e}^{{{z}_{1}}}})}{{{(\sum\limits_{j=1}^{n}{{{e}^{{{z}_{j}}}}})}^{2}}} ∂z1​∂y1​​=(j=1∑n​ezj​)2ez1​(j=1∑n​ezj​−ez1​)​ 拆分成两项乘积: ∂ y 1 ∂ z 1 = e z 1 ∑ j = 1 n e z j  ...
  • 实际上对于如何表示 属于第几个类,有种比较直观的方法: 一种是直接法(i.e., 用 来表示x属于第3类),则 ,其中 为指示函数; 另一种是one-hot法(i.e., 用 来表示x属于第三类),则 ,其中 为向量 的...
  • matlab中多项式求导

    千次阅读 2021-04-21 16:01:21
    对比用多项式函数的 polyder 函数及符号函数中的 diff 函数,求导 x2+2x+3。...由于在Matlab中多项式是 以向量的形式存储的,直 接输入向量,Matlab将...多项式计算 6.1 数据统计处理 6.1.1 最大值和最小值 MATLAB提供...
  • 本单元的任务为求导。即将一个含自变量x的多项式F求导成为另外一个含自变量x的多项式f。使得 dF/dx = f为降低我们的难度,这个任务被分解成了三个阶段:(1)对幂函数进行求导(不允许嵌套)(2)对幂函数和三角函数进行...
  • 虽然求导很简单,但是很费脑细胞 所以我有了一个大胆的想法 教我的电脑学习函数求导~ 话不多说,开干!! 求导计算器的整体思路:(主要是递归思想) 首先定义一个表达式的类作为父类(也就是主程序主要调用的类)...
  • 向量求导方法与技巧

    千次阅读 2020-07-29 19:11:26
    求导小技巧 对矩阵求导是学习机器学习的第一步,如果不清楚如何求导机器学习的学习过程将是非常煎熬的,下面是总结的一个小技巧。这个方法是今天我在啃机器学习的时候发现了一个规律,然后对一些矩阵求导例子按照...
  • 矩阵的求导

    千次阅读 多人点赞 2019-08-13 17:25:30
    1.1矩阵向量求导引入 1.2矩阵向量求导定义 1.3矩阵向量求导布局 1.4 分母布局的另一种求解方法 1.5 总结 2基本的求导规则 2.1向量对标量求导(相对于数量变量的微分,即自变量是数量变量) 2.1.1 定义 2.1.2...
  • 在高中阶段,应用的频率比较多的可能也就是普通的微分和积分的一些公式,比如对x²求导就是2x,对x²积分就是⅓ x³+c,对sinx求导就是cosx,对1/x积分就是lnx+c......但是,对于有的形式的函数或表达式,我们对它...
  • 本文的主要内容是帮助你学习如何进行向量、矩阵以及高阶张量(三维及以上的数组)的求导。并一步步引导你来进行向量、矩阵和张量的求导。1 简化、简化,还是简化(重要的事情说三遍)在求解涉及到数组的导数时,大...
  • 以指数递降方式输入多项式非零系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。 输出 以与输入相同的格式输出导数多项式非零的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零...
  • matlab求导代码开发代码以研究使用MRI进行脑血管React性作图的新方法 该存储库中的代码用于分析种方法进行脑血管React性定位。 这研究中获得的数据可以在上找到。 如果您在工作中使用任一代码,请使用即将到来的...
  • OO_JAVA_表达式求导

    2021-02-26 21:36:42
    OO_JAVA_表达式求导_第一弹---------------------------------------------------表达式提取部分词法分析​ 首先,每一个表达式内部都存在不可分割的字符组,比如一个不止一位的数字,或是一个sin三角函数,这样不能...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,139
精华内容 9,255
关键字:

两项求导

友情链接: Judgment-of-odd.rar