View on GitHub

ITMO-PE

My study notes about Program Engineering at University ITMO

MainPage/Computatioonal&Mathematics/Exam

1.Основные свойства численных методов.(数字方法的主要特性)

2. Этапы решения задач численными методами.(使用数值方法解决问题的步骤)

问题建模:将实际问题转化为数学模型。这涉及确定问题的目标、边界条件、约束条件和输入数据等。

离散化:将连续的问题转化为离散的形式。这包括将空间和时间划分为离散的网格或网点,以便在这些点上进行计算。

近似方法选择:选择适当的数值方法来近似问题的解。这取决于问题的性质和要求,可能涉及差分方法、插值方法、优化算法等。

算法设计:设计实现所选数值方法的计算算法。这包括确定迭代方案、数值格式和计算步骤等。

计算过程:执行计算算法以获得数值解。这涉及输入初始条件、迭代计算并更新解,直到满足收敛准则或达到预定的计算步数。

结果评估:评估数值解的准确性和可靠性。这包括分析解的误差、收敛性以及与实际问题的比较等。

结果解释:解释数值解的物理或实际意义,并根据需要进行结果的可视化和解释。

误差分析和改进:分析误差来源并识别改进的可能性。这可能涉及调整离散化参数、改进算法或选择更精确的数值方法等。

3. Решение систем линейных уравнений. Метод Гаусса.(高斯法)

消元阶段:将线性方程组表示为增广矩阵,其中包含系数矩阵和右侧常数向量。通过一系列行变换,将增广矩阵转化为上三角矩阵,其中主对角线上的元素都不为零。

回代阶段:从最后一行开始,逐步求解变量的值。将求解出的变量值代入上面的方程,依次向上进行回代,直到求解出所有变量的值。

4. Метод Гаусса с выбором главного элемента.(高斯消元法)

首先,将线性方程组表示为增广矩阵,其中包含系数矩阵和右侧常数向量。

在每个消元步骤中,选择主元元素,即在当前列中绝对值最大的元素。这样可以减小舍入误差并提高计算的准确性。

如果选择的主元不在当前行,需要进行行交换,将主元所在的行移到当前行的位置。

使用所选的主元元素将当前列的其他元素消为零。为此,将当前行乘以适当的倍数,并从下面的行中减去该倍数乘以主元所在列的元素。

重复上述步骤,逐渐将增广矩阵转化为上三角形式。

在回代阶段,从最后一行开始,逐步求解变量的值。将求解出的变量值代入上面的方程,依次向上进行回代,直到求解出所有变量的值。

通过使用主元选择,高斯消元法可以减小舍入误差并提高数值解的准确性。这种方法对于处理病态(ill-conditioned)的方程组尤为有用,其中系数矩阵的条件数较大。

5. Метод Гаусса-Зейделя.(高斯赛德尔迭代)

高斯-塞德尔方法是一种逐步逼近的方法,它在每个迭代步骤中使用最新的估计值来更新解向量。相比于高斯消元法,高斯-塞德尔方法的收敛速度更快,尤其在对角元素相对较大的对称正定矩阵中效果更好。

然而,需要注意的是,高斯-塞德尔方法并不总是收敛。对于某些线性方程组,可能需要进一步的技术手段来确保收敛性和稳定性。

Метод Гаусса-Зейделя является модификацией метода простой итерации и обеспечивает более быструю сходимость к решению системы уравнений.
Gauss-Seidel 方法是简单迭代方法的改进,为求解方程组提供更快的收敛速度。

Идея метода: при вычислении компонента $x_i^{(k+1)}$ вектора неизвестных на $(k+1)$-й итерации используются $x_1^{(k+1)},x_2^{(k+1)},\cdots,x_{i-1}^{(k+1)}$, уже вычисленные на $(k+1)$-й итерации. Значения остальных компонент $x_{i+1}^{(k+1)},x_{i+2}^{(k+1)},\cdots,x_n^{(k+1)}$ берутся из предыдущей итерации.
方法思想:在第 $(k+1)$ 次迭代计算未知向量的分量 $x_i^{(k+1)}$ 时,$x_1^{(k+1)} ,x_2^{(k+1)},\cdots,x_{i-1}^{(k+1)}$,已在第 $(k+1)$ 次迭代中计算。其余分量的值 $x_{i+1}^{(k+1)},x_{i+2}^{(k+1)},\cdots,x_n^{(k+1) }$ 取自之前的迭代。

Так же как и в методе простых итераций строится эквивалентная СЛАУ и за начальное приближение принимается вектор правых частей (как правило, но может быть выбран и нулевой вектор): $x_i^0=(d_1,d_2,\cdots,d_n)$.
与简单迭代法一样,构造一个等价的 SLAE,并取右侧向量作为初始近似值(作为规则,但也可以选择零向量): $x_i^0=(d_1,d_2 ,\cdots,d_n)$。

\[\begin{cases} x_1=c_{11}x_1 + c_{12}x_2 + \cdots + c_{1n}x_n + d_1\\ x_2=c_{21}x_1 + c_{22}x_2 + \cdots + c_{2n}x_n + d_2\\ ...................................................\\ x_n=c_{n1}x_1 + c_{n2}x_2 + \cdots + c_{nn}x_n + d_n\\ \end{cases}\]

Тогда приближения к решению системы методом Зейделя определяются следующей системой равенств:
然后,通过 Seidel 方法对系统解的近似由以下方程组确定:

\[\begin{cases} x_1^{(k+1)}=c_{11}x_1^{(k)} + c_{12}x_2^{(k)} + \cdots + c_{1n}x_n^{(k)} + d_1\\ x_2^{(k+1)}=c_{21}x_1^{(k+1)} + c_{22}x_2^{(k)} + \cdots + c_{2n}x_n^{(k)} + d_2\\ x_3^{(k+1)}=c_{31}x_1^{(k+1)} + c_{32}x_2^{(k+1)} + c_{33}x_3^{(k)} + \cdots + c_{3n}x_n^{(k)} + d_3\\ ...................................................\\ x_n^{(k+1)}=c_{n1}x_1^{(k)} + c_{n2}x_2^{(k)} + \cdots + c_{nn}x_n^{(k)} + d_n\\ \end{cases}\]

Рабочая формула метода Гаусса-Зейделя:
高斯-赛德尔法的工作公式:

\[x_i^{(k+1)}=\frac{b_i}{a_{ii}}-\sum_{j=1}^{i-1}\frac{a_{ij}}{a_{ii}}x_j^{k+1}-\sum_{j=i+1}^n\frac{a_{ij}}{a_{ii}}x_j^k\quad i=1,2,\cdots,n\]

Итерационный процесс продолжается до тех пор, пока:
迭代过程一直持续到:

\[|x_1^{(k)}-x_1^{(k-1)}|\le\varepsilon, |x_2^{(k)}-x_2^{(k-1)}|\le\varepsilon,|x_3^{(k)}-x_3^{(k-1)}|\le\varepsilon\]

Достоинства метода:

Недостатки метода:

该方法的优点:

该方法的缺点:

6. Метод простой итерации.(简单迭代法)

Рассмотрим систему линейных уравнений с невырожденной матрицей ($det\ A\ne 0$):
考虑具有非奇异矩阵 ($det\ A\ne 0$) 的线性方程组:

\[\begin{cases} a_{11}x_1+a_{12}x_2+\cdots+a_{1n}x_n=b_1,\\ a_{21}x_1+a_{22}x_2+\cdots+a_{2n}x_n=b_2,\\ ...................................................\\ a_{n1}x_1+a_{n2}x_2+\cdots+a_{nn}x_n=b_n \end{cases}\qquad(5)\]

Приведем систему уравнений к виду $(6)$, выразив неизвестные $x_1, x_2, \cdots, x_n$ соответственно из первого, второго и т.д. уравнений системы $(5)$:
让我们将方程组简化为 $(6)$ 形式,表示未知数 $x_1, x_2, \cdots, x_n$ 分别来自第一个、第二个等。 系统方程$(5)$:

\[\begin{cases} x_1=\frac{a_{12}}{a_{11}}x_2 + \frac{a_{13}}{a_{11}}x_3 + \cdots + \frac{a_{1n}}{a_{11}}x_n - \frac{b_1}{a_{11}}\\ x_2=\frac{a_{21}}{a_{22}}x_1 + \frac{a_{23}}{a_{22}}x_3 + \cdots + \frac{a_{2n}}{a_{22}}x_n - \frac{b_2}{a_{22}}\\ ...................................................\\ x_n=\frac{a_{n1}}{a_{nn}}x_1 + \frac{a_{n2}}{a_{nn}}x_2 + \cdots + \frac{a_{n-1n-1}}{a_{nn}}x_{n-1} - \frac{b_n}{a_{nn}}\\ \end{cases}\qquad(6)\]

Обозначим: 得到

\[c_{ij}=\begin{cases} 0\quad при\ i=j\\ -\frac{b_i}{a_{ii}}\quad при\ i\ne j\\ \end{cases}\] \[d_i=\frac{b_i}{a_{ii}}\quad i=1,2,\cdots,n\]

Тогда получим: 然后得到

\[\begin{cases} x_1=c_{11}x_1 + c_{12}x_2 + \cdots + c_{1n}x_n + d_1\\ x_2=c_{21}x_1 + c_{22}x_2 + \cdots + c_{2n}x_n + d_2\\ ...................................................\\ x_n=c_{n1}x_1 + c_{n2}x_2 + \cdots + c_{nn}x_n + d_n\\ \end{cases}\]

Или в векторно-матричном виде: $\vec{x} = \vec{C}\vec{x} + \vec{D}$, где $\vec{x}$ – вектор неизвестных, $\vec{C}$ ‒ матрица коэффициентов преобразованной системы размерности $n\cdot n$, $\vec{D}$ ‒ вектор правых частей преобразованной системы.
或者以向量矩阵形式:$\vec{x} = \vec{C}\vec{x} + \vec{D}$,其中 $\vec{x}$ 是未知数向量,$\vec{C}$ 是系数 $n\cdot n$ 维变换系统的矩阵,$\vec{D}$ 是变换系统右侧的向量。

Систему (6) представим в сокращенном виде:
我们以缩写形式呈现系统(6):

\[x_i=\sum_{i=1}^nc_{ij}x_j+d_i,\quad i=1,2,\cdots,n\] \[c_{ij}=\begin{cases} 0, \quad при\ i=j\\ -\frac{a_{ij}}{a_{ii}}, \quad при\ i\ne j\\ \end{cases}\] \[d_i=\frac{b_i}{a_{ii}},\quad i=1,2,\cdots,n\]

Рабочая формула метода простой итерации:
简单迭代法的工作公式为:

\[\begin{cases} x_1^{(k+1)}=c_{11}x_1^{(k)} + c_{12}x_2^{(k)} + \cdots + c_{1n}x_n^{(k)} + d_1\\ x_2^{(k+1)}=c_{21}x_1^{(k)} + c_{22}x_2^{(k)} + \cdots + c_{2n}x_n^{(k)} + d_2\\ ...................................................\\ x_n^{(k+1)}=c_{n1}x_1^{(k)} + c_{n2}x_2^{(k)} + \cdots + c_{nn}x_n^{(k)} + d_n\\ \end{cases}\] \[x_i^{k+1}=\frac{b_i}{a_{ii}}-\sum_{j=1,j\ne i}^n\frac{a_{ij}}{a_{ii}}x_j^k,\quad i=1,2,\cdots,n\]

7. Условия сходимости итерационных методов решения СЛАУ.(迭代法解线性方程组的收敛性)

矩阵范数条件:迭代矩阵的范数应小于1。这是最常见的收敛条件之一。常见的矩阵范数有1-范数、2-范数和无穷大范数等。

对角占优条件:如果系数矩阵的每一行(或每一列)的对角元素的绝对值大于等于该行(或该列)其他元素绝对值之和,那么称系数矩阵满足对角占优条件。对角占优条件有助于确保迭代法的收敛性。

正定矩阵条件:如果系数矩阵是对称正定的,那么迭代法通常会收敛。对称正定矩阵具有一些特殊性质,可以确保迭代法的收敛性。

对称性条件:对称的系数矩阵通常有助于迭代法的收敛。对称矩阵具有一些特殊的性质,可以简化迭代算法并提高收敛速度。

Теорема. Достаточным условием сходимости итерационного процесса к решению системы при любом начальном векторе $x_i^{(0)}$ является выполнение условия преобладания диагональных элементов или доминирование диагонали:
定理。 对于任何初始向量 $x_i^{(0)}$,迭代过程收敛到系统解的充分条件是满足对角元素占优势或对角线占优势的​​条件:

\[\lvert a_{ii}\rvert \ge \sum_{i\ne j}\lvert a_{ij}\rvert,\qquad 1,2,\cdots,n\]

При этом хотя бы для одного уравнения неравенство должно выполняться строго. Эти условия являются достаточными для сходимости метода, но они не являются необходимыми, т. е. для некоторых систем итерации сходятся и при нарушении этого условия.
在这种情况下,对于至少一个方程,必须严格满足不等式。 这些条件足以使方法收敛,但它们不是必需的,即对于某些系统,即使违反此条件,迭代也会收敛。

Теорема. Достаточным условием сходимости итерационного метода к решению системы при любом начальном векторе $x_i^{(0)}$ является требование к норме матрицы $С$:
定理。 对于任何初始向量 $x_i^{(0)}$,迭代方法收敛求解系统的充分条件是矩阵 $C$ 的范数的要求:

\[\lvert\lvert C\rvert\rvert=\max_{1\le i\le n,1\le j\le n}\sum_{j=1}^n\lvert c_{ij}\rvert\lt 1\] \[\lvert\lvert C\rvert\rvert=\sqrt{\sum_{i=1}^n\sum_{j=1}^nc_{ij}^2}\lt 1\]

Условие сходимости $\lvert\lvert C\rvert\rvert \lt 1$ в этом методе равносильно условию диагонального преобладания.
该方法中的收敛条件 $\lvert\lvert C\rvert\rvert \lt 1$ 等价于对角优势条件。

8. Методы решения нелинейных уравнений. Метод касательных.(解决非线性方程的方法。切线法。)

方法在非线性方程求解中是一种常用的数值方法之一。也称为牛顿迭代法。它通过利用函数的切线来逐步逼近方程的根。具体步骤如下:

选择初始估计值x₀。

计算函数在 $x₀$ 处的值 $f(x₀)$ 和导数在x₀处的值 $f’(x₀)$。

使用切线的斜率来计算下一个近似根x₁。计算公式如下:

\[x₁ = x₀ - f(x₀)/f'(x₀)\]

重复步骤2和步骤3,计算下一个近似根,直到满足预先设定的停止准则,如误差小于一定阈值或达到最大迭代次数。

返回最终的近似根。

牛顿法的优点是收敛速度通常很快,尤其是当初始估计值接近根时。然而,它也有一些注意事项:

初始估计值的选择很重要,不同的初始估计值可能会导致不同的根或迭代过程不收敛。 在某些情况下,牛顿法可能会陷入局部最小值或发散,特别是在函数具有复杂性或奇点的情况下。 对于方程组的求解,需要使用扩展的牛顿法,也称为牛顿-拉夫逊法。

Идея метода: функция $y=f(x)$ на отрезке $[a, b]$ заменяется касательной и в качестве приближенного значения корня $x^* = x_n$ принимается точка пересечения касательной с осью абсцисс.
方法思路:将线段 $[a,b]$ 上的函数 $y=f(x)$ 替换为切线,并取切线与横坐标轴的交点作为近似值根 $x^* = x_n$ 的值。

$x_1=x_0-h_0$

$h_0=\frac{f(x_0)}{\tan\alpha}=\frac{f(x_0)}{f’(x_0)}$

Рабочая формула метода:
该方法的工作公式:

\[x_i=x_{i-1}-\frac{f(x_{i-1})}{f'(x_{i-1})}\]

Критерий окончания итерационного процесса:
迭代过程结束的标准:

\[\lvert x_n-x_{n-1}\le\varepsilon\ или\ \lvert\frac{f(x_n)}{f'(x_n)}\rvert\le\varepsilon\ или\ \lvert f(x_n)\rvert\le\varepsilon\]

Приближенное значение корня: $x^=x_n$
近似根值:$x^
=x_n$

9. Метод деления отрезка пополам.(二分法)

二分法(又称为区间减半法或二分搜索法)是一种常用的数值方法,用于解决非线性方程的数值逼近。它通过将待求解的区间逐步减半,直到找到方程的根或达到预定的精度要求。具体步骤如下:

选择一个包含根的初始区间 $[a, b]$,确保方程在该区间内是连续的且根存在。

计算区间中点 $c = (a + b) / 2$。

计算函数在中点 c 处的值 $f(c)$。

检查 $f(c)$ 是否接近于零,或是否满足预定的精度要求。如果满足条件,则 c 是方程的近似根,算法结束。

如果 $f(c)$ 与零的符号相同,则将 c 作为新的右区间边界 b,并返回步骤2。

如果 $f(c)$ 与零的符号相反,则将 c 作为新的左区间边界 a,并返回步骤2。

重复步骤2到步骤6,直到找到方程的根或达到预定的精度要求。

二分法的优点是简单易懂,每一步都可以确保区间中包含根,并且收敛速度相对较快。然而,它也有一些注意事项:

初始区间的选择很重要,不同的初始区间可能导致不同的根或迭代过程不收敛。 如果方程在区间的端点上没有变号,二分法可能无法找到根。 对于具有多个根的方程,二分法只能找到一个根。

10. Методы решения нелинейных уравнений. Метод простой итерации.(解决非线性方程,简单迭代法)

它通过将原始方程转化为等价的迭代形式,逐步逼近方程的根。具体步骤如下:

将非线性方程表示为函数的形式,即 $f(x) = 0$。

将方程转化为迭代形式,即 $x = g(x)$,其中 $g(x)$ 是新的函数形式。

选择初始估计值 $x₀$。

通过以下迭代步骤更新估计值 x 的值:

\(x₁ = g(x₀)\) \(x₂ = g(x₁)\) \(...\) \(xₙ₊₁ = g(xₙ)\)

重复步骤4,直到满足预设的停止准则,如误差小于一定阈值或达到最大迭代次数。

返回最终的近似根 $xₙ$。

简单迭代法的成功与否取决于迭代函数 g(x) 的选择和初始估计值 x₀ 的选取。对于迭代函数 $g(x)$,需要满足以下条件以确保收敛性:

在根附近,$g(x)$ 的导数的绝对值小于 1,即 $|g’(x)| < 1$。 $g(x)$ 在根附近是连续的。 此外,初始估计值 x₀ 的选择也很重要。不同的初始估计值可能导致不同的根或迭代过程不收敛。

需要注意的是,简单迭代法可能遇到收敛速度慢的问题,特别是在接近根的情况下。为了提高迭代的收敛速度,可以使用其他更高级的迭代方法,如牛顿法或割线法。

11. Методы решения нелинейных уравнений. Метод хорд.(弦截法)

Идея метода: функция $y=f(x)$ на отрезке $[a, b]$ заменяется хордой и в качестве приближенного значения корня принимается точка пересечения хорды с осью абсцисс. Уравнение хорды, проходящей через точки $A(a,f(a))$ и $B(b,f(b))$:

\[\frac{y-f(a)}{f(b)-f(a)}=\frac{x-a}{b-a}\]

Точка пересечения хорды с осью абсцисс $(y = 0)$: $x=a-\frac{b-a}{f(b)-f(a)}f(a)$

Алгоритм метода:

  1. Находим интервал изоляции корня $[a_0, b_0]$
  2. Вычисляем $x_0$: $x_0=a_0-\frac{b_0-a_0}{f(b_0)-f(a_0)}f(a_0)$
  3. Вычисляем $f(x_0)$.
  4. В качестве нового интервала выбираем ту половину отрезка, на концах которого функция имеет разные знаки: $[a_0,x_0]$ либо $[b_0,x_0]$.
  5. Вычисляем $x_1$ и т.д (повторяем 1-3 шаги).

Рабочая формула метода:

\[x_i=\frac{a_if(b_i)-b_if(a_i)}{f(b_i)-f(a_i)}\]

Критерий окончания итерационного процесса: $\lvert x_i-x_{i-1}\rvert\le\varepsilon$ или $\lvert a_i-b_i\rvert\le\varepsilon$ или $\lvert f(x_i)\rvert\le\varepsilon$ Приближенное значение корня: $x^*= x_n$

Семейство хорд может строиться:

В этом случае НЕ надо определять на каждой итерации новые значения $a$, $b$

Определение фиксированного конца

12. Метод секущих.(割线法(又称为切线法)

Упростим метод Ньютона, заменив f’(x) разностным приближением:

\[f'(x_i)\approx\frac{f(x_i)-f(x_{i-1})}{x_i-x_{i-1}}\]

Рабочая формула метода:

\[x_{i+1}=x_i-\frac{x_i-x_{i-1}}{f(x_i)-f(x_{i-1})}f(x_i)\qquad i=1,2,\cdots\]

Метод секущих является двухшаговым, т.е. новое приближение $x_{i+1}$ определяется двумя предыдущими итерациями $x_i$ и $x_{i-1}$.

Выбор $x_0$ определяется как и в методе Ньютона, $x_i$- выбирается рядом с начальным самостоятельно.

Критерий окончания итерационного процесса:

\[\lvert x_n-x_{n-1}\rvert\le\varepsilon\ или\ \lvert f(x_n)\rvert\le\varepsilon\]

Приближенное значение корня: $x^∗= x_n$

Визуализация метода секущих

13. Методы решения системы нелинейных уравнений. Метод Ньютона.

14. Методы решения системы нелинейных уравнений. Метод простой итерации.

15. Интерполяция функции.(插值)

16. Интерполяционная формула Лагранжа.(拉格朗日插值公式)

17. Интерполяционные формулы Ньютона.(牛顿插值公式)

18. Конечные и разделенные разности.(有限差商和分裂差商)

19. Интерполяционные формулы Гаусса, Стирлинга, Бесселя.(高斯插值公式、斯特林插值公式和贝塞尔插值公式)

20. Аппроксимация функции методом наименьших квадратов.(最小二乘法)

21. Линейное приближение.(线性逼近)

22. Квадратичное приближение.(二次逼近)

23. Аппроксимация степенной, экспоненциальной и логарифмической функций(幂函数、指数函数和对数函数的逼近)

24. Численное интегрирование. Метод прямоугольников.(数值积分。矩形方法)

25. Численное интегрирование. Метод трапеций.(数值积分,梯形法)

26. Численное интегрирование. Метод Симпсона.(辛普森法则)

27. Решения задачи Коши. Методы Эйлера(柯西问题,欧拉方法)

28. Решения задачи Коши. Методы Рунге-Кутта.(龙格-库塔方法)

29. Многошаговые методы. Метод Адамса.(多步方法,亚当斯(Adams)方法)

30. Многошаговые методы. Метод Милна.(米尔恩(Milne)方法)