美文网首页
第11课 扩展知识

第11课 扩展知识

作者: 诸老师 | 来源:发表于2020-06-30 08:51 被阅读0次

多元函数的梯度:

多元函数对各个自变量偏导数形成的向量叫做多元函数的梯度。
写成修饰器时这样的

def grad(func):
    def f(*args):
        return Matrix([diff(func(*args),i,1) for i in args]).T
    return f

计算举例:

@grad
def gf(x,y):
    return x**2+x*y+y**2
gf(x,y)

\left[\begin{matrix}2 x + y & x + 2 y\end{matrix}\right]

雅可比矩阵

如果有一个多元函数,它输入的每个参数对应着某一n维向量的每一维度,并且这个n元函数的输出为m维向量,那么,输出向量的每个分量对输入向量的每个分量的偏导数构成一个m行n列的矩阵,这个m行n列的矩阵叫做这个函数的雅可比矩阵。
计算举例

u=x**2+2*x*y+z
v=x-y**2+z**2
X = Matrix([u, v])
Y = Matrix([x, y, z])
X.jacobian(Y)

\left[\begin{matrix}2 x + 2 y & 2 x & 1\\1 & - 2 y & 2 z\end{matrix}\right]

Hessian矩阵

n元函数的二阶偏导数有n^2个,如果把它们依次排开,能够得到一个对称矩阵,这个矩阵就叫做这个函数的Hessian矩阵
矩阵主对角线上的n个元素是对同一个自变量求二阶偏导数。
例如,求下面这个的Hessian矩阵
f(x,y,z)=x^{2} + 2 x y + 4 y^{2} + 6 y z + 4 z^{2}

f = x**2+2*x*y+4*y**2+6*y*z+4*z**2
hessian(f,(x,y,z))

\left[\begin{matrix}2 & 2 & 0\\2 & 8 & 6\\0 & 6 & 8\end{matrix}\right]

二次型

二次型是只由二次项构成的二次函数,例如下面的三元二次函数:
f(x,y,z)=x^{2} + 2 x y + 4 y^{2} + 6 y z + 4 z^{2}
写成矩阵的形式为
\left[\begin{matrix}x & y & z\end{matrix}\right]×\left[\begin{matrix}1 & 1 & 0\\1 & 4& 3\\0 & 3 & 4\end{matrix}\right]×\left[\begin{matrix}x\\y\\z\end{matrix}\right]=\left[\begin{matrix}x+y & x+4y+3z & 3y+4z\end{matrix}\right]×\left[\begin{matrix}x\\y\\z\end{matrix}\right]=\left[\begin{matrix}1xx+2xy+4yy+6yz+4zz\end{matrix}\right]
这个矩阵形式也叫二次型,其中,
\left[\begin{matrix}1 & 1 & 0\\1 & 4& 3\\0 & 3 & 4\end{matrix}\right]
等于这个二次型的Hessian矩阵的一半

矩阵的各种“定”

矩阵正定

用任意一个非零的n维行向量,乘以一个n阶方阵,再乘以这个n维行向量的转置,得到一个只有一个元素的矩阵,这个元素都大于0,则这个n阶方阵是一个正定矩阵

判定矩阵正定的常用方法:
  1. 矩阵的特征值全大于0
  2. 矩阵的顺序主子式都大于0(n阶方阵的前i行和前i列构成的矩阵的行列式,叫做这个方阵的i阶顺序主子式,n阶方阵总共有n个顺序主子式)
  3. 矩阵合同于与之同阶的单位矩阵(如果存在一个可逆矩阵C,使得C的转置乘以n阶方阵A,再乘以C的结果等于n阶方阵B,则矩阵A合同与矩阵B)

矩阵负定

用任意一个非零的n维行向量,乘以一个n阶方阵,再乘以这个n维行向量的转置,得到一个只有一个元素的矩阵,这个元素都小于0,则这个n阶方阵是一个负定矩阵

矩阵半定

用任意一个非零的n维行向量,乘以一个n阶方阵,再乘以这个n维行向量的转置,得到一个只有一个元素的矩阵,这个元素都大于或小于0,则这个n阶方阵是一个半定矩阵

矩阵半正定

用任意一个非零的n维行向量,乘以一个n阶方阵,再乘以这个n维行向量的转置,得到一个只有一个元素的矩阵,这个元素都大于或等于0,则这个n阶方阵是一个半正定矩阵

矩阵半负定

用任意一个非零的n维行向量,乘以一个n阶方阵,再乘以这个n维行向量的转置,得到一个只有一个元素的矩阵,这个元素都小于或等于0,则这个n阶方阵是一个半负定矩阵

矩阵不定

除了上述五种定的情形外的矩阵不定。

from sympy import *
from sympy.matrices import Matrix

def classify_matrix(matrix):
    eigenvalues = matrix.eigenvals()
    positive = 0
    negative = 0
    zero = 0
    for eigenvalue in eigenvalues.values():
        if eigenvalue > 0:
            positive += 1
        elif eigenvalue < 0:
            negative += 1
        else:
            zero += 1
    if positive == matrix.shape[0]:
        return "正定"
    elif negative == matrix.shape[0]:
        return "负定"
    elif zero > 0:
        return "不定"
    elif positive > 0 and negative > 0:
        return "半定"
    elif positive > 0 and negative == 0:
        return "半正定"
    elif positive == 0 and negative > 0:
        return "半负定"

matrix = Matrix([[1, -2, -3], [-2, -5, -3], [-3, -3, -6]])
print(classify_matrix(matrix))

这是用来判断矩阵如何定的python代码,输入的必须是方阵,函数没有做输入检查,请注意。

推论——针对多元函数

如果一个多元函数的Hessian矩阵半正定,则此函数为凸函数;如果一个多元函数的Hessian矩阵正定,则此函数为严格凸函数。

相关文章

  • Kotlin学习 4 -- 扩展函数和运算符重载

    本篇文章主要介绍以下几个知识点:扩展函数运载符重载内容参考自第一行代码第3版 1. 扩展函数 扩展函数是指即使在...

  • shell一键安装命令到底干了啥

    原文置顶关于curl扩展知识

  • django知识扩展

    1.用户[内置用户] django.contrib.auth.models import User 2.子路由命名...

  • java知识扩展

    jvm进程 JVM进程可以由bin\jps查看。在命令行下输入jps 由一个jdk文件系统,可以产生很多jvm进程...

  • PHP 扩展知识

    pcntl扩展:(进程控制) pcntl扩展是进程控制的重要扩展,但目前Win不支持。包含进程创建、进程监控、...

  • HTML扩展知识

    1.全局属性 几乎所有元素都具有的属性 1.1 accesskey & tabindex 1.2 id,class...

  • 扩展知识1

    标识符(identify)变量名是标识符的一种。包名、模块名、函数名、类名都是标识符。标识符遵守的规则和变量大体一...

  • 《总统是靠不住的》读书笔记(5)

    第9-10封信 第9-10封信的内容讲的是水门事件的高潮部分,精彩犹如一部好莱坞大片。 扩展知识: 1.1978美...

  • 尚硅谷大数据技术之Flume

    第6章 知识扩展6.1 常见正则表达式语法元字符 描述^ 匹配输入字符串的开始位置。如果设置了RegExp对象...

  • 剑指offer——面试题1:赋值运算符函数

    文章大纲:1.题目简介2.题目关键解答3.知识总结和扩展 题目简介 题目关键解答 知识总结和扩展 1.const的...

网友评论

      本文标题:第11课 扩展知识

      本文链接:https://www.haomeiwen.com/subject/rfpltktx.html