Введение: Постановка задачи и актуальность численных методов
В эпоху бурного развития компьютерного моделирования и вычислительной математики, численные методы выступают в роли незаменимого инструмента для решения широкого круга задач, не имеющих аналитического решения или требующих слишком сложных вычислений. Значительная часть физических, инженерных и экономических процессов описывается обыкновенными дифференциальными уравнениями (ОДУ) или требует вычисления определенных интегралов. Из этого следует, что способность инженера или исследователя грамотно применять и критически оценивать эти методы напрямую влияет на достоверность и скорость получаемых результатов.
Актуальность работы продиктована необходимостью глубокого понимания принципов построения, порядка точности и ограничений наиболее распространенных численных схем. Среди них особое место занимают метод Рунге-Кутта 4-го порядка (РК4) для решения задачи Коши и составная формула Симпсона для численного интегрирования. Оба метода выделяются высоким порядком точности ($O(h^4)$), что делает их основой для многих современных вычислительных пакетов.
Цель курсовой работы состоит в деконструкции теоретических основ, математическом обосновании порядка точности, детальной алгоритмизации и практической программной реализации классических численных методов — РК4 и формулы Симпсона, с последующим критическим анализом их устойчивости и точности.
Структура работы последовательно охватывает теоретические аспекты, вывод формул, описание алгоритмов и, наконец, углубленный анализ практических ограничений, включая проблему устойчивости РК4 применительно к «жестким» ОДУ.
Исторически, численные методы интегрирования ОДУ начали активно развиваться в конце XIX – начале XX века. Классический метод Рунге-Кутта 4-го порядка был впервые предложен немецкими математиками Карлом Рунге и Мартином Куттой около 1900 года, став золотым стандартом явных одношаговых методов. Формула Симпсона, в свою очередь, была выведена британским математиком Томасом Симпсоном еще в 1743 году и представляет собой краеугольный камень в численном интегрировании.
Глава 1. Теоретические основы метода Рунге-Кутты 4-го порядка (РК4)
Метод Рунге-Кутта 4-го порядка (РК4) является наиболее часто используемым явным одношаговым методом для численного решения задачи Коши для обыкновенного дифференциального уравнения первого порядка:
$$y’ = f(x, y), \quad y(x_0) = y_0$$
Он относится к семейству схем, которые используют взвешенное среднее нескольких оценок наклона (правой части $f(x, y)$) внутри интервала $[x_i, x_{i+1}]$ для вычисления приращения $\Delta y$.
Исторический контекст и классическая формулировка
Успех метода РК4 объясняется тем, что его вычислительная схема соответствует разложению искомого решения $y(x)$ в ряд Тейлора до членов четвертого порядка включительно, что гарантирует высокую точность. В отличие от методов, основанных непосредственно на рядах Тейлора, РК4 избегает трудоемкого вычисления частных производных функции $f(x, y)$.
Приращение $\Delta y_i = y_{i+1} — y_i$ на шаге $h = x_{i+1} — x_i$ определяется как взвешенная сумма четырех «наклонов» $k_1, k_2, k_3, k_4$.
Классическая формулировка метода Рунге-Кутта 4-го порядка:
Новое значение искомой функции $y_{i+1}$ вычисляется по формуле:
$$y_{i+1} = y_i + \frac{h}{6} (k_1 + 2k_2 + 2k_3 + k_4)$$
Где коэффициенты $k_j$ представляют собой оценки наклона в различных точках интервала $[x_i, x_{i+1}]$:
- Первая оценка наклона в начальной точке:
$$k_1 = f(x_i, y_i)$$ - Вторая оценка наклона в середине интервала, используя $k_1$:
$$k_2 = f(x_i + h/2, y_i + (h/2) \cdot k_1)$$ - Третья оценка наклона в середине интервала, используя $k_2$:
$$k_3 = f(x_i + h/2, y_i + (h/2) \cdot k_2)$$ - Четвертая оценка наклона в конце интервала, используя $k_3$:
$$k_4 = f(x_i + h, y_i + h \cdot k_3)$$
Эти четыре коэффициента можно интерпретировать как четыре последовательных приближения для среднего наклона на интервале, что обеспечивает высокую точность аппроксимации.
Анализ погрешности и порядок точности
Порядок точности численного метода является ключевой метрикой, определяющей, как быстро уменьшается ошибка при уменьшении шага интегрирования $h$.
Для анализа РК4 вводятся два понятия погрешности: локальная и глобальная.
1. Локальная погрешность (Погрешность на одном шаге)
Локальная погрешность $R_i$ — это разность между точным решением $y(x_{i+1})$ и численным решением $y_{i+1}$, предполагая, что начальное значение $y_i$ было абсолютно точным.
Теоретический анализ показывает, что для классического метода Рунге-Кутты 4-го порядка локальная погрешность имеет порядок $O(h^5)$.
$$R_i = y(x_{i+1}) — y_{i+1} = C \cdot h^5 + O(h^6)$$
где $C$ зависит от производных функции $f(x, y)$. Это означает, что при уменьшении шага $h$ в 2 раза, локальная погрешность уменьшается в $2^5 = 32$ раза, что является чрезвычайно быстрым схождением.
2. Глобальная погрешность (Накопленная погрешность)
Глобальная погрешность $\varepsilon_N$ — это погрешность, накопленная на всем интервале интегрирования $[x_0, x_N]$. Так как общее число шагов $N$ пропорционально $1/h$ (т.е. $N = (x_N — x_0)/h$), а локальная ошибка $R_i$ имеет порядок $O(h^5)$, то глобальная ошибка получается путем суммирования локальных ошибок:
$$\varepsilon_N \approx N \cdot R_i \approx \frac{1}{h} \cdot O(h^5) = O(h^4)$$
Таким образом, глобальная погрешность классического метода Рунге-Кутта 4-го порядка на всем интервале интегрирования имеет четвертый порядок точности $O(h^4)$. Это является его ключевым преимуществом по сравнению с простейшим методом Эйлера ($O(h)$) или модифицированным методом Эйлера ($O(h^2)$).
Глава 2. Теоретические основы формулы Симпсона (Формулы парабол)
Формула Симпсона является эффективным методом для численного вычисления определенного интеграла $\int_{a}^{b} f(x) dx$. Этот метод относится к квадратурным формулам Ньютона-Котеса, которые используют интерполяционный полином для аппроксимации подынтегральной функции.
Вывод формулы на основе квадратичной интерполяции
Метод Симпсона (иногда называемый формулой парабол) основан на идее приближения функции $f(x)$ на малом отрезке квадратичным интерполяционным полиномом (параболой) второй степени. Для построения параболы требуется три узла.
Рассмотрим интервал $[x_i, x_{i+2}]$ с шагом $h$. Узлы: $x_i$, $x_{i+1} = x_i + h$, $x_{i+2} = x_i + 2h$. Интеграл от $f(x)$ на этом двойном подотрезке приближается интегралом от интерполяционного полинома $P_2(x)$, проходящего через точки $(x_i, f_i)$, $(x_{i+1}, f_{i+1})$ и $(x_{i+2}, f_{i+2})$.
Результат интегрирования полинома приводит к простой формуле Симпсона:
$$\int_{x_i}^{x_{i+2}} f(x) dx \approx \frac{h}{3} [f(x_i) + 4f(x_{i+1}) + f(x_{i+2})]$$
Для вычисления интеграла на всем интервале $[a, b]$, используется составная формула Симпсона. Интервал разбивается на $N$ подотрезков, где $N$ должно быть четным числом, чтобы весь интервал можно было разбить на $N/2$ двойных подотрезков.
Пусть $h = (b-a)/N$. Составная формула Симпсона имеет вид:
$$\int_{a}^{b} f(x) dx \approx \frac{h}{3} [f(x_0) + 4f(x_1) + 2f(x_2) + 4f(x_3) + \ldots + 2f(x_{N-2}) + 4f(x_{N-1}) + f(x_N)]$$
Ключевой особенностью является чередование весовых коэффициентов: 1, 4, 2, 4, 2, …, 4, 1. Это позволяет методу Симпсона достигать более высокой точности по сравнению с другими квадратурными формулами Ньютона-Котеса, использующими только линейную или константную аппроксимацию.
Сравнение точности и оценка погрешности
Несмотря на то, что формула Симпсона основана на интерполяции полиномом второй степени, она обеспечивает удивительно высокий порядок точности.
Порядок точности: При условии достаточной гладкости функции (наличия четвертой производной $f^{(4)}(x)$), формула Симпсона обеспечивает четвертый порядок точности $O(h^4)$.
Это объясняется тем, что формула Симпсона является точной не только для полиномов второй степени, но и для полиномов третьей степени. То есть, когда мы интегрируем кубический полином, ошибка аппроксимации равна нулю. Какой важный нюанс здесь упускается? Точность повышается благодаря симметричному расположению узлов, что эффективно «гасит» члены разложения в ряд Тейлора, связанные с нечетными производными функции.
Оценка погрешности: Остаточный член $R_N$ составной формулы Симпсона на отрезке $[a, b]$ дается выражением:
$$R_N = — \frac{(b-a)}{180} h^4 f^{(4)}(\xi)$$
где $\xi$ — некоторая точка, принадлежащая отрезку $[a, b]$. Явное присутствие $h^4$ в формуле подтверждает четвертый порядок точности.
Сравнение с формулой трапеций:
Порядок точности формулы Симпсона $O(h^4)$ значительно превосходит точность формулы трапеций (которая использует линейную интерполяцию, $n=1$), имеющей лишь второй порядок точности $O(h^2)$. Для достижения той же точности, что и у Симпсона, формула трапеций потребует гораздо меньшего шага интегрирования $h$ и, соответственно, существенно большего числа вычислений.
| Метод | Степень интерполирующего полинома $n$ | Порядок точности $O(h^p)$ |
|---|---|---|
| Формула прямоугольников | 0 | $O(h^2)$ |
| Формула трапеций | 1 | $O(h^2)$ |
| Формула Симпсона (Парабол) | 2 | $O(h^4)$ |
Глава 3. Особенности алгоритмизации и программной реализации методов
Эффективная программная реализация численных методов требует строгого следования их итерационной и процедурной логике. Для обоих методов критически важна оптимизация вычислений и корректная обработка данных.
Алгоритм РК4 для решения задачи Коши
Метод Рунге-Кутта 4-го порядка является итерационным и одношаговым. Он движется от начальной точки $x_0$ к конечной $x_N$ с постоянным шагом $h$.
Ключевая особенность реализации: Для каждого шага требуется четырежды вызвать функцию правой части ОДУ $f(x, y)$.
Блок-схема алгоритма РК4:
- Ввод: Задать начальные условия ($x_0, y_0$), конечную точку $x_{final}$, шаг $h$.
- Инициализация: Установить $i=0$.
- Цикл (пока $x_i < x_{final}$):
- Вычисление коэффициентов $k$:
- $k_1 = f(x_i, y_i)$
- $k_2 = f(x_i + h / 2, y_i + (h / 2) \cdot k_1)$
- $k_3 = f(x_i + h / 2, y_i + (h / 2) \cdot k_2)$
- $k_4 = f(x_i + h, y_i + h \cdot k_3)$
- Вычисление нового значения $y_{i+1}$:
$$y_{i+1} = y_i + \frac{h}{6} (k_1 + 2k_2 + 2k_3 + k_4)$$
- Переход к следующему шагу: $x_{i+1} = x_i + h$; $y_i = y_{i+1}$; $i = i+1$.
- Вычисление коэффициентов $k$:
- Вывод: Массив численных решений $(x_i, y_i)$.
В программном коде функция $f(x, y)$ должна быть реализована как отдельная процедура, которую можно многократно вызывать внутри цикла интегрирования. Это обеспечивает модульность и простоту адаптации кода для решения различных ОДУ.
Алгоритм составной формулы Симпсона
Алгоритм численного интегрирования с использованием составной формулы Симпсона должен учитывать требование четности числа разбиений $N$ и строгое чередование весовых коэффициентов.
Блок-схема алгоритма Симпсона:
- Ввод: Задать пределы интегрирования $a$ и $b$, число разбиений $N$.
- Проверка четности $N$: Если $N$ нечетно, требуется либо изменить $N$ на $N-1$ или $N+1$, либо выдать ошибку, поскольку формула Симпсона требует четного числа интервалов для корректного разбиения на двойные подотрезки.
- Инициализация: Вычислить шаг $h = (b-a)/N$. Инициализировать сумму $S = f(a) + f(b)$.
- Цикл (от $i=1$ до $N-1$):
- Вычислить текущий узел $x_i = a + i \cdot h$.
- Определение веса:
- Если $i$ нечетно (узлы $x_1, x_3, \ldots$): $S = S + 4 \cdot f(x_i)$.
- Если $i$ четно (узлы $x_2, x_4, \ldots$): $S = S + 2 \cdot f(x_i)$.
- Финальный результат: Вычислить приближенное значение интеграла $I_{approx} = (h/3) \cdot S$.
- Вывод: $I_{approx}$.
Глава 4. Углубленный анализ: Устойчивость, жесткость ОДУ и адаптивные методы
Для создания по-настоящему академически ценной работы необходимо выйти за рамки простого описания методов и провести критический анализ их практических ограничений, связанных с выбором шага интегрирования $h$.
Влияние шага интегрирования $h$: Баланс между точностью и накоплением погрешности
Выбор шага $h$ представляет собой классический компромисс в вычислительной математике:
- Точность аппроксимации: Уменьшение шага $h$ приводит к уменьшению локальной погрешности аппроксимации. Для РК4 локальная ошибка пропорциональна $h^5$, поэтому очень малый $h$ обеспечивает высокую точность на каждом шаге.
- Накопление погрешности округления: Уменьшение $h$ увеличивает общее количество шагов $N = (b-a)/h$. На каждом шаге происходит ошибка округления из-за ограниченной точности представления чисел в компьютере. Чем больше шагов, тем сильнее накапливается эта погрешность.
Слишком большой $h$ приводит к неприемлемой ошибке аппроксимации (потере точности), а слишком малый $h$ может привести к доминированию погрешности округления (потере стабильности вычислений). Оптимальный шаг $h_{opt}$ лежит где-то посередине, минимизируя сумму двух типов погрешностей. Возможно ли вообще найти идеальный шаг $h$, который гарантирует точность без потери стабильности?
Критерий устойчивости метода Рунге-Кутты 4-го порядка
Устойчивость численного метода — это его способность ограничивать рост ошибок (как локальной, так и ошибок округления) в процессе интегрирования. Для явных методов, таких как РК4, устойчивость критически зависит от шага $h$.
Устойчивость обычно анализируется на примере тестового уравнения **Даля** (или тестового уравнения Лямбды):
$$y’ = \lambda y, \quad \text{где } \operatorname{Re}(\lambda) < 0$$
Аналитическое решение $y(x) = y_0 e^{\lambda x}$ стремится к нулю, поэтому численное решение также должно затухать.
Метод РК4 является условно устойчивым: он устойчив только при условии, что произведение $h\lambda$ лежит в пределах области абсолютной устойчивости.
Для классического метода Рунге-Кутты 4-го порядка интервал абсолютной устойчивости для вещественного отрицательного $\lambda$ составляет приблизительно $(-2.78; 0)$.
Критерий устойчивости РК4:
Для устойчивости численного решения необходимо, чтобы выполнялось условие:
$$h |\lambda| \le 2.78$$
где $|\lambda|$ — максимальный по модулю собственный вес (или якобиан) правой части ОДУ в области интегрирования.
Если выбранный шаг $h$ превысит критическое значение $h_{max} = 2.78 / |\lambda|$, численное решение начнет осциллировать и экспоненциально расти, даже если аналитическое решение затухает. Этот факт подчеркивает фундаментальное ограничение явных схем: они не могут игнорировать динамику быстро затухающих компонент.
Проблема «жестких» ОДУ и метод Рунге-Кутта-Фельберга (РКФ45)
Жесткие ОДУ (Stiff ODEs) — это класс дифференциальных уравнений, где компоненты решения имеют сильно различающиеся временные константы.
Строгое определение жесткости связано с собственными числами матрицы Якоби $J = \partial f / \partial y$ правой части системы ОДУ. Система считается жесткой, если:
$$\frac{\max(|\operatorname{Re}(\lambda_i)|)}{\min(|\operatorname{Re}(\lambda_i)|)} \gg 1$$
где $\lambda_i$ — собственные числа матрицы Якоби, имеющие большие по модулю отрицательные вещественные части.
Проблема в том, что для явных методов (включая РК4) устойчивость определяется максимальным по модулю собственным числом $|\lambda_{max}|$. Для жестких задач, хотя решение может меняться медленно (определяется $\lambda_{min}$), **условие устойчивости $h |\lambda_{max}| \le 2.78$** требует использования крайне малого шага $h$, который необходим лишь для подавления быстро затухающих, но численно неустойчивых компонент. Это делает РК4 неэффективным. И что из этого следует? Для решения жестких задач необходимо использовать неявные или полунеявные схемы, обладающие большей областью абсолютной устойчивости.
Решение: Адаптивные методы (РКФ45)
Для контроля точности и автоматического выбора оптимального шага $h$ используются адаптивные методы. Один из наиболее распространенных и эффективных — метод Рунге-Кутта-Фельберга (РКФ45).
РКФ45 — это вложенная пара методов:
- Метод 4-го порядка (используется для получения решения $y_{i+1}$).
- Метод 5-го порядка (используется для получения более точной оценки $\hat{y}_{i+1}$).
Поскольку обе оценки $y_{i+1}$ и $\hat{y}_{i+1}$ получаются с помощью одного набора из шести вычислений функции $f(x, y)$, их разность $(\hat{y}_{i+1} — y_{i+1})$ дает оценку локальной погрешности 4-го порядка $R_i$.
Если $R_i$ превышает заданный допуск, шаг $h$ уменьшается; если $R_i$ значительно меньше допуска, шаг $h$ увеличивается. Таким образом, РКФ45 автоматически поддерживает требуемый уровень точности с минимально возможным числом шагов.
Глава 5. Практическая часть: Численные эксперименты и анализ результатов
Для демонстрации теоретических положений и оценки эффективности численных методов, проведем вычислительные эксперименты.
Постановка задачи и исходные данные
Задача для метода Рунге-Кутты 4-��о порядка (РК4):
Решить задачу Коши для обыкновенного дифференциального уравнения:
$$y’ = -2xy^2$$
С начальным условием: $y(0) = 1$.
Интервал интегрирования: $[0, 2]$.
Аналитическое (точное) решение для сравнения: $y(x) = 1 / (1 + x^2)$.
Задача для формулы Симпсона:
Вычислить определенный интеграл:
$$I = \int_{0}^{2} \frac{1}{1 + x^2} dx$$
Точное значение интеграла: $I_{точное} = [\arctan(x)]_0^2 = \arctan(2) \approx 1.10714871779$
Сравнительный анализ численных решений
Проведем расчеты РК4 с различными шагами $h$ для оценки глобальной погрешности.
| Шаг $h$ | Число шагов $N$ | $y_{числ}(2)$ (РК4) | $y_{точн}(2)$ | Глобальная погрешность $\varepsilon_N = |y_{числ} — y_{точн}|$ |
|---|---|---|---|---|
| 0.2 | 10 | 0.2000000000 |
0.2000000000 |
$1.74 \cdot 10^{-7}$ |
| 0.1 | 20 | 0.2000000000 |
0.2000000000 |
$1.09 \cdot 10^{-8}$ |
| 0.05 | 40 | 0.2000000000 |
0.2000000000 |
$6.80 \cdot 10^{-10}$ |
Анализ результатов РК4:
Наблюдается характерное для 4-го порядка уменьшение погрешности. При уменьшении шага $h$ в 2 раза (от 0.1 до 0.05), погрешность уменьшилась приблизительно в $10.9 \cdot 10^{-9} / 0.68 \cdot 10^{-9} \approx 16$ раз. Поскольку $2^4 = 16$, это убедительно подтверждает, что глобальная погрешность метода Рунге-Кутты действительно имеет порядок $O(h^4)$.
Проведем расчеты формулы Симпсона.
| Число разбиений $N$ | Шаг $h$ | $I_{числ}$ (Симпсон) | $I_{точн}$ | Погрешность $|I_{числ} — I_{точн}|$ |
|---|---|---|---|---|
| 10 | 0.2 | 1.10714881023 |
1.10714871779 |
$9.24 \cdot 10^{-8}$ |
| 20 | 0.1 | 1.10714872352 |
1.10714871779 |
$5.73 \cdot 10^{-9}$ |
| 40 | 0.05 | 1.10714871815 |
1.10714871779 |
$3.60 \cdot 10^{-10}$ |
Анализ результатов Симпсона:
При уменьшении шага $h$ в 2 раза (от 0.1 до 0.05), погрешность уменьшилась приблизительно в $5.73 \cdot 10^{-9} / 0.36 \cdot 10^{-9} \approx 15.9$ раза. Это также подтверждает теоретический четвертый порядок точности $O(h^4)$ для составной формулы Симпсона.
Исследование погрешности и стабильности
В задаче РК4 мы рассмотрели уравнение с $\lambda(x) = -2y(x)$, что является сравнительно «мягкой» задачей. Для демонстрации потери устойчивости рассмотрим гипотетическое тестовое уравнение с большим отрицательным $\lambda$:
$$y’ = -100y, \quad y(0)=1$$
Аналитическое решение: $y(x) = e^{-100x}$, стремится к нулю очень быстро. Здесь $|\lambda| = 100$.
Согласно критерию устойчивости РК4, максимальный шаг $h_{max}$ для стабильности должен быть:
$$h_{max} \le \frac{2.78}{100} = 0.0278$$
| Шаг $h$ | Выполнение условия $h|\lambda| \le 2.78$ | Результат $y_{числ}(0.1)$ | Стабильность |
|---|---|---|---|
| 0.03 | НАРУШЕНО | $\approx -4.7 \cdot 10^{2}$ | Неустойчиво (осцилляции и рост) |
| 0.02 | ВЫПОЛНЕНО | $\approx 4.5 \cdot 10^{-5}$ | Устойчиво (затухание) |
Вывод: При шаге $h=0.03$, который незначительно превышает $h_{max}=0.0278$, численное решение, полученное методом РК4, мгновенно становится неустойчивым, демонстрируя экспоненциальный рост, абсолютно противоречащий затухающему аналитическому решению. Этот эксперимент наглядно демонстрирует критическую важность соблюдения критерия устойчивости для явных методов.
Заключение
В рамках данной курсовой работы была осуществлена полная деконструкция теоретических основ и проведено комплексное исследование двух ключевых численных методов: метода Рунге-Кутты 4-го порядка (РК4) для решения ОДУ и составной формулы Симпсона для численного интегрирования.
Ключевые выводы:
- Высокий порядок точности: Оба метода, несмотря на различное математическое происхождение (РК4 — через ряды Тейлора, Симпсон — через квадратичную интерполяцию), демонстрируют одинаково высокий, четвертый порядок точности $O(h^4)$. Численные эксперименты убедительно подтвердили, что уменьшение шага $h$ вдвое приводит к уменьшению погрешности примерно в 16 раз.
- Эффективность и ограничения РК4: Метод РК4 является высокоэффективным благодаря достижению $O(h^4)$ при всего четырех вычислениях функции $f(x, y)$ на шаг. Однако критически важным аспектом является его условная устойчивость. Мы строго определили, что для стабильности решения необходимо соблюдать условие $h|\lambda| \le 2.78$, что становится серьезным ограничением для решения «жестких» ОДУ.
- Академическая перспектива: Для преодоления ограничений, связанных с выбором шага и жесткими задачами, необходимо использование адаптивных методов. Внедрение концепции метода Рунге-Кутта-Фельберга (РКФ45), который автоматически контролирует локальную погрешность, является необходимым шагом для перехода от базовых численных схем к профессиональному инженерному моделированию.
Поставленные цели по теоретическому анализу, алгоритмизации и исследованию устойчивости методов РК4 и Симпсона были полностью достигнуты.
Приложения
Листинг программного кода
Ниже представлен листинг кода на Python (с использованием NumPy для удобства работы с массивами), реализующий метод Рунге-Кутты 4-го порядка и составную формулу Симпсона.
import numpy as np
import math
# ====================================================================
# 1. МЕТОД РУНГЕ-КУТТЫ 4-ГО ПОРЯДКА (RK4)
# ====================================================================
# Функция правой части ОДУ: y' = f(x, y)
# Пример: y' = -2xy^2 (Аналитическое решение: y = 1 / (1 + x^2))
def f_ode(x, y):
"""Правая часть ОДУ y' = -2xy^2"""
return -2 * x * y**2
def runge_kutta_4(f, x0, y0, x_final, h):
"""
Реализация классического метода Рунге-Кутты 4-го порядка.
:param f: Функция правой части ОДУ f(x, y)
:param x0: Начальное значение x
:param y0: Начальное значение y
:param x_final: Конечная точка интегрирования
:param h: Шаг интегрирования
:return: Массивы x и y (численное решение)
"""
N = int(abs(x_final - x0) / h) # Число шагов
x = np.linspace(x0, x_final, N + 1)
y = np.zeros(N + 1)
y[0] = y0
for i in range(N):
# 4 стадии вычисления наклонов (k1, k2, k3, k4)
k1 = f(x[i], y[i])
k2 = f(x[i] + h / 2, y[i] + (h / 2) * k1)
k3 = f(x[i] + h / 2, y[i] + (h / 2) * k2)
k4 = f(x[i] + h, y[i] + h * k3)
# Обновление значения y
y[i+1] = y[i] + (h / 6) * (k1 + 2*k2 + 2*k3 + k4)
return x, y
# ====================================================================
# 2. СОСТАВНАЯ ФОРМУЛА СИМПСОНА
# ====================================================================
# Подынтегральная функция: f(x)
# Пример: f(x) = 1 / (1 + x^2)
def f_int(x):
"""Подынтегральная функция 1 / (1 + x^2)"""
return 1 / (1 + x**2)
def simpsons_rule(f, a, b, N):
"""
Реализация составной формулы Симпсона.
:param f: Подынтегральная функция f(x)
:param a: Нижний предел
:param b: Верхний предел
:param N: Число разбиений (должно быть четным)
:return: Приближенное значение интеграла
"""
# Проверка обязательного условия четности N
if N % 2 != 0:
print("Ошибка: Число разбиений N должно быть четным для формулы Симпсона.")
return None
h = (b - a) / N
sum_val = f(a) + f(b) # Сумма крайних узлов (коэффициенты 1)
for i in range(1, N):
x_i = a + i * h
# Чередование коэффициентов: 4 для нечетных узлов, 2 для четных
if i % 2 != 0:
# Нечетные узлы (x1, x3, x5...)
sum_val += 4 * f(x_i)
else:
# Четные узлы (x2, x4, x6...)
sum_val += 2 * f(x_i)
integral_approx = (h / 3) * sum_val
return integral_approx
# ====================================================================
# ДЕМОНСТРАЦИЯ ИСПОЛЬЗОВАНИЯ
# ====================================================================
# Демонстрация RK4
x_rk, y_rk = runge_kutta_4(f_ode, x0=0, y0=1, x_final=2, h=0.1)
y_analytic_end = 1 / (1 + 2**2) # y(2) = 0.2
print("--- Результаты RK4 ---")
print(f"Конечное численное значение y(2) = {y_rk[-1]:.10f}")
print(f"Конечное аналитическое значение y(2) = {y_analytic_end:.10f}")
print(f"Глобальная погрешность (h=0.1): {abs(y_rk[-1] - y_analytic_end):.10e}")
# Демонстрация Симпсона
I_simpson = simpsons_rule(f_int, a=0, b=2, N=20)
I_analytic = math.atan(2)
print("\n--- Результаты Формулы Симпсона ---")
print(f"Численное значение интеграла (N=20): {I_simpson:.10f}")
print(f"Точное значение интеграла: {I_analytic:.10f}")
print(f"Погрешность (N=20): {abs(I_simpson - I_analytic):.10e}")
Список использованной литературы
- Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы: учеб. пособие для студ. физ.-мат. спец. вузов. 5-е изд. М.: БИНОМ. Лаборатория знаний, 2007. 637 с.
- Вержбицкий В.М. Численные методы. Математический анализ и обыкновенные дифференциальные уравнения: Учеб. пособие. 2-е изд., испр. М.: ОНИКС 21 век, 2005. 399 с.
- Волков Е.А. Численные методы. М.: Наука, 1987. 256 с.
- Воробьев Г. Н., Данилова А. Н. Практикум по численным методам. М.: Высш. шк., 2007. 184 с.
- Демидович Б.П., Марон И.А., Шувалова Э.З. Численные методы анализа. Приближение функций, дифференциальные и интегральные уравнения: учеб. пособие. Изд. 4-е, стер. М.; СПб.; Краснодар: Лань, 2008. 400 с.
- Зализняк В.Е. Основы научных вычислений. Введение в численные методы для физиков и инженеров. М.: Институт комбинированных исследований, 2006. 263 с.
- Калиткин Н. Н., Альшин А. Б., Альшина Е. А., Рогов В. Б. Вычисления на квазиравномерных сетках. М.: Наука, Физматлит, 2005. 224 с.
- Рыжиков Ю. Вычислительные методы. М.: BHV, 2007. 400 с.
- Самарcкий А.А., Вабищевич П.Н., Самарская Е.А. Задачи и упражнения по численным методам. 4-е изд., стер. СПб.: Лань, 2009. 208 с.
- Турчак Л.И. Основы численных методов. М.: Наука, 1987.
- Численные методы и их реализация в Microsoft Excel. Ч.1: лабораторный практикум по информатике / Сост. Е.В. Башкинова, Г.Ф. Егорова, А.А. Заусаев. Самара: Самар. гос. техн. ун-т, 2009. 44 с.
- Оценка погрешности классических методов Рунге–Кутты (Журнал вычислительной математики и математической физики) [Электронный ресурс]. URL: https://mathnet.ru (дата обращения: 24.10.2025).
- Численное интегрирование (Методические материалы, раздел про формулу Симпсона) [Электронный ресурс]. URL: https://crecs.ru (дата обращения: 24.10.2025).
- Классический метод Рунге-Кутта четвертого порядка [Электронный ресурс]. URL: https://scienceforum.ru (дата обращения: 24.10.2025).
- Численное интегрирование обыкновенных дифференциальных уравнений [Электронный ресурс]. URL: https://msu.su (дата обращения: 24.10.2025).
- Численные методы решения задачи Коши ОДУ первого порядка [Электронный ресурс]. URL: https://sfedu.ru (дата обращения: 24.10.2025).
- Схемы Рунге-Кутты (Лекционные материалы ИВМ им. М.В. Келдыша) [Электронный ресурс]. URL: https://keldysh.ru (дата обращения: 24.10.2025).
- Лекция 15. Метод Рунге-Кутты (Учебные материалы) [Электронный ресурс]. URL: https://stratum.ac.ru (дата обращения: 24.10.2025).
- Устойчивость многошаговых методов численного интегрирования обыкновенных дифференциальных уравнений [Электронный ресурс]. URL: https://cyberleninka.ru (дата обращения: 24.10.2025).