python求向量函数的雅可比矩阵_[数学] 向量函数的雅可比矩阵与链式法则
复习一下我的数学知识T_T
1. 回顾高等数学:多元数量函数的梯度
回想高等数学中常见的多元数量函数$f:\mathbb{R}^{n}\rightarrow \mathbb{R}^{1}$,我们可以把他的输入当作一个向量 $\bf{x}\in \mathbb{R}^{n}$,输出$y=f(\bf{x})\in \mathbb{R}^{1}$是一个数字。那么由高数的知识我们知道$f$的梯度定义为
$$
\nabla f_{\boldsymbol{x}} \overset{\underset{\mathrm{def}}{}}{=} \left[ \frac{\partial f }{\partial x_1}, \frac{\partial f }{\partial x_2},\cdots,\frac{\partial f }{\partial x_n} \right]=\frac{\partial f }{\partial \boldsymbol{x}}
$$
有了上式,我们还可以写出全微分的向量化表示
\[
\begin{aligned}
df &= \frac{\partial f}{\partial x_1}dx_1+\frac{\partial f}{\partial x_2}dx_2+\cdots+\frac{\partial f}{\partial x_n}dx_n \\
&=\left[ \frac{\partial f }{\partial x_1}, \frac{\partial f }{\partial x_2},\cdots,\frac{\partial f }{\partial x_n} \right] \left[dx_1, dx_2,\cdots,dx_n \right]^T \\
&=\frac{\partial f }{\partial \boldsymbol{x}} d\boldsymbol{x}
\end{aligned}
\]
接下来我们将其推广到向量函数。向量函数的“梯度”其实就是雅可比矩阵。
2. 向量函数求导:雅可比矩阵
设$f:\mathbb{R}^{n}\rightarrow \mathbb{R}^{m}$是一个从映射到的函数,它的输入是一个向量 $\bf{x}\in \mathbb{R}^{n}$,输出是向量$\bf{y}=f(\bf{x})\in \mathbb{R}^{m}$。
如果我们将输出向量$\bf{y}$的每个分量$\bf{y_i}$看作一个独立的多元数量函数,那么我们可以写出每个$\bf{y_i}$对每个$\bf{x_j}$的偏导数(也就是梯度)
$$
\left[ \frac{\partial y_i }{\partial x_1}, \frac{\partial y_i }{\partial x_2},\cdots,\frac{\partial y_i }{\partial x_n} \right]
$$
将每个$\bf{y_i}$的梯度组合起来就得到了雅可比矩阵
\[
\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=\frac{\partial(y_1,…,y_m)}{\partial(x_1,…,x_n)}
$$
雅可比矩阵表示了函数 $\bf{f}$ 在每一处可导点的导数。具体地说,设 $\Delta \bf{x}$ 为一在 $\bf{x}$ 处的位移向量(假设为列向量),则 $J(\bf{x}) \cdot \Delta \bf{x}$ 就是函数值的位移向量(类似一元数值函数里 $\Delta y=y'(x)*\Delta x$),该函数值的位移向量即为 $\bf{x}$ 处的$\bf{f}(\bf{x})$增量的最佳线性逼近(更熟悉点的词叫全微分)。类似于导数,雅可比矩阵是函数局部的线性化,使用矩阵形式来表示微分(线性逼近)这个线性变换。
提一点雅可比行列式有关的:当上述$m=n$时,$\bf{f}$是一个从$\mathbb{R}^n$到$\mathbb{R}^n$的映射,因此雅可比矩阵是一个方阵,我们可以求出来这个方阵的行列式,常称雅可比行列式。对高等数学(下)有印象的人应该可以记得起这个名字,雅可比行列式常用在多元微积分中,尤其是在在换元积分时,需要用它作为乘子。为什么要作为乘子出现?感性的理解,这还是因为在积分中空间转换带来的面积/体积变化,而众所周知行列式就是体积/面积,雅可比矩阵作为导数就表现了局部的线性变化比例。
3. 向量函数求导:链式法则
一般来说我们最常见的是标量函数的链式法则,类似这样:
设$f$和$g$为两个关于$x$可导函数,则复合函数$(f\circ g)(x)$的导数$(f\circ g)'(x)$为:$(f\circ g)'(x)=f'(g(x))g'(x)$.
那么向量函数的链式法则又是什么样的?
考虑可微函数 $f:\mathbb{R}^m \rightarrow \mathbb{R}^k$ 和 $g:\mathbb{R}^n \rightarrow \mathbb{R}^m$,以及$\mathbb{R}^n$上一点 $\bf{x}$。令 $D_{\bf{x}}g$ 表示$g$在$\bf{x}$处的全微分,$D_{g(\bf{x})}f$ 表示$f$在$g(\bf{x})$处的全微分,则复合函数$(f\circ g)(\bf{x})$的全微分可表示为:
$$
D_{\bf{x}}(f\circ g)(\bf{x})=D_{g(\bf{x})}f\circ D_{\bf{x}}g
$$
相应的,用雅可比矩阵表示的形式为:
$$
J_{f \circ g}=(J_f \circ g)J_{g}
$$
或者用变量名表示的话写成
$$
\frac{\partial(y_1,…,y_k)}{\partial(x_1,…,x_n)}=\frac{\partial(y_1,…,y_k)}{\partial(u_1,…,u_m)}\frac{\partial(u_1,…,u_m)}{\partial(x_1,…,x_n)}
$$
上式中右边意为两个矩阵相乘。
严谨的数学证明是比较技术性的,本文不予讨论(wobuhui)。我们来从直观上理解一下这个等式。首先,我们知道雅可比矩阵的“成因”是用矩阵来表示一阶微分的,也就是把一阶微分的算子当成一个线性变换,而复合函数等于是一个嵌套,也就是函数的函数,对应到线性变换里,也就是线性变换的线性变换,而我们又知道用矩阵表示线性变换时这种“线性变换的线性变换”,就是相当于两个矩阵的乘积。到这里。我们把微积分和线性代数两种工具结合到了一起,就得到了这个结果。
4. 例子
举一个具体的算例来说明今天所讲的内容吧。
设有函数 $g:\mathbb{R} \rightarrow \mathbb{R}^3$为
$$
g(t)=
\left(
\begin{array}{c}
t \
t^2\
t^3
\end{array}
\right)
$$
和 $f:\mathbb{R}^3 \rightarrow \mathbb{R}$为
$$
f
\left(
\begin{array}{c}
x \
y\
z
\end{array}
\right)=x^2+xyz+5y
$$
现在要求求出$(f \circ g)'(t)$
首先我们使用暴力算的方法,全部带入之后计算一下看看
\[
\begin{aligned}
(f \circ g)'(t)&=f(g(t))=f(t,t^2,t^3)\\
&=t^2+t^6+5t^2\\
&=6t^2+t^6
\end{aligned}
\]
这个函数就很简单了,我们可以直接求导得到
$$
(f \circ g)'(t)=12t+6t^5 \qquad (1)
$$
然后我们再用雅可比矩阵和链式法则来求一下
由上可知,
$$
J_{f}(x,y,z)=\left[2x+yz,xz+5,xy \right]
$$
代入$g(t)$可得
$$
J_{f}(g(t))=\left[2t+t^5,t^4+5,t^3 \right]
$$
对于$g$,有
$$
J_{g}(t)=\left[\begin{array}{c}
1\
2t\
3t^2
\end{array}\right]
$$
运用链式法则我们可以得到
\[
\begin{aligned}
(f \circ g)'(t)&=J_{f}(g(t))\cdot J_{g}(t)\\
&=\left[2t+t^5,t^4+5,t^3 \right]
\left[\begin{array}{c}
1\\
2t\\
3t^2
\end{array}\right]\\
&=2t+t^5+2t^5+10t+3t^5\\
&=12t+6t^2
\end{aligned} \qquad (2)
\]
这与(1)的结果一致,说明我们使用链式法则
计算的正确性是有保证的。
python求向量函数的雅可比矩阵_[数学] 向量函数的雅可比矩阵与链式法则相关推荐
- python求两数最大公因数_『用python求俩个数的最大公约数和最小公倍数』
python:用递归的方法编写一个函数gys(x,y),计算两个数字的最大公约数. (提示,大的 def gys(x,y): a,b=max(x,y),min(x,y) c=a%b if c==0: ...
- 统计学和python结合起来打的比赛_数学与Python有机结合及统计学、微积分、线性代数相关资源、图形软件...
无论是三大数学软件Matlab(通信.控制等工程例外).Maple.Mathematica,还是三大统计软件Spass.Stata.SAS,这些可视化的软件本身就是编程的一个体现,它们在一定程度上降低 ...
- python求素数的函数_如何用python求素数
如何用python求100以内的素数? 质数(primenumber)又称素数,有无限个.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数,如:2.3.5.7.11.13.1 ...
- python求雅可比矩阵_提高自组雅可比矩阵的性能
从https://github.com/HIPS/autograd/issues/439我发现有一个未记录的函数autograd.make_jvp,它以快速前进模式计算雅可比.在 链接说明:Given ...
- python求梅森尼数_谈谈梅森旋转:算法及其爆破
https://liam.page/https://liam.page/https://liam.page/ 现代编程语言,大都在标准库中包含了随机库.例如,C++ 在 C++11 标准中添加了 ra ...
- python 怎么算l2范数_数学推导+纯Python实现机器学习算法13:Lasso回归
版权说明:本公号转载文章旨在学习交流,不用于任何商业用途,版权归原作者所有,如有异议,敬请后台联络我们,议定合作或删除,我们将第一时间按版权法规定妥善处理,非常感谢! Python机器学习算法实现 A ...
- python求圆柱体的体积_漫谈超球体的体积公式
现实生活中,我们只要掌握圆的周长和面积公式,了解球的表面积和体积公式就够用了,没有什么可以深究的.本篇将带你走进高维度球的表面积和体积公式[1]. 我们生活在三维空间,对更高维度的空间难以构想.笛卡尔 ...
- python求两数最大公因数_使用辗转相除法求两个数的最大公因数(python实现)
数学背景: 整除的定义: 任给两个整数a,b,其中b≠0,如果存在一个整数q使得等式 a = bq 成立,我们就说是b整除a,记做b|a. 性质1:如果c|a,c|b,且对于任意的整数m,n,则有c| ...
- python求列表最大值下标_切片,丝滑的字符串 | Python基础连载(三)
开篇 之前已经提到过,在Python中,一共有六大数据类型 本期就开始学习Python的六个标准数据类型中的字符串. 什么是字符串 在Python中,字符串是用一对引号(单引号/双引号均可)包裹起来的 ...
最新文章
- Linux用命令修改dpi,Ubuntu17.10通过dpi更改系统字体大小比例的方法
- 【Java】Java_05 标识符与字符集
- 实现 Java 本地缓存
- C函数加密实现及常用字符串处理函数的使用
- git ssh配置完后拉取代码_Git中SSH key配置秘钥生成和如何拉取代码
- 数据库对象管理 (表)
- DCIC巡游车与网约车运营特征对比分析-数据读取
- 事件与委托的一点概念理解
- C#如何解决对ListView控件更新以及更新时界面闪烁问题
- jenkins 实践
- Android 系统性能优化(76)--- 如何抓取traceview?
- mysql 数据库的维护,优化
- bzoj2463: [中山市选2009]谁能赢呢?(博弈论)
- OpenStack Queens 女王新神器 — 卷多重挂载
- vue 基于网易云API的短信验证码登录(axios封装)
- ASO优化如何做?3个核心要点必须掌握
- 普度大学计算机科学博士,Purdue的Computer Sciences「普渡大学西拉法叶分校计算机科学系」...
- Steam游戏信息爬取-热销榜价格好评率折扣评论
- print的常用写法(python)
- uni-app 上传图片到七牛云
热门文章
- 关于nginx启用HTTP2后出现ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY错误的解决方案
- 如何用WebView打开pdf链接
- 如果面试遇到水货面试官,怎么办?
- Redis(周阳老师)
- Saiku的基本使用介绍(三)
- 基于PHP+MySQL大学生心理健康管理系统的设计与实现
- H5 点击链接 加入qq群聊
- [Excel] Excel固定任意行或者任意列
- JavaScript打印和预览等
- [RK3288] [Android 7.1] u-blox GPS调试