龙空技术网

「数学」用柯西公式求解线性微分方程组,绝妙且难以想到的方法

mistlike 2028

前言:

今天咱们对“c语言求解线性方程组的程序”大致比较着重,我们都需要知道一些“c语言求解线性方程组的程序”的相关资讯。那么小编在网上网罗了一些关于“c语言求解线性方程组的程序””的相关资讯,希望你们能喜欢,大家快快来了解一下吧!

动力系统描述了复杂物理现象的力学和行为,通常涉及到多个以某种方式相互耦合的微分方程。当常微分方程组(ODE)是线性的,意味着微分方程中出现的未知函数和该函数各阶导数都是一次的;我们可以用线性代数技术同时解出所有的方程。

在本文中,我们关注一类特殊的线性常微分方程组,

其中x是一个解的向量,每个解都是时间t的函数,A是一个将所有解连接在一起的系数矩阵,它可能是时间t的函数。在A与时间无关的简单情况下(它的所有元素都是常数),线性系统通过简单的分离变量来求解:

其中x(0)是初始条件的向量。必须特别注意矩阵指数

它不等于矩阵At中每个元素的指数。这是许多学生在第一次学习线性代数和微分方程时常犯的错误。为了求出矩阵的函数,需要先找出矩阵的特定性质,然后用一种特殊的方法来求出它。一个非常有效的方法涉及到复分析中的一个概念,被称为柯西积分公式

这允许我们计算函数f(z)/(z-x)在特定点x处的围线积分,假设在点z = x处有一个奇点。

在本文的例子中,我们想求At的函数值,所以我们写

I是单位矩阵。因为积分是一个线性算子,对一个矩阵求积分就相当于对它的每个元素分别求积分。这意味着只要矩阵(zI-At)有逆,f(At)就可以求值。一个基本问题是围线C的选择。我们要选择一个围线C,它包含矩阵At的所有特征值(包括实部和虚部)。一种可能是选择一个以原点为圆心,半径为R的圆

不等式右边是矩阵的范数。这意味着我们首先需要计算At的特征值。

让我们看看下面的例子:

它有解

我们想要找到At的特征值,所以我们解行列式方程

在这种情况下是

由此我们可以很容易地得出结论

这意味着对于积分的围线,我们可以选择一个半径圆

这完全包含了任何时刻t≥0的特征值。接下来,回想一下2x2矩阵的逆是

我们求得了逆函数

接下来,计算

这和下面的函数是一样的:

由此,我们继续对每个积分分别求值:

这里,我们作以下处理:

因此,

并最终

这意味着两个解是:

我们可以通过对两个表达式求导来验证

从而得到了原始的常微分方程组

值得注意的是,该方法可以进一步推广到时变系数矩阵。例如,给定

我们发现

矩阵指数由柯西积分公式给出

标签: #c语言求解线性方程组的程序