变分法入门介绍

简介: 读完这篇博文你可以了解变分的基本概念,以及使用变分法求解最简泛函的极值。本文没有严密的数学证明,只是感性地对变分法做一个初步了解。

变分法入门介绍

读完这篇博文你可以了解变分的基本概念,以及使用变分法求解最简泛函的极值。本文没有严密的数学证明,只是感性地对变分法做一个初步了解。

泛函和变分法

给定两点$A(x_0, y_0)$和$B(x_1, y_1)$,求AB两点之间的最短距离。两点之间直线最短,这还用球吗?可是为什么是直线最短呢,而不是其它曲线?

设链接AB两点的曲线为$f(x)$,则AB之间的距离可以表示为在区间$[x_0, x_1]$上求$\Delta{S}=\sqrt{(\Delta{x})^2 + (\Delta{y})^2}$线段的累积长度(积分的思想):

$$S=\int_{x_0}^{x_1}\sqrt{1+f'(x)^2}dx$$

在这里该函数的变量是$f$,即函数的变量为函数,我们需要求解出合适的$f$使得$S$最小。我们把这样的函数$S$称为泛函数。

定义:泛函是以函数为变量的函数。

那么什么是变分法呢?求泛函极值的方法称为变分法。

变分法求泛函极值

变分的定义

下面给出变分的定义:对于任意定值$x\in [x_0, x_1]$,可取函数$y(x)$与另一可取函数$y_0(x)$之差$y(x) - y_0(x)$称为函数$y(x)$在$y_0(x)$处的变分或函数的变分,记做$\delta{y}$,这时有$\delta{y}=y(x) - y_0(x)=\epsilon\eta(x)$,$\epsilon$是一个很小的数,$\eta(x)$是$x$的任意参数

对于泛函$J[y(x)]$的增量$\Delta{J}=J[y(x)+\delta{y}] - J[y(x)] = \delta{J} + \mathcal{o}(\delta{y})$

泛函的增量$\Delta{J}$与变分$\delta{J}$之差是一个比一阶距离更高阶的无穷小,泛函的变分是泛函增量的线性主要部分。

变分的定义是不是跟微分很像(微分的定义$\Delta{y}=A\Delta{x}+\mathcal{o}(\Delta{x})=dy+\mathcal{o}(\Delta(x)$,$A$是该点的导数)。类比一下,我们在高等数学中学习到的函数极值的必要条件是函数导数等于0,而泛函极值的必要条件也是泛函的变分等于0。

所以有如下定理:若泛函$J[y(x)]$在$y=y(x)$上达到极值,则它在$y=y(x)$上的变分$\delta{J}$等于零。这就是变分原理。

拉格朗日函数

设$F(x, y(x), y'(x))$是三个独立变量$x$,$y(x)$,$y'(x)$在区间$[x_0, x_1]$上的已知函数,且二阶连续可微,其中$y(x)$和$y'(x)$是$x$的未知函数,则泛函

$$J[y(x)]=\int_{x_0}^{x_1}F(x, y(x), y'(x))dx$$

称为最简单的积分形泛函,简称最简泛函,被积函数$F$称为拉格朗日函数。

对于拉格朗日函数,其泛函的变分为

$$\delta{J} = \int_{x_0}^{x_1}(F_y\delta{y} +F_{y'}\delta{y'})dx = \int_{x_0}^{x_1}(F_y\delta{y})dx + (F_{y'}\delta_{y}|_{x_0}^{x_1} - \int_{x_0}^{x_1}(\delta_{y}\frac{d}{dx}F_{y'}d{x})=\int_{x_0}^{x_1}(F_y-\frac{d}{dx}F_{y'})\delta{y}dx$$

欧拉方程

利用变分原理,使最简泛函$J[y(x)]=\int_{x_0}^{x_1}F(x, y(x), y'(x))dx$取得极值且满足固定边界条件$y(x_0)=y_0$,$y(x_1)=y_1$的极值曲线$y=y(x)$应满足必要条件

$$F_y-\frac{d}{dx}F_{y'}=0$$

式中$F$是$x, y, y'$的已知函数并有二阶连续偏导数。上述必要条件中的方程叫做泛函的欧拉方程,也叫欧拉-拉格朗日方程。而$F_y-\frac{d}{dx}F_{y'}$称为$F$关于$y$的变分导(函)数。

案例分析--两点之间直线最短

好的,我们利用欧拉方程来证明博文刚开始提出的两点之间直线最短的问题。

这里的$F=\sqrt{1+f'(x)^2}$,求得$F_y=0$,$F_{y'}=\frac{y'}{\sqrt{1+{y'}^2}}$,再求得$\frac{d}{dx}F_{y'}=y''(1+{y'}^2)^{-\frac{3}{2}}$

根据欧拉方程有$-y''(1+{y'}^2)^{-\frac{3}{2}}=0$,则$y''=0 \Rightarrow y'=C \Rightarrow y=C_1x + C_2$

此时,我们就得到了这条曲线确实就是连接两点的直线。

在Mathematica中使用变分法

鉴于本人计算能力超级差,手动求导对我来说实在太痛苦了,我将上述的计算借助于Mathematica计算了一遍,下面是计算过程。不得不说Mathematica真的太强大了。
截屏2023-09-08 15.40.17.png

参考文献

老大中. 变分法基础[M]. 北京: 国防工业出版社. 2004.

目录
相关文章
|
28天前
|
Java Docker 微服务
微服务不是“上来就拆”,而是“能拆会拆懂拆”
微服务不是“上来就拆”,而是“能拆会拆懂拆”
80 7
|
28天前
|
人工智能 定位技术 知识图谱
【两大核心+四轮驱动】Geo优化方案规划:避开17个AI时代获客陷阱的实战指南
于磊老师首创“两大核心+四轮驱动”Geo优化方法论,倡导人性化Geo与内容可信度,助力企业避开17大陷阱,在AI时代构建权威信源,实现获客提效与品牌升级。
216 12
|
26天前
|
数据采集 数据可视化 大数据
2026版基于python大数据的电影分析可视化系统
本系统基于Python大数据技术,整合票房、评分、类型等多源电影数据,利用Pandas、MySQL、Django等实现数据处理与存储,结合Vue构建可视化平台,助力制片、投资与观影决策。
|
4月前
|
存储 前端开发 BI
如何开发一套考勤管理系统?(附架构图+流程图+代码参考)
本文介绍如何设计和开发一套高效的考勤管理系统,涵盖考勤打卡、补卡申请、请假/加班、调休/出差、考勤确认等核心模块,帮助企业实现数字化、自动化的员工考勤管理,提升管理效率与准确性。
|
测试技术
提升软件测试效率的五大策略
【10月更文挑战第13天】 本文将探讨如何通过优化测试流程、引入自动化测试、加强测试用例设计、培养高素质测试团队和持续反馈改进等五大策略,来显著提升软件测试的效率。这些方法不仅适用于不同类型的软件项目,还能有效降低测试成本,提高软件质量。
1250 0
|
Java 测试技术 API
Java 反射机制:深入解析与应用实践
《Java反射机制:深入解析与应用实践》全面解析Java反射API,探讨其内部运作原理、应用场景及最佳实践,帮助开发者掌握利用反射增强程序灵活性与可扩展性的技巧。
472 5
|
人工智能 网络架构 开发者
第一个100%开源的MoE大模型,7B的参数,1B的推理成本
【10月更文挑战第1天】《OLMoE: Open Mixture-of-Experts Language Models》一文介绍了OLMoE,这是一个完全开源的Mixture-of-Experts(MoE)语言模型,具有70亿参数量,但每个输入令牌仅需10亿参数进行推理,有效平衡了性能与成本。OLMoE由Allen Institute for AI等机构的研究者共同开发,其开源特性促进了大规模语言模型领域的合作与创新,降低了资源浪费,同时具备良好的可扩展性和效率,为研究和应用开辟了新可能。然而,其复杂性也可能带来训练和调优上的挑战。
337 2
|
存储 测试技术 Go
用功能模型实现一个预约系统
【9月更文挑战第6天】本文介绍功能模型描述系统的功能需求和操作逻辑,常用数据流图(DFD)或用例图表示,关注系统如何处理输入、输出、数据存储和计算。在订餐系统中,功能模型涵盖预约界面交互、数据库访问、菜单列表查询及时段表管理。对象模型描述系统中的类和对象,功能模型则描述这些对象的功能实现;动态模型描述运行时行为。通过封装、抽象、继承、多态、交互、职责分离及数据和行为的统一,功能模型提高代码组织性和可维护性,增强系统灵活性和扩展性。
1066 21
|
人工智能 自然语言处理 API
深入浅出 LangChain 与智能 Agent:构建下一代 AI 助手
我们小时候都玩过乐高积木。通过堆砌各种颜色和形状的积木,我们可以构建出城堡、飞机、甚至整个城市。现在,想象一下如果有一个数字世界的乐高,我们可以用这样的“积木”来构建智能程序,这些程序能够阅读、理解和撰写文本,甚至与我们对话。这就是大型语言模型(LLM)能够做到的,比如 GPT-4,它就像是一套庞大的乐高积木套装,等待我们来发掘和搭建。
892 1
|
JavaScript Java 测试技术
基于SpringBoot+Vue的小零食销售系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的小零食销售系统的详细设计和实现(源码+lw+部署文档+讲解等)
233 11
基于SpringBoot+Vue的小零食销售系统的详细设计和实现(源码+lw+部署文档+讲解等)