最优化方法Python计算:标准型线性规划的辅助问题

对标准型线性规划
{ minimize c ⊤ x s.t.     A x = b x ≥ o ( 1 ) \begin{cases} \text{minimize}\quad\quad\boldsymbol{c}^\top\boldsymbol{x}\\ \text{s.t.\ \ \ \ }\quad\quad\quad\boldsymbol{Ax}=\boldsymbol{b}\\ \quad\quad\quad\quad\quad\quad\boldsymbol{x}\geq\boldsymbol{o} \end{cases}\quad\quad(1) minimizecxs.t.    Ax=bxo(1)
其中 A ∈ R m × n \boldsymbol{A}\in\text{R}^{m\times n} ARm×n,且rank A = m ≤ n \boldsymbol{A}=m\leq n A=mn b ≥ o \boldsymbol{b}\geq\boldsymbol{o} bo。假定 A \boldsymbol{A} A中存在部分列向量 α I 1 , ⋯   , α I m 1 \boldsymbol{\alpha}_{I_1},\cdots,\boldsymbol{\alpha}_{I_{m_1}} αI1,,αIm1构成单位阵 I m \boldsymbol{I}_m Im的一部分。其中, m i ≤ m m_i\leq m mim。记 n 1 = m − m 1 n_1=m-m_1 n1=mm1 E \boldsymbol{E} E I m \boldsymbol{I}_m Im中去掉 α I 1 , ⋯   , α I m 1 \boldsymbol{\alpha}_{I_1},\cdots,\boldsymbol{\alpha}_{I_{m_1}} αI1,,αIm1剩下的部分,则 E ∈ R m × n 1 \boldsymbol{E}\in\text{R}^{m\times n_1} ERm×n1。引入人工变量 x a ∈ R n 1 = ( x a 1 ⋮ x a n 1 ) \boldsymbol{x}_a\in\text{R}^{n_1}=\begin{pmatrix}x_{a_1}\\\vdots\\x_{a_{n_1}}\end{pmatrix} xaRn1= xa1xan1 ,令 A ′ = ( A , E ) \boldsymbol{A}'=(\boldsymbol{A},\boldsymbol{E}) A=(A,E),构造线性规划
{ minimize e ⊤ x a s.t.     A ′ ( x x a ) = A x + E x a = b x , x a ≥ o ( 2 ) \begin{cases} \text{minimize}\quad\quad\boldsymbol{e}^\top\boldsymbol{x}_a\\ \text{s.t.\ \ \ \ }\quad\quad\quad\boldsymbol{A}'\begin{pmatrix}\boldsymbol{x}\\\boldsymbol{x}_a\end{pmatrix} =\boldsymbol{Ax}+\boldsymbol{Ex}_a =\boldsymbol{b}\\ \quad\quad\quad\quad\quad\quad\boldsymbol{x},\boldsymbol{x}_a\geq\boldsymbol{o} \end{cases}\quad\quad(2) minimizeexas.t.    A(xxa)=Ax+Exa=bx,xao(2)
其中, e ∈ R n \boldsymbol{e}\in\text{R}^n eRn,所有元素均为1。(2)称为线性规划(1)的辅助线性规划。辅助问题总有一个明显的初始基矩阵: A ′ = ( A , E ) \boldsymbol{A}'=(\boldsymbol{A},\boldsymbol{E}) A=(A,E)的最后 m m m列构成的单位阵 I m \boldsymbol{I}_m Im
例1 标准型线性规划
{ minimize − 2 x 1 + x 2 s.t.   x 1 + x 2 − x 3 = 2 x 1 − x 2 − x 4 = 1 x 1 + x 5 = 3 x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 . \begin{cases} \text{minimize}\quad\quad -2x_1+x_2\\ \text{s.t.\ \ }\quad\quad\quad\quad x_1+x_2-x_3=2\\ \quad\quad\quad\quad\quad\quad x_1-x_2-x_4=1\\ \quad\quad\quad\quad\quad\quad x_1+x_5=3\\ \quad\quad\quad\quad\quad\quad x_1,x_2,x_3,x_4,x_5\geq0 \end{cases}. minimize2x1+x2s.t.  x1+x2x3=2x1x2x4=1x1+x5=3x1,x2,x3,x4,x50.
其等式约束系数矩阵和常数向量
A = ( 1 1 − 1 0 0 1 − 1 0 − 1 0 1 0 0 0 1 ) , b = ( 2 1 3 ) . \boldsymbol{A}=\begin{pmatrix}1&1&-1&0&0\\1&-1&0&-1&0\\1&0&0&0&1\end{pmatrix},\boldsymbol{b}=\begin{pmatrix}2\\1\\3\end{pmatrix} . A= 111110100010001 ,b= 213 .
其中, α 5 \boldsymbol{\alpha}_5 α5构成单位阵中一部分。添加人工变量 x 6 , x 7 x_6,x_7 x6,x7,构造其辅助线性规划
{ minimize x 6 + x 7 s.t.   x 1 + x 5 = 3 x 1 + x 2 − x 3 + x 6 = 2 x 1 − x 2 − x 4 + x 7 = 1 x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 ≥ 0 . \begin{cases} \text{minimize}\quad\quad x_6+x_7\\ \text{s.t.\ \ }\quad\quad\quad\quad x_1+x_5=3\\ \quad\quad\quad\quad\quad\quad x_1+x_2-x_3+x_6=2\\ \quad\quad\quad\quad\quad\quad x_1-x_2-x_4+x_7=1\\ \quad\quad\quad\quad\quad\quad x_1,x_2,x_3,x_4,x_5,x_6,x_7\geq0 \end{cases}. minimizex6+x7s.t.  x1+x5=3x1+x2x3+x6=2x1x2x4+x7=1x1,x2,x3,x4,x5,x6,x70.
其等式约束系数矩阵为
A ′ = ( A , E ) = ( 1 1 − 1 0 0 1 0 1 − 1 0 − 1 0 0 1 1 0 0 0 1 0 0 ) . \boldsymbol{A}'=(\boldsymbol{A},\boldsymbol{E})=\begin{pmatrix}1&1&-1&0&0&1&0\\1&-1&0&-1&0&0&1\\1&0&0&0&1&0&0\end{pmatrix}. A=(A,E)= 111110100010001100010 .
其中, E = ( α 6 , α 7 ) = ( 1 0 0 1 0 0 ) \boldsymbol{E}=(\boldsymbol{\alpha}_6,\boldsymbol{\alpha}_7)=\begin{pmatrix}1&0\\0&1\\0&0\end{pmatrix} E=(α6,α7)= 100010 。显然, ( α 6 , α 7 , α 5 ) = I 3 (\boldsymbol{\alpha}_6,\boldsymbol{\alpha}_7,\boldsymbol{\alpha}_5)=\boldsymbol{I}_3 (α6,α7,α5)=I3成为辅助线性规划的一个基矩阵。
下列代码定义构造标准型线性规划(1)的辅助问题(2)的Python函数。

import numpy as np									#导入numpy
def prepro(A):
    def find_e(A, ei):								#查找A中单位向量位置
        n = A.shape[1]
        j = 0
        while j < n:
            if(abs(A.T[j] - ei) < 1e-10).all():
                return j
            j += 1
        return -1
    m, n = A.shape
    pos = np.array([-1] * m)						#单位向量位置下标序列
    E = np.array([[]for i in range(m)])				#人工变量系数矩阵
    e = np.eye(m)									#单位阵
    i = 0
    k = 0
    while i < m:									#对每一个单位向量
        j = find_e(A, e[i])							#查找在A中位置
        if j >= 0:									#若在A中出现
            pos[i] = j								#记录位置下标
        else:										#未在A中
            E = np.hstack((E, e[i].reshape(m, 1)))	#追加到E
            pos[i] = n + k							#记录位置
            k += 1
        i += 1
    return E, pos

程序的第2~26行定义的prepro函数实现构造标准型线性规划辅助问题的过程。其唯一的参数A表示标准型问题的系数矩阵 A \boldsymbol{A} A。函数体内第12、13行分别将表示人工变量系数矩阵的E和单位向量在 ( A , E ) (\boldsymbol{A},\boldsymbol{E}) (A,E)中位置下标的序列的pos初始化为空集和 m m m − 1 -1 1的数组。第14行定义单位阵e,其中的每一个行向量e[i]构成一个单位向量。第17~25行的while循环确定每个单位向量e[i]在 ( A , E ) (\boldsymbol{A},\boldsymbol{E}) (A,E)中位置(或在A中,或追加于E),记录于pos。其中,第18行调用的find_e函数在矩阵A中查找与单位向量e[i]。该函数是定义于第3~10行内部函数。若e[i]为A中的第j列,返回j,否则返回 − 1 -1 1。本函数最终返回E和pos。
例2 用prepro构造
{ minimize − 2 x 1 + x 2 s.t.   x 1 + x 2 − x 3 = 2 x 1 − x 2 − x 4 = 1 x 1 + x 5 = 3 x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 . \begin{cases} \text{minimize}\quad\quad -2x_1+x_2\\ \text{s.t.\ \ }\quad\quad\quad\quad x_1+x_2-x_3=2\\ \quad\quad\quad\quad\quad\quad x_1-x_2-x_4=1\\ \quad\quad\quad\quad\quad\quad x_1+x_5=3\\ \quad\quad\quad\quad\quad\quad x_1,x_2,x_3,x_4,x_5\geq0 \end{cases}. minimize2x1+x2s.t.  x1+x2x3=2x1x2x4=1x1+x5=3x1,x2,x3,x4,x50.
的辅助问题的等式约束系数矩阵。
解: 根据例1的数据,下列程序完成计算

import numpy as np#导入numpy
from fractions import Fraction as F
np.set_printoptions(formatter={'all':lambda x:#设置输出格式
                               str(F(x).limit_denominator())})
A = np.array([[1, 1, -1, 0, 0],	#原问题系数矩阵
              [1, -1, 0, -1, 0],
              [1, 0, 0, 0, 1]])
E, pos = prepro(A)				#引入人工变量
print(E, pos)
A1 = np.hstack((A,E))
print(A1)

程序的第2~4行设置数据输出格式。第5~7行设置原问题等式约束系数矩阵A。第8行调用prepro函数,传递A计算辅助系统中人工变量的系数矩阵E和辅助问题的初始基矩阵列向量下标集pos。第10行构造辅助问题等式约束系数矩阵。运行程序,输出

[[1 0]
 [0 1]
 [0 0]] [5 6 4]
[[1 1 -1 0 0 1 0]
 [1 -1 0 -1 0 0 1]
 [1 0 0 0 1 0 0]]

意为辅助问题中人工变量的系数矩阵 E = ( 1 0 0 1 0 0 ) \boldsymbol{E}=\begin{pmatrix}1&0\\0&1\\0&0\end{pmatrix} E= 100010 ,初始基矩阵列向量为 ( α 6 , α 7 , α 5 ) (\boldsymbol{\alpha}_6,\boldsymbol{\alpha}_7,\boldsymbol{\alpha}_5) (α6,α7,α5)。辅助问题等式约束矩阵 A ′ = ( A , E ) = ( 1 1 − 1 0 0 1 0 1 − 1 0 − 1 0 0 1 1 0 0 0 1 0 0 ) \boldsymbol{A}'=(\boldsymbol{A},\boldsymbol{E})=\begin{pmatrix}1&1&-1&0&0&1&0\\1&-1&0&-1&0&0&1\\1&0&0&0&1&0&0\end{pmatrix} A=(A,E)= 111110100010001100010 。与例1的计算结果一致。
辅助问题(2)由于其目标函数 e ⊤ x a ≥ 0 \boldsymbol{e}^\top\boldsymbol{x}_a\geq0 exa0有下界,故必有最优解。辅助问题(2)与原问题(1)有如下的关系
定理1 标准型线性规划(1)有可行解,当且仅当其辅助线性规划(2)的最优解为 x a ∗ = o \boldsymbol{x}_a^{*}=\boldsymbol{o} xa=o
对问题(1)运用单纯形算法可算得其辅助问题(2)最优解 x ∗ = ( x x a ) \boldsymbol{x}^{*}=\begin{pmatrix}\boldsymbol{x}\\\boldsymbol{x}_a\end{pmatrix} x=(xxa),求解过程称为第一阶段。按定理1,若 x a = o \boldsymbol{x}_a=\boldsymbol{o} xa=o则原问题(1)可行。并且,若 x ∗ \boldsymbol{x}^{*} x中的原问题决策变量部分 x \boldsymbol{x} x恰巧是是(1)的基本可行解,即第一阶段计算所得的辅助问题的基矩阵 B ∗ \boldsymbol{B}^{*} B恰包含在原问题(1)的系数矩阵 A \boldsymbol{A} A中,则以此为起点,可运用单纯形算法求解问题(1),这一过程称为第二阶段
例3 标准型线性规划
{ minimize − 2 x 1 + x 2 s.t.   x 1 + x 2 − x 3 = 2 x 1 − x 2 − x 4 = 1 x 1 + x 5 = 3 x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 . \begin{cases} \text{minimize}\quad\quad -2x_1+x_2\\ \text{s.t.\ \ }\quad\quad\quad\quad x_1+x_2-x_3=2\\ \quad\quad\quad\quad\quad\quad x_1-x_2-x_4=1\\ \quad\quad\quad\quad\quad\quad x_1+x_5=3\\ \quad\quad\quad\quad\quad\quad x_1,x_2,x_3,x_4,x_5\geq0 \end{cases}. minimize2x1+x2s.t.  x1+x2x3=2x1x2x4=1x1+x5=3x1,x2,x3,x4,x50.
其目标函数系数向量 c = ( − 2 1 0 0 0 ) \boldsymbol{c}=\begin{pmatrix}-2\\1\\0\\0\\0\end{pmatrix} c= 21000 ,等式约束系数矩阵和常数向量
A = ( 1 1 − 1 0 0 1 − 1 0 − 1 0 1 0 0 0 1 ) , b = ( 2 1 3 ) . \boldsymbol{A}=\begin{pmatrix}1&1&-1&0&0\\1&-1&0&-1&0\\1&0&0&0&1\end{pmatrix},\boldsymbol{b}=\begin{pmatrix}2\\1\\3\end{pmatrix} . A= 111110100010001 ,b= 213 .
下列代码求解该问题。

import numpy as np													#导入numpy
from fractions import Fraction as F									#设置输出格式
np.set_printoptions(formatter={'all':lambda x:
                               str(F(x).limit_denominator())})
A = np.array([[1, 1, -1, 0, 0],										#原问题数据设置
              [1, -1, 0, -1, 0],
              [1, 0, 0, 0, 1]])
b = np.array([2, 1, 3])
c = np.array([-1, 2, 0, 0, 0])
E, pos = prepro(A)													#构造辅助问题系数矩阵
A1 = np.hstack((A, E))
Bind = pos															#构造辅助问题初始基矩阵
Nind = np.setdiff1d(np.arange(5+E.shape[1]),Bind)
c1 = np.concatenate((np.zeros(5), np.ones(E.shape[1])), axis = 0)	#辅助问题目标函数系数
Bindst = simplex(A1, b, c1, Bind, Nind)								#求解辅助问题最优解
Nindst = np.setdiff1d(np.arange(5), Bindst)
Bst = A1[:, Bindst]													#辅助问题最优解基矩阵
Bst1 = np.linalg.inv(B)												#逆阵
xBst = np.matmul(Bst1,b.reshape(3, 1)).flatten()					#对应基矩阵最优解部分
x = np.zeros(5 + E.shape[1])
x[Bindst] = xBst													#辅助问题最优解
print('辅助问题最优解x=%s'%x)
print('辅助问题最优解对应的基矩阵向量下标:%s'%Bindst)					#辅助问题最优解基矩阵包含于原问题系数矩阵
Bind = simplex(A, b, c, Bindst, Nindst)								#求解原问题最优解
B = A[:, Bind]														#当前基矩阵
B1 = np.linalg.inv(B)												#逆阵
xB = np.matmul(B1,b.reshape(3, 1)).flatten()						#对应基矩阵最优解部分
x = np.zeros(5)
x[Bind] = xB														#原问题最优解
print('原问题最优解x=%s'%x)

程序的前14行与例2中的代码一样调用prepro构造原问题辅助问题。第15行调用博文《最优化方法Python计算:标准型线性规划的单纯形算法》定义的simplex函数求解辅助问题,完成第一阶段计算。第17~22行计算并输出辅助问题最优解。根据第15所得辅助问题最优解对应的基矩阵(第23行输出)包含于原问题的系数矩阵中(见下列输出),第18行调用simplex求解原问题,完成第二阶段计算。运行程序,输出

辅助问题最优解x=[3/2 1/2 0 0 3/2 0 0]
辅助问题最优解对应的基矩阵向量下标:[1 0 4]
原问题最优解x=[3 0 1 2 0]

注意辅助问题最优解中,人工变量 x 6 = x 7 = 0 x_6=x_7=0 x6=x7=0,故原问题可行。辅助问题最优解对应基矩阵列向量下标为2,1,5均含于原问题系数矩阵中,故可利用它直接求解原问题。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/767186.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

编译器的控制流图分析

1&#xff0c;建立感性认识 1.1 源码 hello.c int x 10; int y 11; int main(){int z 12;for (int i 0;i < 10;i){z * x * y;}if(z>7.0)z1.0f;elsez 2.0f;return 0; }1.2 编译 2005 sudo apt-get install -y graphviz-doc libgraphviz-dev graphviz2034 ../ex_…

Java学习高级一

修饰符 static 类变量的应用场景 成员方法的分类 成员变量的执行原理 成员方法的执行原理 Java之 main 方法 类方法的常见应用场景 代码块 设计模式 单例设计模式 饿汉式单例设计模式 懒汉式单例设计模式 继承 权限修饰符

LeetCode题练习与总结:二叉树的后序遍历--145

一、题目描述 给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[3,2,1]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[]示例 3&#xff1a; 输入&#xff1a…

以太坊DApp交易量激增83%的背后原因解析

引言 最近&#xff0c;以太坊网络上的去中心化应用程序&#xff08;DApp&#xff09;交易量激增83%&#xff0c;引发了广泛关注和讨论。尽管交易费用高达2.4美元&#xff0c;但以太坊仍在DApp交易量方面遥遥领先于其他区块链网络。本文将深入探讨导致这一现象的主要原因&#…

颅内感染性疾病患者就诊指南

颅内感染性疾病&#xff0c;即病原体侵入中枢神经系统&#xff0c;导致脑部或脑膜发生炎症的疾病。这些病原体可能是细菌、病毒、真菌或寄生虫等。颅内感染不仅会对脑组织造成损害&#xff0c;还可能引发一系列严重的并发症&#xff0c;如癫痫发作、意识障碍等 颅内感染性疾病的…

国产软件号称Windows系统的天花板,却被误认为是外国佬研发

说起国产软件&#xff0c;大家总是容易给它们贴上“流氓、捆绑、满满的都是套路”这样的标签。 其实挺冤枉的&#xff0c;有些软件真的挺好用&#xff0c;也挺良心的&#xff0c;但就是因为这些刻板印象&#xff0c;老是被误以为是外国工程师搞出来的。 VeryCapture 之前小编…

JavaScript之深入对象,详细讲讲构造函数与常见内置构造函数

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;我是前端菜鸟的自我修养&#xff01;今天给大家详细讲讲构造函数与常见内置构造函数&#xff0c;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;原创不易&#xff0c;如果能帮助到带大家&#xff0c;欢迎…

达梦数据库的系统视图v$deadlock_history

达梦数据库的系统视图v$deadlock_history 在达梦数据库&#xff08;DM Database&#xff09;中&#xff0c;V$DEADLOCK_HISTORY 视图记录了数据库中发生的死锁信息。通过查询这个视图&#xff0c;数据库管理员可以监控和诊断数据库中的死锁问题&#xff0c;从而采取相应的措施…

鸿蒙认证值得考吗?

鸿蒙认证值得考吗&#xff1f; 鸿蒙认证&#xff08;HarmonyOS Certification&#xff09;是华为为了培养和认证开发者在鸿蒙操作系统&#xff08;HarmonyOS&#xff09;领域的专业技能而设立的一系列认证项目。这些认证旨在帮助开发者和企业工程师提升在鸿蒙生态中的专业技能…

小故事——半个世纪的爱情

半个世纪的爱情 故事的开端永远是在那个情窦初开的年纪&#xff0c;那富有蓬勃朝气的少年时代&#xff0c;眼神中青涩未尽&#xff0c;正是这个时间&#xff0c;才真正的让人难以忘怀。她不过是那班级里面普普通通的小孩&#xff0c;故事的男主角同样也是简简单单的存在&#…

激光SLAM如何动态管理关键帧和地图

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务&#xff0c;并且需要GPU资源&#xff0c;可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&…

Activity、Window、DecorView的关系

目录 一、Activity、Window、DecorView的层级关系如下图所示&#xff1a; 1、Activity 2、Window 3、DecorView 二、DecorView初始化相关源码 三、DecorView显示时机 前言&#xff1a; 不同的Android版本有差异&#xff0c;以下基于Android 11进行讲解。 一、Activi…

音乐发行平台无加密开源源码

适用于唱片公司&#xff0c;用于接收物料&#xff0c;下载物料功能&#xff1a;个人或机构认证&#xff0c;上传专辑和歌曲&#xff0c;版税结算环境要求php7.4Nginx 1、导入数据库 2、/inc/conn.php里填写数据库密码等后台路径/admin&#xff08;可自行修改任意入口名称&…

Meta 3D Gen:文生 3D 模型

是由 Meta 公布的一个利用 Meta AssetGen&#xff08;模型生成&#xff09;和 TextureGen&#xff08;贴图材质生成&#xff09;的组合 AI 系统&#xff0c;可以在分分钟内生成高质量 3D 模型和高分辨率贴图纹理。 视频演示的效果非常好&#xff0c;目前只有论文&#xff0c;期…

计算机网络--网络层

一、网络层的服务和功能 网络层主要为应用层提供端对端的数据传输服务 网络层接受运输层的报文段&#xff0c;添加自己的首部&#xff0c;形成网络层分组。分组是网络层的传输单元。网络层分组在各个站点的网络层之间传输&#xff0c;最终到达接收方的网络层。接收方网络层将运…

PLC_博图系列☞TP:生成脉冲

PLC_博图系列☞TP&#xff1a;生成脉冲 文章目录 PLC_博图系列☞TP&#xff1a;生成脉冲背景介绍TP&#xff1a; 生成脉冲说明参数脉冲时序图示例 关键字&#xff1a; PLC、 西门子、 博图、 Siemens 、 TP 背景介绍 这是一篇关于PLC编程的文章&#xff0c;特别是关于西门…

快速上手文心一言指令:解锁AI对话新纪元

快速上手文心一言指令 一、引言&#xff1a;文心一言的魅力所在二、准备工作&#xff1a;了解文心一言平台2.1 轻松注册&#xff0c;开启智能对话之旅2.2 深度探索&#xff0c;掌握界面布局奥秘2.2.1 输入框&#xff1a;智慧交流的起点2.2.2 回复区&#xff1a;即时反馈的窗口2…

Echarts-折线图

1.案例1 1.1代码 option {"tooltip": {"trigger": "axis","backgroundColor": "rgba(32, 33, 36,.7)","borderColor": "rgba(32, 33, 36,0.20)","borderWidth": 10,"textStyle"…

星辰资讯 | TiUP v1.16 发版,支持 PD 微服务

如果你对 TiDB 还不太了解&#xff0c;或者你对数据库安装部署的认知仍然停留在手动和脚本时代&#xff0c;那么&#xff0c;请先戳这里了解一下 TiUP 神器&#xff1a; 震惊&#xff01;数据库小白装国产数据库只需10分钟&#xff01; TiDB 7.x 源码编译之 TiUP 篇 TiUP&#…

基于改进高斯-拉普拉斯滤波器的一维时间序列平滑与降噪(MATLAB)

以图像处理为例&#xff0c;拉普拉斯算子是基于图像的二阶导数来找到边缘并搜索过零点&#xff0c;传统的拉普拉斯算子常产生双像素宽的边缘&#xff0c;对于较暗区域中的亮斑进行边缘检测时&#xff0c;拉普拉斯运算就会使其变得更亮。因此&#xff0c;与梯度算子一样&#xf…