I happened to find out two interesting exercises of numerical computation methods when sorting out files lately. Though quite a long time ago, putting them here to commemorate.
1. Solve a differential equation
求解 \[ \left\{\begin{array}{l} \frac{\mathrm{d} y}{\mathrm{d} x}=x+y \\ y(0)=1 \end{array}\right.\,, \] 给出 \(y(10)\) 的估计结果.
解 \[ \begin{equation} \frac{\mathrm{d} y(x)}{\mathrm{d} x} = x + y(x)\tag{1.1} \end{equation} \] 将上式 \(y(x)\) 移到等式左侧,同时等式两边乘上一个 \(e^{-x}\) 项,得到 \[ \begin{equation} e^{-x}\cdot \frac{\mathrm{d} y(x)}{\mathrm{d} x}-e^{-x}y(x) = e^{-x} \cdot x \,.\tag{1.2} \end{equation} \] 考虑到 \((1.3)\) 式 \[ \begin{equation} -e^{-x} = \frac{\mathrm{d}}{\mathrm{d} x}e^{-x}\,,\tag{1.3} \end{equation} \] 可以得到 \[ \begin{equation} \frac{\mathrm{d}}{\mathrm{d} x}(e^{-x} \cdot y(x)) = e^{-x} \cdot x \,,\tag{1.4} \end{equation} \] 对等 \((1.4)\) 两边同时积分,得 \[ \begin{equation} \int_{-\infty}^x \frac{\mathrm{d}}{\mathrm{d} t}(e^{-t} \cdot y(t))\ \mathrm{d}t = \int_{-\infty}^x e^{-t} \cdot t\ \mathrm{d}t \,. \end{equation}\tag{1.5} \] \((1.5)\) 式左边就是 \(e^{-x}\cdot y(x)\),等式两边同时乘 \(e^{-x}\) 就得到 \(y(x)\) 的表达式,经过计算得到 \(y(x)\) 的一般表达式为 \[ \begin{equation} y(x) = ce^{x}-x-1 \,,\tag{1.6} \end{equation} \] 代入初值 \(y(0) = 1\),得到 \(y(x)\) 的具体表达式为 \[ \begin{equation} y(x) = 2e^{x}-x-1\,.\tag{1.7} \end{equation} \]
所以 \(y(10)\) 的解析解为\(2e^{10}-11\).
这道题是数值计算方法第一节课老师给我们的思考题——用数值方法求解.上面是一个解析解法,是当时同组的一个同学给出的;我当时用Taylor's Formula的数值求解方法如下.至于什么Euler法由于疫情的原因后来也没时间上这部分的内容,至今仍然不会[汗].
假设欲求函数为 \(y(x)\),根据Taylor's Formula在 \(x=0\) 处展开得到 \[ \begin{equation} \begin{aligned} y(x)&=\sum_{n=0}^{\infty} \frac{y^{(n)}(0)}{n !}x^{n}\\ &=y(0)+\frac{y'(0)}{1!}x+\frac{y''(0)}{2!}x^2+\frac{y'''(0)}{3!}x^3+\cdots +\frac{y^{(n)}(0)}{n !}x^{n}\,. \end{aligned} \end{equation}\tag{1.8} \]
由于 \(\frac{\mathrm{d} y(x)}{\mathrm{d} x}=x+y(x)\) 并且 \(y(0)=1\),我们可以通过迭代计算出\(y^{(n)}(0), n\in \mathbb{N}\),于是可以得到 \(y(x)\) 的估计函数 \(\hat{y}(x)\). \[ \begin{aligned} y'(x)=x+y(x)\, \quad & y'(0)=0+1=1 \ ;\\ y''(x)=1+y'(x)\, \quad & y''(0)=1+1=2 \ ;\\ y'''(x)=y''(x)\, \quad & y'''(0)=2 \ ; \\ y''''(x)=y'''(x)\, \quad & y''''(0)=2 \ ; \\ ....&\ .. \\ y^{(n)}(x)=y&^{(n-1)}=2 \,. \end{aligned} \] 由此,我们可以得到 \(y^{(n)}\) 的递推公式 \(y^{(n)}=\left\{\begin{array}{ll} 1\, & (n=0,1) \\ 2\, & (n \geqslant 2) \end{array}\right.\).当\(n\geqslant 2\)时, \(y^{(n)}\) 恒为 \(2\),可以推测出 \(y(x)\) 带有 \(ce^{x}\) 项.实际上根据 \[ \begin{equation} \begin{aligned} \hat{y}(x)&=1+\frac{1}{1!}x+\frac{2}{2!}x^2+\frac{2}{3!}x^3+\cdots +\frac{2}{n !}x^{n}\\ &=2(1+x+\frac{x^2}{2!}+\frac{x^3}{3!}+\cdots+ \frac{x^{n}}{n !})-x-1 \end{aligned} \end{equation} \tag{1.9} \] 可以得到 \[ \begin{equation} y(x)=\lim_{n\rightarrow \infty} \hat{y}(x)= 2e^{x}-x-1 \,.\tag{1.10} \end{equation} \] \((1.10)\) 与解析解是一致的.
2. Prove a equation
这是一道比较别扭的证明题.
若\(f(x)=a_{0}+a_{1} x+\cdots+a_{n-1} x^{n-1}+a_{n} x^{n}\)有 \(n\) 个不同实根 \(x_1,x_2,\dots,x_n\),证明: \[ \sum_{j=1}^{n} \frac{x_{j}^{k}}{f^{\prime}\left(x_{j}\right)}=\left\{\begin{array}{ll} 0&(0 \leqslant k \leqslant n-2) \\ a_{n}^{-1}& (k=n-1) \end{array}\right. \,. \] 证明
由于 \(f(x)=a_{0}+a_{1} x+\cdots+a_{n-1} x^{n-1}+a_{n} x^{n}\) 有 \(n\) 个不同实根 \(x_1,x_2,\dots,x_n\),故 \(f(x)\) 可写成 \[ f(x)=a_n(x-x_1)(x-x_2)\cdots(x-x_n) \] 的形式.令 \(\omega(x)=(x-x_1)(x-x_2)\cdots(x-x_n)\),则 \[ \omega'(x)=\sum_{j=1}^n(x-x_1)(x-x_2)\cdots(x-x_{j-1})(x-x_{j+1})\cdots(x-x_n)\,, \] 代入 \(x=x_j\) 得 \[ \omega'(x_j)=(x_j-x_1)(x_j-x_2)\cdots(x_j-x_{j-1})(x_j-x_{j+1})\cdots(x_j-x_n)=\prod_{i=1 \atop i \neq j}^{n}\left(x_{j}-x_{i}\right)\,. \] 设 \(g(x)=x^k\),则 \[ g[x_1,x_2,\cdots,x_n]=\sum_{j=1}^n\frac{g(x_j)}{\omega'(x_j)}=\sum_{j=1}^n\frac{a_n x_j^k}{f'(x_j)}\,. \] 由差商与导数的关系,有 \[ g[x_1,x_2,\cdots,x_n]=\frac{g^{(n-1)}(\xi)}{(n-1) !}=\frac{\left(\xi^{k}\right)^{(n-1)}}{(n-1) !},\quad \xi \in\left[x_{1}, \cdots, x_{n}\right]\,. \] 故有 \[ \sum_{j=1}^n\frac{x_j^k}{f'(x_j)}=\frac{\left(x_j^{k}\right)^{(n-1)}}{a_n(n-1) !}\,, \] 当 \(0 \leqslant k \leqslant n-2\) 时, \(\sum_{j=1}^n\frac{x_j^k}{f'(x_j)}=0\);当 \(k=n-1\) 时, \(\sum_{j=1}^n\frac{x_j^k}{f'(x_j)}=a_n^{-1}\).
□