function [x,y] = myFD(alpha, beta, a, b, N) % 求解常微分方程边值问题 y'' + p(x)y' + q(x)y = r(x), a < x < b % y(a) = alpha, y(b) = beta % N 表示对区间 [a,b] 剖分 N 等份 % 返回值 x 为 [a,b] 的剖分节点 % 返回值 y 为剖分节点上的数值解 p(x)=3 q(x)=2 y(x)=sin(x)
时间: 2023-06-26 09:06:53 浏览: 85
这个问题需要使用有限差分法(Finite Difference Method)求解。具体步骤如下:
1. 对区间 $[a,b]$ 进行剖分,得到 $N+1$ 个节点 $x_0=a,x_1,\ldots,x_N=b$,其中 $x_i=a+i\frac{b-a}{N}$。
2. 定义 $y_i \approx y(x_i)$,则 $y_0=\alpha,y_N=\beta$。
3. 将 $y''(x)$ 在 $x_i$ 处使用三点中心差分公式离散化,得到:
$$
y''_i = \frac{y_{i+1}-2y_i+y_{i-1}}{(\Delta x)^2}
$$
其中 $\Delta x = \frac{b-a}{N}$。
4. 将 $y'(x)$ 和 $y(x)$ 在 $x_i$ 处用两点中心差分公式离散化,得到:
$$
y'_i = \frac{y_{i+1}-y_{i-1}}{2\Delta x} \\
y_i = y(x_i)
$$
5. 将 $y''(x), y'(x), y(x)$ 代入常微分方程,得到:
$$
\frac{y_{i+1}-2y_i+y_{i-1}}{(\Delta x)^2} + 3\frac{y_{i+1}-y_{i-1}}{2\Delta x} + 2y_i = \sin{x_i}
$$
6. 将上式整理,得到:
$$
y_{i+1} - \left(2(\Delta x)^2 + 3\Delta x\right) y_i + y_{i-1} = (\Delta x)^2 \sin{x_i}
$$
7. 将 $y_0=\alpha,y_N=\beta$ 代入上式,得到:
$$
\begin{aligned}
y_1 - \left(2(\Delta x)^2 + 3\Delta x\right) y_0 &= (\Delta x)^2 \sin{x_0} - \alpha \\
y_{N-1} - \left(2(\Delta x)^2 - 3\Delta x\right) y_N &= (\Delta x)^2 \sin{x_N} - \beta
\end{aligned}
$$
8. 将上式转化为矩阵形式 $A\mathbf{y} = \mathbf{b}$,其中:
$$
A =
\begin{pmatrix}
-2(\Delta x)^2 - 3\Delta x & 1 & 0 & \cdots & 0 \\
1 & -2(\Delta x)^2 - 3\Delta x & 1 & \cdots & 0 \\
0 & 1 & -2(\Delta x)^2 - 3\Delta x & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & \cdots & 0 & 1 & -2(\Delta x)^2 + 3\Delta x
\end{pmatrix}
$$
$$
\mathbf{y} = \begin{pmatrix}
y_0 \\
y_1 \\
\vdots \\
y_N
\end{pmatrix}
$$
$$
\mathbf{b} = \begin{pmatrix}
(\Delta x)^2 \sin{x_0} - \alpha \\
(\Delta x)^2 \sin{x_1} \\
\vdots \\
(\Delta x)^2 \sin{x_N} - \beta
\end{pmatrix}
$$
9. 解线性方程组 $A\mathbf{y} = \mathbf{b}$,得到 $\mathbf{y}$。
10. 返回 $x$ 和 $y$。
下面是 MATLAB 代码实现:
阅读全文