[高等数学] 微分方程-对一阶非齐次线性方程 解法 常数变易法的讨论

常数变易法的简要证明

仅仅是结论,由结论推出原因

分析

主要矛盾:无法分离变量

dydxP(x)·yQ(x)(1)
dy(Q(x)P(x)y)dx(2)

从中看出y不可能单独除到左边来,所以是分不了的。这时想想以前解决“齐次方程”时用过的招数:设y/xu>yux,则有dydx=u+dudxx
联立上述三个方程组,则有

uxuP(x)·u·xQ(x)
u·xu·(1P(x)·x)Q(x)
dydxxQ(x)u(1P(x)x)(3)

可得

这时u又不能单独除到左边来,所以还是宣告失败。不过,这里还是给了我们一点启示:如果某一项的变量分离不出来,那使该项成为零是比较好的选择。因为这样“变量分离不出”这个矛盾就消失了——整个一项都消失了,还需要分什么呢。

比如说,对于(3)式,如果x=-1/P(x),那么那一项就消失了;再比如说,对于(2)式,如果P(x)=0,那么那一项也消失了。当然这些假设都是不可能的,因为x和P(x)等于几是你无法干预的。

不过我们可以这么想:如果我们巧妙地构造出一个函数,使这一项等于零,那不就万事大吉了。Ok,好戏开场了。

进一步:变量代换法

筒子们可能觉得要构造这么一个函数会很难。但结果会让你跌破眼镜。y=u·v就是这么符合要求的一个函数。其中u和v都是关于x的函数。这样求y对应于x的函数关系就转变成分别求u对应于x的函数关系和v对应于x的函数关系的问题。你可能觉得把一个函数关系问题变成两个函数关系问题,这简直是脑残的表现——非也,u和v都非常有用,看到下面就知道了。

让我们看看讲代换y=u·v代入(1)式会出现什么:

uv+u·(v+P(x)v)Q(x)(4)

如果现在利用分离变量法来求u对应于x的函数关系,那么u(vP(x)v)就是我们刚刚遇到的没法把u单独分离出来的那一项,既然分不出来,那么干脆把这一项变为零好了。
怎么变?这时v的用处就有了。令vP(x)v0,解出v对应x的函数关系,这本身就是一个可以分离变量的微分方程问题,可以将其解出来。

在这里插一句,为什么不是分离v和x呢?其实在这里v和u是完全对等的状态,可以说只是符号表示的不同,不信把上式中的v提出来,你会发现形式完全相同

dvdx+p(x)v=0
vc1e(P(x)dx)(5)

现在v解出来了,接下来该处理u了,实际上当v解出来后u就十分好处理了。把(5)式代入(4)式,则u·(v+P(x)v这一项便被消掉了。剩下的是
dudxc1e(P(x)dx)=Q(x)

而这也是一个可以分离变量的微分方程。同样可以十分容易地解出来:
dudxc1e(P(x)dx)=Q(x)
du=1C1c1e(P(x)dx)Q(x)dx
uc1e(P(x)dx)(6)

现在u和v都已求出,那么y=u·v也迎刃而解:

这个方法看上去增加了复杂度,实际上却把一个不能直接分离变量的微分方程化成了两个可以直接分离变量的微分方程。这个方法不是没有名字的,它叫“变量代换法”(挺大众的一名字),即用u·v代换了y。这时在你脑中不得不油然生出这么一种感觉:想了十一年想出来的法子,还真不是盖的。

再进一步:常数变易法

再进一步观察我们可以看出,求v的微分方程(即vP(x)·v0其实就是求

dydxP(x)·yQ(x)

当Q(x)=0时的齐次方程。所以,我们可以直接先把非齐次方程当作齐次方程来解。即解出dydxP(x)·y0的解来。 得:

yC·e(P(x)dx)(8)

注意这里的C·e(P(x)dx)并非最终答案,从上一环节我们知道这其实是v而已。而最终答案是u·v ,v仅是其中一部分。因此这里的C·e(P(x)dx)并不是我们要的y,因此还要继续。

把(8)式和上面提到的(7)式比较一下:

y[eP(x)dxQ(x)dx+C]e(P(x)dx)(7)

yC·e(P(x)dx)(8)

(7)式是最终的结论,(8)式是目前我们可以到达的地方。那我们偷下懒好了:把(8)式的那个C换成u,再把这个u解出来,不就ok了么。所谓的“常数变易法”就是这么来的,即把常数C硬生生地变成了u。
接下来的事情就简单多了,和前面是一个思路,把代换yu·e(P(x)dx)代入(1)式,由于e(P(x)dx)是一个可以令那个分离不出变量的项被消掉的特解,因此即可知一定会解得yu·e(P(x)dx)=Q(x)。从中解出u,再带回yu·e(P(x)dx)便可得到最终答案。

reference

“常数变易法”有效的原理

posted @   deadright  阅读(427)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示