Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Chislennye_metody_obedin.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

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 – начальное условие.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]