- •1. Приближенное решение нелинейных уравнений 5
- •Введение
- •1. Приближенное решение нелинейных уравнений
- •1.1. Графический способ отделения корней.
- •1.2. Аналитический способ отделения корней.
- •1.4.2. Блок-схема.
- •1.4.3. Программа.
- •1.3. Метод половинного деления.
- •1.3.1. Расчётная схема.
- •1.4. Метод хорд.
- •1.4.1. Расчетная схема метода.
- •1.5. Метод касательных.
- •1.5.1. Расчётная схема.
- •1.5.2. Блок-схема.
- •1.5.3. Программа.
- •1.6. Комбинированный метод.
- •1.6.1. Расчётная схема.
- •1.7. Метод итераций.
- •1.7.1. Расчётная схема.
- •1.7.2. Блок-схема.
- •1.7.3. Программа.
- •1.8. Дополнения к разделу.
- •1.8.1. Комментарии.
- •1.8.2. Алгоритмы и программы.
- •1.8.3. Пример работы программ.
- •2. Приближенное вычисление определенных интегралов.
- •2.1. Геометрическая интерпретация.
- •2.2. Метод прямоугольников.
- •2.2.1. Расчётная схема.
- •2.3. Метод трапеций.
- •2.3.1. Расчётная схема.
- •2.4. Метод Симпсона.
- •2.4.1. Расчётная схема.
- •2.5. Дополнения к разделу.
- •2.5.1. Комментарии.
- •2.5.2. Пример работы программ.
- •3. Решение систем линейных уравнений.
- •3.1. Метод простых итераций.
- •3.1.1. Расчётная схема.
- •3.1.2. Блок-схема.
- •3.1.3. Программа.
- •3.2. Метод Зейделя.
- •3.2.1. Расчётная схема.
- •3.2.2. Блок-схема.
- •3.2.3. Программа.
- •3.4. Метод Гаусса.
- •3.4.1. Расчётная схема.
- •3.4.2. Блок-схема.
- •3.4.3. Программа.
- •3.5. Дополнения к разделу.
- •3.5.1. Комментарии.
- •3.5.2. Алгоритмы и программы.
- •3.5.3. Пример работы программ.
- •4.3. Метод Рунге-Кутта (четвертого порядка).
- •4.3.1. Расчётная схема.
- •4.4. Дополнения к разделу.
- •4.4.1. Комментарии.
- •4.4.2. Пример работы программ.
- •5. Математическая обработка данных.
- •5.1. Интерполяция.
- •5.1.2. Квадратичная интерполяция.
- •5.1.2.1. Блок-схема.
- •5.1.2.2. Программа.
- •5.1.3. Интерполяция Лагранжа.
- •5.1.3.1. Расчётная схема.
- •5.2.1. Линейное приближение методом наименьших квадратов.
- •5.3. Дополнения к разделу.
- •5.3.1. Комментарии.
- •5.3.2. Алгоритмы и программы.
- •5.3.3. Пример работы программ.
- •6. Задания по численным методам.
4.3.1. Расчётная схема.
Этот метод получил
наиболее широкое распространение в
практических расчетах. Его погрешность
оценивается величиной
,
что дает возможность получить более
точные результаты, чем в методе Эйлера.
Не давая полного описания вывода формул,
приведем их в следующем виде:
Здесь символом
,
так же как и в описанном методе Эйлера,
обозначается правая часть решаемого
дифференциального уравнения,
и
-
приближенные значения интегральной
функции соответственно в точках
и
,
.
Замечание. Одним из недостатков метода является отсутствие простого способа оценки погрешности. Грубую оценку погрешности можно получить по формуле:
,
где
-
значение, вычисленное с шагом
,
- с шагом
.
Если полученные результаты удовлетворяют
допустимой погрешности, в дальнейших
расчетах шаг удваивают, иначе - уменьшают
его вдвое. Приведенный способ приводит
к необходимости дополнительных затрат
времени счета на ПК.
4.3.2. Блок-схема.
|
4.3.2. Программа. procedure kutt(x0,b,y0,n: real); var x,y,dy,k1,k2,k3,k4,x1,x2,y1,y2,y3: real; begin x:=x0; y:=y0; repeat writeln('X=',x,' ','Y=',y); k1:=n*f(x,y); x1:=x+n/2; y1:=y+k1/2; k2:=n*f(x1,y1); y2:=y+k2/2; k3:=n*f(x1,y2); y3:=y+k3; x2:=x+n; k4:=n*f(x2,y3); dy:=(k1+2*k2+2*k3+k4)/6; y:=y+dy; x:=x+n; until x>b; end;
|
4.4. Дополнения к разделу.
4.4.1. Комментарии.
В разделе,
представленном выше, описаны алгоритмы
и программы, которые работают на заранее
определенном отрезке
с заданным шагом
и начальными условиями
.
Точность этих методов базируется на
шаге интегрирования
,
а также типами данных. Для достижения
нужной точности (
)
можно воспользоваться методом Рунге-Кутта
более высокого порядка, чтобы уменьшить
ошибку.
4.4.2. Пример работы программ.
Все программы
данного раздела представлены в виде
процедур, для работы которых требуется
ввод линейного дифференциального
уравнений (в виде функции «f»),
отрезка интегрирования
,
шага
и начального условия
.
Пусть требуется
найти численное решение дифференциального
уравнения
методом Рунге-Кутта на отрезке
с шагом 0.1 и начальным условием
.
Тогда упрощенная программа будет
выглядеть следующим образом:
Код программы
program diffur;
{Уравнение}
function f(x,y: real): real;
begin
f:=3*x+0.1*y;
end;
{Процедура метода Рунге-Кутта}
Begin
{x0,b-отрезок интегрирования; n –шаг; y0 – начальное условие. Вывод решения: kutt(x0,b,y0,n);}
kutt(0,0.4,5,0.1);
readln;
end.
Вывод программы:
Стоит отметить, что решение обыкновенных дифференциальных уравнений другими методами будет проходить так же, только необходимо произвести замену нужной процедуры в программе. Любая процедура раздела вызывается с 4 параметрами: x0,b-отрезок интегрирования; n –шаг; y0 – начальное условие.
