跳到主要内容

東京大学 情報理工学系研究科 コンピュータ科学専攻 2017年8月実施 専門科目II 問題1

Author

祭音Myyura (co-authored with GPT 5.6 SOL)

Description

Consider solving numerically a system of first-order linear ordinary differential equations

dxidt(t)=j=1nai,j(t)xj(t),t0(†)\frac{dx_i}{dt}(t)=\sum_{j=1}^n a_{i,j}(t)x_j(t),\qquad t\ge0 \tag{†}

on a set of nn real functions of a real independent variable tt,

xi(t),i=1,2,,n,x_i(t),\qquad i=1,2,\cdots,n,

where ai,j(t)a_{i,j}(t) is the i,ji,j component of an n×nn\times n coefficient matrix A(t)A(t). Let h>0h>0 be the step size used in the numerical methods. Suppose that the numerical solution is computed from initial values

xi(0)R,i=1,2,,n.x_i(0)\in\mathbb R,\qquad i=1,2,\cdots,n.

Assume that matrix A(t)A(t) has nn distinct eigenvalues for any tt.

Answer the following questions.

(1) Suppose that A(t)A(t) is a constant matrix A0A_0, which is independent of tt. Answer a necessary and sufficient condition for the eigenvalues of A0A_0 to satisfy

i=1,2,,n,limtxi(t)=0,\forall i=1,2,\cdots,n,\qquad \lim_{t\to\infty}x_i(t)=0,

for any initial value.

(2) Answer a recurrence formula to solve Eq. (\dagger) by the forward Euler method. In addition, express the order of the local truncation error by big OO notation of the step size hh.

(3) Suppose that Eq. (\dagger) is solved by the forward Euler method. The obtained approximation of xi(kh)x_i(kh) is expressed as Xi(k)X_i(k), where kk is a non-negative integer to express the step number of the method.

Suppose that A(t)A(t) is a constant matrix A0A_0, which is independent of tt. Answer a necessary and sufficient condition for the eigenvalues of A0A_0 to satisfy

i=1,2,,n,limkXi(k)=0,\forall i=1,2,\cdots,n,\qquad \lim_{k\to\infty}X_i(k)=0,

for any initial value.

(4) Give an advantage of the backward Euler method compared to the forward Euler method with a brief explanation.

(5) Compare the computational complexity of one step to solve Eq. (\dagger) by the forward Euler method with that by the backward Euler method, by using big OO notation of nn. Assume that the computational complexity to read each ai,j(t)a_{i,j}(t) is O(1)O(1).

题目描述

xi(t)x_i(t)i=1,,ni=1,\ldots,n)是实变量 tt 的实值函数。从初值 xi(0)Rx_i(0)\in\mathbb Ri=1,,ni=1,\ldots,n)出发,数值求解一阶线性常微分方程组

dxi(t)dt=j=1naij(t)xj(t),t0,\frac{dx_i(t)}{dt}=\sum_{j=1}^n a_{ij}(t)x_j(t),\qquad t\ge0,

其中 A(t)=(aij(t))A(t)=(a_{ij}(t)) 在任意 tt 均有 nn 个互异特征值,步长为 h>0h>0

(1)当 A(t)=A0A(t)=A_0 为常矩阵时,给出对任意初值都有 limtxi(t)=0\lim_{t\to\infty}x_i(t)=0(全部 ii)的特征值充要条件。

(2)写出前向 Euler 法的递推式,并用 hh 的大 OO 记号给出局部截断误差。

(3)仍设 A(t)=A0A(t)=A_0。以前向 Euler 法得到第 kk 步的 xi(kh)x_i(kh) 的近似值 Xi(k)X_i(k),其中 kk 为非负整数。给出对任意初值、全部 i=1,,ni=1,\ldots,n 都有 limkXi(k)=0\lim_{k\to\infty}X_i(k)=0 的特征值充要条件。

(4)简述后向 Euler 法相对于前向 Euler 法的一个优点。

(5)设读取每个 aij(t)a_{ij}(t) 的复杂度为 O(1)O(1),比较两种 Euler 法求解一步的计算复杂度,以 nn 的大 OO 记号作答。

Kai

x=A(t)x\boldsymbol{x}'=A(t)\boldsymbol{x}

(1)

充要条件为

Reλi(A0)<0(i=1,,n).\operatorname{Re}\lambda_i(A_0)<0\qquad(i=1,\ldots,n).

由于特征值互异,A0A_0 可在 C\mathbb C 上对角化;解的各特征模态为 eλite^{\lambda_i t},故上述条件恰好保证所有模态趋于 00

(2)

X(k+1)=X(k)+hA(kh)X(k),\boldsymbol X(k+1)=\boldsymbol X(k)+hA(kh)\boldsymbol X(k),

Xi(k+1)=Xi(k)+hj=1naij(kh)Xj(k).X_i(k+1)=X_i(k)+h\sum_{j=1}^n a_{ij}(kh)X_j(k).

在精确解足够光滑时,未除以 hh 的单步局部截断误差为 O(h2)O(h^2)(相应的归一化局部残差为 O(h)O(h))。

(3)

常系数时

X(k)=(I+hA0)kX(0).\boldsymbol X(k)=(I+hA_0)^k\boldsymbol X(0).

因此充要条件是

1+hλi(A0)<1(i=1,,n).|1+h\lambda_i(A_0)|<1\qquad(i=1,\ldots,n).

(4)

后向 Euler 法对左半平面是绝对稳定的:若 Reλ<0\operatorname{Re}\lambda<0,其放大因子

11hλ\frac{1}{1-h\lambda}

对任意 h>0h>0 的模都小于 11。因此处理刚性方程时不受前向 Euler 法那样严格的稳定步长限制。

(5)

前向 Euler 法只需一次稠密矩阵与向量相乘,复杂度为 O(n2)O(n^2)。后向 Euler 法每步需解线性方程组

[IhA((k+1)h)]X(k+1)=X(k),[I-hA((k+1)h)]\boldsymbol X(k+1)=\boldsymbol X(k),

当该系数矩阵可逆时,对一般稠密矩阵用消元法为 O(n3)O(n^3)。若 AAhh 固定,可先花 O(n3)O(n^3) 作一次 LU 分解,以后各步只需 O(n2)O(n^2) 的三角求解。