个人对于常微分方程之一阶线性非齐次方程的常数变易法的见解

article/2025/10/2 23:00:26

我们都知道,对常微分方程 \frac{dy}{dx}=f(x,y)最简单也是最本质的处理方法就是分离变量,使得方程可以变成F(y)dy=G(x)dx的形式,两边再进行积分便可以得到方程的解y=h(x).在常微分方程(以下简称为方程)中,有两类比较特殊的方程,分别是一阶线性齐次微分方程以及一阶线性非齐次微分方程.这一类线性方程可以统一表示为\frac{dy}{dx} +p(x)y=q(x).

        这里有个小问题,为什么说是线性方程?我个人是这么理解的把\frac{dy}{dx}写成{y}',在整理完系数之后,方程可以表示为{y}'+py=q,很明显,从代数学的角度,这就是关于y \ and \ {y}'的方程,且两者是线性的,易证:

Proof:\\ \forall y_{1} , y_{2} \in \mathbb{R}[x], \\ { y_{1}}'+py_{1}=q_{1} \ \ , \ \ { y_{2}}'+py_{2}=q_{2} \ , \ { y_{1}}'+py_{1}+{y_{2}}'+py_{2}=q_{1} +q_{2} \\ \forall k \in \mathbb{R}, { ky_{1}}'+pky_{1}=kq_{1}

因此这类方程是线性方程.

      此外,为什么说这类方程有齐次与非齐次之分呢?很简单,当q=0时,{y}'+py=q即是{y}'+py=0,在代数学中,这类方程就是齐次方程。而当q不为0时,q视为一个非零常数k,则明显的,{y}'+py=q是一个非齐次方程。本人在两天前请教了一位师兄,他对于齐次和非齐次的判断方法“简单粗暴”但十分有效——关键在于方程能否进行变量分离

     在解方程的时候,我们应该分情况——q是否为零。

     Case 1:当q为0时,该方程是一个齐次方程,{y}'+py=0,即有{y}'=\frac{dy}{dx}=-py,对这个式子进行变量分离,可以得到\frac{dy}{y}=p(x)dx,两边同时进行积分可以得到\ln y=\int p(x)dx,即可以得到方程的一个解为y=e^{\int p(x)dx}.

     Case 2:当q不为0时,方程的形式为{y}'+py=q

     对于常微分方程,我们采用的最常规,最原始,最简单的方法,就是进行变量分离,所以可以试着用分离变量对这个方程进行处理:\frac{dy}{y}=(-p(x)+\frac{q(x)}{y})dx,但这样子,还是没能将x和y完全分离,因此没能够达到分离变量的目的,所以直接分离变量这种思路暂时枪毙掉。

不妨换一种方法:能否构造出一个恰当方程M(x,y)dx+N(x,y)dy=q(x),其中\exists L(x,y),\ s.t. \ L_{x}=M,L_{y}=N.为了构造出这样一个恰当方程,我们需要利用一个积分因子u(x),使得uy^{'}+puy=qu是一个恰当方程。假设方程左边的uy^{'}+puy恰好是某个二元函数的全微分,由数学分析的相关知识可以很快得到,这个所谓的原函数的唯一存在的且为uy。因此,对uy求全微分可以得到d(uy)=udy+ydu,所以puy=yu^{'}.

根据以上分析得到的puy=yu^{'},则\frac{u^{'}}{u}=p,而这个就是我们熟悉的齐次方程,进行简单的变量分离即可:

Analysis:\\ \frac{u^{'}(x)dx}{u(x)}=p(x)dx\\ \int \frac{u^{'}(x)dx}{u(x)}=\int p(x)dx\\ \ln(x)=\int p(x)dx\\ u(x)=e^{\int p(x)dx}

所以这个方程的一个积分因子是u(x)=e^{\int p(x)dx},而这个就是这个非齐次方程的"导出"齐次方程的解。

在得到这个积分因子之后,我们就可以很快对这个方程进行求解:

solution:\\ y^{'}e^{\int p(x)dx}+pye^{\int p(x)dx}=qe^{\int p(x)dx}\\ (ye^{\int p(x)dx})^{'}=qe^{\int p(x)dx}\\ ye^{\int p(x)dx}=\int qe^{\int p(x)dx}+C\\ y=e^{-\int p(x)dx}(\int qe^{\int p(x)dx}+C)(\forall C \in \mathbb{R})

这种方式是MIT教授的方法,是本人认为最好理解的推导方法。如果有更好更简便的推导方式,欢迎探讨!

P.S. 在华南师大版本的《应用常微分方程》中,对这种方程的表述是\frac{dy}{dx}=p(x)y+q(x),那么用上述的思路进行推导,得到的结果大同小异,只不过是e^{\int p(x)dx}(\int qe^{-\int p(x)dx}+C)(\forall C \in \mathbb{R})

原因在于p的符号发生改变,但方程的本质并没有改变。

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/WEeYlY30.shtml

相关文章

常数变易法

思路: 现将变动部分用常数代替,再逐步将常数替换为变数(变量) 关键是寻找变化的规律,如果不直观,可以列出所有变化,进行比对,然后设计公式 实例: 1.输出三角星号 首先找规律,发现每一行都是先输出空格&…

常数变易法的“前世今生”

常数变易法思想的来源或本质是什么?https://www.zhihu.com/question/31329122 “常数变易法”有效的原理:https://blog.csdn.net/w573719227/article/details/83050039 常数变易法的解释https://www.cnblogs.com/lookof/archive/2009/01/06/1370065.html…

DBUtils事务

#DBUtils&事务 掌握DBUtils实现增删改 掌握DBUtils实现查询 理解事务的概念 理解脏读,不可重复读,幻读的概念及解决办法 能够在MySQL中使用事务 能够在JDBC中使用事务 能够在DBUtils中使用事务 第一章 DBUtils 如果只使用JDBC进行开发,我们会发现冗余代码过多…

Dbutils下载

链接:https://pan.baidu.com/s/1LlGyKUgYX8zgjgQk6GOwhA?pwdqdm3 提取码:qdm3 版本为最新1.7版本,解压即可用

java dbutils工具类_DbUtils工具类使用

DbUtils工具类使用 创建数据库 CREATE TABLE student ( userId int(11) NOT NULL, userName varchar(30) NOT NULL, gender char(1) NOT NULL, age int(11) DEFAULT NULL, PRIMARY KEY (userId) ) ENGINEInnoDB DEFAULT CHARSETutf8 把相关的包引入到项目里: 编写Student类: pa…

python DbUtils 封装

python dbutils 简介及准备工作 dbutils封装文件传送门 DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装。DBUtils来自Webware for Python。 DBUtils提供两种外部接口: PersistentDB :提供线程专用的数…

DBUtils工具

DBUtils工具 为了更加简单地使用JDBC,Apache组织提供了一个工具类库commons-dbutils,它是操作数据库地一个组件,实现一个对JDBC的简单封装,可以在不影响性能的情况下极大地简化JDBC地编码工作量。 API介绍 commons-dbutils的核…

java dbutils_Java学习之DBUtils

DBUtils:只是帮我们简化了CRUD 的代码。数据库连接的创建以及获取工作,不在其工作范围 一、DBUtils应用 ①、DBUtils的jar文件的下载 ②、Sql Server 、C3P0、DBUtils环境搭建(导入相应jar文件) Sql Server :sqljdbc42.jar(JDBC驱动) C3P0&am…

DBUtils介绍与使用

目录 一、DBUtils介绍二、DBUtils使用(一)导入相关Jar包(二)使用DBUtils完成数据库操作 一、DBUtils介绍 DBUtils:是为了简化JDBC的快发而产生的开发工具包,是对JDBC的一种封装。 DBUtils是个小巧的JDBC轻…

DBUtils详解

目录 DBUtils查询数据 匿名内部类方式 反射方式 反射方式查询数据的触发器分类 多表查询 DBUtils增加,删除,修改数据 前言 使用DBUtils操作数据库,会更加的方便,因为它封装了JDBC的代码,这里我们配合c3p0使用 并不是说一定要用c3p0,因为使用DBUtils 的时候需要手动传递…

JavaWeb——(13)DBUtils

目录 一、DBUtils介绍 二、DBUtils核心对象 三、DBUtils使用简单案例 四、QueryRunner对象 4.1构造函数 4.2方法 五、ResultSetHandler接口 六、DBUtils控制事务 6.1ThreadLocal 6.2模拟转账业务 一、DBUtils介绍 DBUtils是java编程中的数据库操作实用工具&#xff…

DBUtils工具类的使用方法详解

DBUtils使用方法详解 目录 DBUtils使用方法详解一、前言二、JDBC介绍1.基本概念2.JDBC访问数据库的流程 三、DBUtils介绍1.基本概念2.配置文件3.创建JDBCUtils类4.实现对数据表的增删改查 四、对以上代码的说明五、总结 一、前言 本文是关于DBUtils使用方法的介绍,…

如何用计算机解kkt条件,【直观详解】拉格朗日乘法和KKT条件

【阅读时间】8min - 10mun 【内容简介】直观的解读了什么是拉格朗日乘子法,以及如何求解拉格朗日方程,并且给出几个直观的例子,针对不等式约束解读了KKT条件的必要条件和充分条件 What & Why 拉格朗日乘法(Lagrange multiplier)是一种在最优化的问题中寻找多元函数在其变…

SVM中的KKT条件和拉格朗日对偶

首先,我们要理解KKT条件是用来干嘛的? KKT条件用来判断一个解是否属于一个非线性优化问题。 求最优解: 约束条件分为 1、等式约束 2、不等式约束 对于等式约束的优化问题,可以直接应用拉格朗日乘子法去求取最优值; …

KKT条件详解

KKT条件详解 主要参考这篇文章和这个知乎回答。 KKT最优化条件是Karush[1939],以及Kuhn和Tucker[1951]先后独立发表出來的。这组最优化条件在Kuhn和Tucker发表之后才逐渐受到重视,因此许多情况下只记载成库恩塔克条件(Kuhn-Tucker conditions…

KKT条件总结

最近学习的时候用到了最优化理论,但是我没有多少这方面的理论基础。于是翻了很多大神的博客把容易理解的内容记载到这篇博客中。因此这是篇汇总博客,不算是全部原创,但是基础理论,应该也都差不多吧。因才疏学浅,有纰漏…

KKT条件

无约束优化 首先给出一些基本概念定义: 凸集: 欧式空间中,集合中任意两点的连线都在集合中,我们就说这个集合是凸集;凸函数: 对于任意属于[0,1]的a和任意属于凸集的两点x, y,有 f ( a x ( 1 …

KKT 直观理解

KKT最优化条件是Karush[1939],以及Kuhn和Tucker[1951]先后独立发表出來的。这组最优化条件在Kuhn和Tucker发表之后才逐渐受到重视,因此许多情况下只记载成库恩塔克条件(Kuhn-Tucker conditions) 库恩塔克条件(Kuhn-Tucker conditions)是非线性…