底层逻辑之:欧拉-拉格朗日方程(Euler-Lagrange equations)变分法(Calculus of Variations)的核心思想

0前言:

0.1 17世纪的泛函(Functional)分析与变分法Calculus of Variations)

在17世纪,数学家们开始遇到一些需要处理函数集合的问题,这些问题涉及到函数的极值、曲线的长度、曲面的面积等。这些问题无法用传统的微积分方法来解决,因为微积分主要研究的是单个函数的性质和行为。因此,数学家们开始探索一种新的数学工具来处理这类问题,这就是泛函的雏形。

泛函是一种特殊的映射,它的特点在于其输入不是单个或多个数值变量,而是一个函数(或称为函数曲线、函数图像等)。这个函数可以看作是一个无穷维的“向量”,因为它包含了在定义域内所有点上的取值信息。泛函则是对这个“向量”进行某种运算或评估,得出一个实数(或复数)作为结果。

在许多实际问题中,我们需要对函数进行整体性的评估或优化,而不是仅仅关注函数在某一点的取值。例如,在物理学中,我们可能需要计算一个物理系统在不同状态下的总能量或总动量,这些量都是函数(如状态函数)的泛函。

0.2 最速降线问题与变分法的萌芽

1696年,约翰·伯努利提出了著名的最速降线问题,即一个质点在重力作用下从一个给定点滑到另一个给定点,沿着什么曲线滑下所需时间最短。这个问题引发了数学家们的兴趣和研究。虽然当时并未明确提出泛函的概念,但最速降线问题可以看作是泛函分析的一个早期应用实例。

欧拉在1733年通过变分原理解决了最速降线问题,这标志着变分法的正式诞生。变分法是一种求解泛函极值的方法,它可以说是最初的泛函分析。在18世纪,拉格朗日进一步发展了变分法,系统性地提出了拉格朗日乘数法和欧拉-拉格朗日方程,也就是目前变分法的核心:欧拉-拉格朗日方程


1.欧拉-拉格朗日方程的提出- 最速降线问题的解决

1.1 问题描述

假设物体从原点O点开始出发,沿任意曲线运动到A点(O点坐标为(x1,y1),A点坐标为(x2,y2),A点低于O点),物体运动过程中只有重力做功,无摩擦力。何种曲线才能让物体从A滑到b的时间最短?

1.2 构建-泛函-数学模型

物体沿曲线下滑的速度由重力势能转化为动能决定。设物体在曲线上的任意一点 (x_t,y_t)处的速度为 v,设此时物体距离出发点的距离纵向距离为y,横向距离为x,则根据能量守恒定律E=1/2\cdot m\cdot v^2=g\cdot m\cdot y,有:

  v = \sqrt{2gy}

物体沿曲线从 A到 B 所需的时间 T可以表示为:

T = \int_{x_1}^{x_2} \frac{ds}{v}

其中 ds 是曲线上的微小弧长,可以表示为:

ds = \sqrt{1 + \left(\frac{dy}{dx}\right)^2} dx

这里的微小弧长就是勾股定理,x的长度参考长度为1,通过斜率(dy/dx)计算斜面的参考长度。

将 v和 ds 代入 T 的表达式,得到:

T = \int_{x_1}^{x_2} \frac{\sqrt{1 + \left(\frac{dy}{dx}\right)^2}}{ \sqrt{2gy}} dx

在这里,由于不知道y与x之间的映射关系,仅利用经典的微积分理论体系,T的数值不可能被计算出来,也无法解决T的极值问题。

但是还有一种思路:将x和y的映射关系(函数)同样作为未知函数输入,将\frac{dy}{dx}作为未知变量。于是,令:

F(y,x,y') = \frac{\sqrt{1 + (y')^2}}{\sqrt{2gy}}, \quad y' = \frac{dy}{dx}

原式简写为:

T[y]= \int_{x_1}^{x_2} F\left( y, x,y'\right) dx

在这里,自变量变为数集y和映射集\frac{dy}{dx},已经不是简单的多个数值自变量的函数方程了,其同时将数值元素的映射关系作为自变量。为了进行区分,这种特别的函数称为泛函(Functional),即更加广义的函数(Function

在泛函T[y]中,y代表的一系列的数值集合,在定义\quad y' = \frac{dy}{dx}中,x和y之间存在某一种映射关系,这些数值与映射关系的集合构成了泛函系统,而输出T[y]则是一个实数值。在这一问题中,我们求解的不是T[y]这一实数值,而是T[y]取极值时,泛函系统中x与y的映射关系(表达式)。

1.3 变分法与欧拉拉格朗日方程 

已知:

T[y] = \int_{x_1}^{x_2} F\left(y,x,y'\right) dx, \quad y' = \frac{dy}{dx}    (1)

假设泛函 T[y] 在某函数y_0(x)处取得极值,那么对于y_0(x) 的任何微小变化 \delta y(x),泛函的变化量 \delta T都应该为零(可以忽略不计)。这是因为,如果\delta T不为零,那么我们就可以通过调整\delta y(x)的大小和方向来使得 T[y] 在 y_0(x)附近取得更大的值(对于极大值)或更小的值(对于极小值),这与 T[y]y_0(x) 处取得极值的假设相矛盾。

这一原理与函数极点处导数为0有异曲同工之妙。对于普通函数而言,其极点前后点的导数也是趋近于0的(线性近似)。

 为了更好表述这一问题,对于泛函中映射关系y(x)的任何微小变化 \delta y(x),学者们称之为变分\delta y(x)y(x)的变分。而利用变分概念求解y(x)的映射结构的数学方法被称为变分法。

也就是说:如果y(x) 是使 T[y]  取得极值的函数,那么对于任何满足边界条件的变分\delta y(x),即将函数进行微小变化:y(x)\rightarrow y(x) +\varepsilon \eta(x) (其中 \varepsilon 是一个很小的参数,且  \eta(x_1) = \eta(x_2) = 0 ),对应泛函的变化 \delta T 必须为 0:

  1. \eta(x)是什么 ?

    \eta(x) 是一个任意的函数,它表示函数 y(x) 的一个微小变化的方向和形状。当我们想要研究泛函 T[y]在某个函数 y(x) 附近的极值行为时,我们会考虑 y(x) 沿着不同方向上的微小变化。具体来说,η(x) 可以是任何满足一定条件(比如连续、可微等)的函数,它用于构造 y(x) 的微小变化 y(x)+εη(x)。

  2. 为什么 ε 是一个很小的参数?
    在变分法中,当我们想要研究一个泛函 T[y] 的极值时,我们考虑函数 y(x) 的微小变化。这种微小变化可以通过引入一个小参数 ε 来表示,它乘以一个任意的函数 η(x),即 y(x)\rightarrow y(x) +\varepsilon \eta(x)。这里,ε 很小是为了保证变化是微小的,从而可以在这一点上进行线性近似,这是变分法的基础。
  3. 为什么\eta(x_1) = \eta(x_2) = 0
    在变分问题中,函数 y(x) 通常在区间的端点 x1​ 和 x2​ 处满足一定的边界条件。当我们在研究 y(x) 的微小变化时,我们希望这些变化不会破坏原有的边界条件(该曲线必须经过最速降线问题中的起点和终点)。具体来说,假设 y(x) 在 x_1x_2处分别满足边界条件 y(x_1)=y_1y(x_2)=y_2,仅\eta(x_1) = \eta(x_2) = 0时,y(x) +\varepsilon \eta(x)x_1x_2依然等于y_1y_2

 因此,该问题可以表述为:对y(x) 函数进行变化时,泛函的变化\delta T为0.

\delta T = \frac{d}{d\varepsilon} T[y + \varepsilon \eta] \Big|_{\varepsilon = 0} = 0

y(x) \rightarrow y(x) + \varepsilon \eta(x)代入泛函式(1)有:

T[y + \varepsilon \eta] = \int_{x_1}^{x_2} F\left(x, y + \varepsilon \eta, y' + \varepsilon \eta'\right) dx

其中  \eta' = \frac{d\eta}{dx}。展开 F(x, y + \varepsilon \eta, y' + \varepsilon \eta') 的泰勒级数(仅保留一阶项),得:

F(x, y + \varepsilon \eta, y' + \varepsilon \eta') = F(x, y, y') + \varepsilon \frac{\partial F}{\partial y} \eta + \varepsilon \frac{\partial F}{\partial y'} \eta' + \mathcal{O}(\varepsilon^2).

忽略高阶小量\mathcal{O}(\varepsilon^2),进行变化可得:

\delta T =T[y + \varepsilon \eta] - T[y] = \varepsilon \int_{x_1}^{x_2} \left( \frac{\partial F}{\partial y} \eta + \frac{\partial F}{\partial y'} \eta' \right) dx    (2)

可以注意到上式中有 \eta',为了简化,使用分部积分将  \eta' 转换为 \eta 的形式。根据分部积分公式:

\int_{x_1}^{x_2} \frac{\partial F}{\partial y'} \eta' dx = \left[\frac{\partial F}{\partial y'} \eta \right]_{x_1}^{x_2} - \int_{x_1}^{x_2} \frac{d}{dx} \left( \frac{\partial F}{\partial y'} \right) \eta dx

注:[\cdot ]_{x_1}^{x_2}:这表示对括号内的表达式在 x1​ 和 x2​ 两点进行求值,并计算它们的差。

由于 \eta(x_1) = \eta(x_2) = 0(微小变化在边界处为零),第一项 \left[\frac{\partial F}{\partial y'} \eta \right]_{x_1}^{x_2}消失,因此:

\int_{x_1}^{x_2} \frac{\partial F}{\partial y'} \eta' dx = - \int_{x_1}^{x_2} \frac{d}{dx} \left( \frac{\partial F}{\partial y'} \right) \eta dx

将这一结果代入式(2),令泛化变化等于0,变化得到:

\delta T = \varepsilon \int_{x_1}^{x_2} \left( \frac{\partial F}{\partial y} - \frac{d}{dx} \left( \frac{\partial F}{\partial y'} \right) \right) \eta dx=0

由于 \eta(x)是任意函数,唯一可能的情况是积分中的括号为零,即:

\frac{\partial F}{\partial y} - \frac{d}{dx} \left( \frac{\partial F}{\partial y'} \right) = 0      (3)

而推导出来的式3,就是大名鼎鼎的欧拉-拉格朗日方程(Euler-Lagrange equations)

无论是在何种维度的映射中,泛函都满足边界效应,消去差值部分,如本例子中的 \left[\frac{\partial F}{\partial y'} \eta \right]_{x_1}^{x_2},因此总能简化为欧拉-拉格朗日方程。

欧拉-拉格朗日方程的第二种表达式:

若函数 F  是 x,y,y' 的函数,即 F = F(y, y', x)。其全导数为:

\frac{dF}{dx} = \frac{\partial F}{\partial y} \cdot \frac{dy}{dx} + \frac{\partial F}{\partial y'} \cdot \frac{d^2y}{dx^2} + \frac{\partial F}{\partial x}    (4)

- \frac{\partial F}{\partial y}  是 F 对 y 的偏导数,乘以  \frac{dy}{dx} = y'

\frac{\partial F}{\partial y'}是  F 对 y'的偏导数,乘以\frac{d^2y}{dx^2} = y''

可得:

\frac{\partial F}{\partial y'} \cdot y'' =\frac{dF}{dx}- \frac{\partial F}{\partial y} \cdot \frac{dy}{dx} -\frac{\partial F}{\partial x}       (5)

   又因为:

\frac{d}{dx}(y'\cdot \frac{\partial F}{\partial y'})=y'\cdot \frac{d}{dx}(\frac{\partial F}{\partial y'})+y''\cdot \frac{\partial F}{\partial y'}  (6)

将式5代入式6代入得

\frac{d}{dx}(y'\cdot \frac{\partial F}{\partial y'})=y'\cdot \frac{d}{dx}(\frac{\partial F}{\partial y'})+(\frac{dF}{dx}- \frac{\partial F}{\partial y} \cdot \frac{dy}{dx} -\frac{\partial F}{\partial x})

化简:

\frac{d}{dx}(y'\cdot \frac{\partial F}{\partial y'})=y'\cdot (\frac{d}{dx}(\frac{\partial F}{\partial y'}-\frac{\partial F}{\partial y}))+(\frac{dF}{dx}-\frac{\partial F}{\partial x})                           

根据欧拉-拉格朗日方程:\frac{d}{dx} \frac{\partial F}{\partial y'} = \frac{\partial F}{\partial y},代入上式

 \frac{d}{dx}(y'\cdot \frac{\partial F}{\partial y'})=\frac{dF}{dx}-\frac{\partial F}{\partial x}

  即:  \frac{d}{dx}(y'\cdot \frac{\partial F}{\partial y'}-F)+\frac{\partial F}{\partial x}=0  (7)

式7就是欧拉-拉格朗日的第二种表达式,适用于二元素的映射泛函 ,即F = F(y, y', x)

       特别的,若F中不显含x,则F对x的全导数处处为0。

根据F的定义式F(y,x,y') = \frac{\sqrt{1 + (y')^2}}{\sqrt{2gy}}, \quad y' = \frac{dy}{dx},x在F和函数y' \frac{\partial F}{\partial y'}-F中不显含。因此,函数y' \frac{\partial F}{\partial y'}-F关于x的偏导数处处为0.

此时,欧拉-拉格朗日方程的第二种形式可进行化简:

因为:\frac{\partial F}{\partial x}=0

\frac{d}{dx}(y'\cdot \frac{\partial F}{\partial y'}-F)=0

两边对x积分有:y'\cdot \frac{\partial F}{\partial y'}-F=C

故对于变量x,函数y' \frac{\partial F}{\partial y'}-F为一个恒定的值,我们设其为积分常数C。换句话来说,y' \frac{\partial F}{\partial y'}-F仅关于y和y'变化,不会根据x变化。

1.4 解决最速降线问题

直接将T = \int_{x_1}^{x_2} \frac{\sqrt{1 + \left(\frac{dy}{dx}\right)^2}}{ \sqrt{2gy}} dx代入第一种欧拉-拉格朗日方程式:\frac{\partial F}{\partial y} - \frac{d}{dx} \left( \frac{\partial F}{\partial y'} \right) = 0       

\frac{\partial F}{\partial y} = \frac{\partial}{\partial y} \left( \frac{\sqrt{1 + (y')^2}}{\sqrt{2gy}} \right) = \frac{\sqrt{1 + (y')^2}}{2 \sqrt{2g} y^{3/2}}

\frac{d}{dx} \left( \frac{\partial F}{\partial y'} \right) = \frac{d}{dx} \left( \frac{y'}{\sqrt{2gy} \sqrt{1 + (y')^2}} \right)

可得:

\frac{\sqrt{1 + (y')^2}}{2 \sqrt{2g} y^{3/2}} - \frac{d}{dx} \left( \frac{y'}{\sqrt{2gy} \sqrt{1 + (y')^2}} \right) = 0

但这并不好解

所以我们用x对F不显式的第二表达式进行求解:

 即:      F - y' \frac{\partial F}{\partial y'} = \frac{\sqrt{1 + (y')^2}}{\sqrt{2g(y_1 - y)}} - \frac{y'^2}{\sqrt{2g(y_1 - y)} \sqrt{1 + (y')^2}}=C

提取公因子 \frac{1}{\sqrt{2g(y_1 - y)}} 后,其分子为:

\sqrt{1 + (y')^2} - \frac{y'^2}{\sqrt{1 + (y')^2}} = \frac{1 + (y')^2 - y'^2}{\sqrt{1 + (y')^2}} = \frac{1}{\sqrt{1 + (y')^2}}

故:

F - y' \frac{\partial F}{\partial y'} = \frac{1}{\sqrt{2gy} \sqrt{1 + (y')^2}}=C

将上式进一步变化:

y\cdot (1 + (y')^2) = \frac{1}{2gC^2}

1 + (y')^2 = \frac{1}{2g C^2}\cdot \frac{1}{y}

可得:

y'=\frac{dy}{dx} = \pm \sqrt{ \frac{1-2gC^2\cdot y}{2gC^2\cdot y}}

得:dx=\pm \sqrt{ \frac{2gC^2\cdot y}{1-2gC^2\cdot y}}dy (8)

上式并不简洁,我们需要用换元法稍加处理:

对于式8中的\sqrt{ \frac{2gC^2\cdot y}{1-2gC^2\cdot y}},令2gC^2\cdot y=\frac{1}{2}(1-cos\theta )

其中:y = \frac{1}{4gC^2} (1-\cos\theta) ,\frac{dy}{d\theta}= \frac{1}{4gC^2} sin\theta

式8中的\sqrt{ \frac{2gC^2\cdot y}{1-2gC^2\cdot y}}化为:

\sqrt{ \frac{\frac{1}{2}(1-cos\theta)}{1-\frac{1}{2}(1-cos\theta)}}=\sqrt{ \frac{\frac{1}{2}-\frac{1}{2}cos\theta}{\frac{1}{2}+\frac{1}{2}cos\theta}}=\sqrt{ \frac{1-cos\theta}{1+cos\theta}}

继续化简:

\sqrt{ \frac{1-cos\theta}{1+cos\theta}}=\sqrt{ \frac{1-cos\theta}{1+cos\theta}}\cdot \sqrt{\frac{1-cos\theta}{1-cos\theta}}=\sqrt{\frac{(1-cos\theta)^2}{(1+cos\theta)(1-cos\theta)}}=\frac{1-cos\theta}{\sqrt{1-cos^2 \theta}}=\frac{1-cos\theta}{sin\theta}

于是式8可写为

dx/d\theta=\pm \frac{1-cos\theta}{sin\theta}dy/d\theta=\pm \frac{1-cos\theta}{sin\theta}\cdot \frac{1}{4gC^2} sin\theta= \frac{1-cos\theta}{4gC^2}  (9)

 对式9两边进行积分得:

                x=\frac{1}{4gC^2}(\theta-sin\theta)+C_2

将起始点(y_1,x_1)(y_2,x_2)带入  x=\frac{1}{4gC^2}(\theta-sin\theta)+C_2y = \frac{1}{4gC^2} (1-\cos\theta)可以组成二元一次方程组,可以解得C, C_2的具体数值。

而这里x、y关于\theta的公式就是“摆线”的表达式,也就是最速降线的解

其中 r =1/4gC^2 是摆线的半径。

摆线的标准表达式为:

x = r (\theta - \sin\theta), \quad y = r (1 - \cos\theta)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据实验E5HBase:安装配置,shell 命令和Java API使用

实验目的 熟悉HBase操作常用的shell 命令和Java API使用; 实验要求 掌握HBase的基本操作命令和函数接口的使用; 实验平台 操作系统:Linux(建议Ubuntu16.04或者CentOS 7 以上);Hadoop版本:3…

微信小程序3-显标记信息和弹框

感谢阅读,初学小白,有错指正。 一、实现功能: 在地图上添加标记点后,标记点是可以携带以下基础信息的,如标题、id、经纬度等。但是对于开发来说,这些信息还不足够,而且还要做到点击标记点时&a…

一个有意思pytorch的简单应用小实验

通过一个简单的脚本,来学习pytorch的基本应用,比如:前向传播、反向传播、学习率以及预测、模型的基本原理和套路。 得到结果。。。保存模型。。。输入参数。。。预测。。。像不像?。。。像多少?。。。 设计目标&#x…

SpringBoot 分层解耦

从没有分层思想到传统 Web 分层,再到 Spring Boot 分层架构 1. 没有分层思想 在最初的项目开发中,很多开发者并没有明确的分层思想,所有逻辑都堆砌在一个类或一个方法中。这样的开发方式通常会导致以下问题: 代码混乱&#xff1…

2024 数学建模国一经验分享

2024 数学建模国一经验分享 背景:武汉某211,专业:计算机科学 心血来潮,就从学习和组队两个方面指点下后来者,帮新人避坑吧 2024年我在数学建模比赛中获得了国一(教练说论文的分数是湖北省B组第一&#xff0…

Linux 35.6 + JetPack v5.1.4之RTP实时视频Python框架

Linux 35.6 JetPack v5.1.4之RTP实时视频Python框架 1. 源由2. 思路3. 方法论3.1 扩展思考 - 慎谋而后定3.2 扩展思考 - 拒绝拖延或犹豫3.3 扩展思考 - 哲学思考3.4 逻辑实操 - 方法论 4 准备5. 分析5.1 gst-launch-1.05.1.1 xvimagesink5.1.2 nv3dsink5.1.3 nv3dsink sync05…

渤海证券基于互联网环境的漏洞主动防护方案探索与实践

来源:中国金融电脑 作者:渤海证券股份有限公司信息技术总部 刘洋 伴随互联网业务的蓬勃发展,证券行业成为黑客进行网络攻击的重要目标之一,网络攻击的形式也变得愈发多样且复杂。网络攻击如同悬于行业之上的达摩克利斯之剑&…

隐私安全大考,Facebook 如何应对?

随着数字时代的到来和全球互联网用户的快速增长,隐私安全问题已上升为网络世界的重要议题。社交媒体巨头Facebook因其庞大的用户群体和大量的数据处理活动,成为隐私问题的聚焦点。面对隐私安全的大考,Facebook采取了一系列策略来应对这些挑战…

04 创建一个属于爬虫的主虚拟环境

文章目录 回顾conda常用指令创建一个爬虫虚拟主环境Win R 调出终端查看当前conda的虚拟环境创建 spider_base 的虚拟环境安装完成查看环境是否存在 为 pycharm 配置创建的爬虫主虚拟环境选一个盘符来存储之后学习所写的爬虫文件用 pycharm 打开创建的文件夹pycharm 配置解释器…

旅游管理系统的设计与实现

文末获取源码和万字论文,制作不易,感谢点赞支持。 毕 业 设 计(论 文) 题目:旅游管理系统的设计与实现 摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候&#…

QT 中 sqlite 数据库使用

一、前提 --pro文件添加sql模块QT core gui sql二、使用 说明 --用于与数据库建立连接QSqlDatabase--执行各种sql语句QSqlQuery--提供数据库特定的错误信息QSqlError查看qt支持的驱动 QStringList list QSqlDatabase::drivers();qDebug()<<list;连接 sqlite3 数据库 …

HENU祖传课堂测试第三弹:Java的文件输入输出

题目&#xff1a;设定文件file1内容&#xff1a;年级,班级&#xff0c;学号&#xff0c;姓名分为四行。 读取文件file1中的内容&#xff0c;若其字符<3个将其转入file2,如若是字符&#xff1e;3个转入file3 代码如下 import java.io.*; import java.nio.file.*; import j…

React Native 速度提升 550%

React Native 爱好者们!🌟 您准备好听一些激动人心的消息了吗?React Native 刚刚发布了其最大的更新之一:一种全新的架构,彻底改变了我们构建移动应用程序的方式。如果您想知道这对您的项目和开发体验意味着什么,请继续关注!我们正在深入探讨这个改变游戏规则的事物;您…

Qt中的 tableView 设置 二进制 十六进制 序号表头

二 进制序号 因为QTableView的垂直表头并不支持使用委托来自定义。 相反&#xff0c;可以通过将自定义的QWidget作为QHeaderView的标签来实现这一目标。 代码&#xff1a; #include <QApplication> #include <QMainWindow> #include <QVBoxLayout> #include …

中国移动量子云平台:算力并网590量子比特!

在技术革新的浪潮中&#xff0c;量子计算以其独特的并行处理能力和指数级增长的计算潜力&#xff0c;有望成为未来技术范式变革和颠覆式创新应用的新源泉。中国移动作为通信行业的领军企业&#xff0c;致力于量子计算技术研究&#xff0c;推动量子计算产业的跨越式发展。 量子云…

D614 PHP+MYSQL +失物招领系统网站的设计与现 源代码 配置 文档

失物招领系统 1.摘要2. 系统开发的背景和意义3.功能结构图4.界面展示5.源码获取 1.摘要 随着互联网的迅速发展&#xff0c;人们的生产生活方式逐渐发生改变&#xff0c;传统的失物招领也可以通过网络处理。本网站是基PHP技术的一款综合性较强的西南民族大学PHP失物招领系统。 …

YOLOv8实战道路裂缝缺陷识别

本文采用YOLOv8作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv8以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对道路裂缝数据集进行训练和优化&#xff0c;该数据集包含丰富的道路裂缝图像样本…

并发编程(15)——基于同步方式的线程安全的栈和队列

文章目录 十四、day141. 线程安全的栈1.1 存在隐患的栈容器1.2 优化后的栈容器 2. 线程安全的队列2.1 基于智能指针的线程安全的队列2.2 不同互斥量管理队首、队尾的队列 十四、day14 在并发编程&#xff08;1&#xff09;并发编程&#xff08;5&#xff09;中&#xff0c;我们…

容器第五天(day042)

1.安装 yum install -y docker-compose 2.配置 配置文件名字&#xff1a;docker-compose.yaml或docker-compose.yml 3.启动 docker-compose up -d

离散数学重点复习

第一章.集合论 概念 1.集合是不能精确定义的基本数学概念.通常是由指定范围内的满足给定条件的所有对象聚集在一起构成的 2.制定范围内的每一个对象称为这个集合的元素 3.固定符号如下: N:自然数集合 Z:整数集合 Q:有理数集合 R:实数集合 C:复数集合 4.集合中的元素是…