Рефетека.ру / Математика

Курсовая работа: Решение дифференциального уравнения первого порядка

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

СУМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

КАФЕДРА ИНФОРМАТИКИ


К У Р С О В А Я Р А Б О Т А

ПО ЧИСЛЕННЫМ МЕТОДАМ

на тему:

РЕШЕНИЕ ДИФФЕРЕНЦИАЛЬНОГО УРАВНЕНИЯ

ПЕРВОГО ПОРЯДКА


Сумы, 2005 г.

1. Метод Адамса


Этот метод численного интегрирования разработан Адамсом в 1855г. В последствии этот метод был забыт и вновь открыт в начале века. Популяризация метода Адамса и дальнейшее его усовершенствование связаны с именем А.Н. Крылова.

Изложим метод Адамса применительно к уравнению первого порядка


Решение дифференциального уравнения первого порядка (1)


с начальным условием


Решение дифференциального уравнения первого порядка (2).


Пусть xРешение дифференциального уравнения первого порядка(i=0,1,2,….) – система равностоящих значений с шагом h и Решение дифференциального уравнения первого порядка=Решение дифференциального уравнения первого порядка. Очевидно, имеем


Решение дифференциального уравнения первого порядка (3).


В силу второй интерполяционной формулы Ньютона с точностью до разностей четвертого порядка получаем


Решение дифференциального уравнения первого порядка (4)


где Решение дифференциального уравнения первого порядка.

Подставляя выражение (4) в формулу (3) и учитывая, что dx=hdq, будем иметь

Решение дифференциального уравнения первого порядка


Отсюда получаем экстраполяционную формулу Адамса


Решение дифференциального уравнения первого порядка. (5)


Для начала процесса нужны четыре начальных значения Решение дифференциального уравнения первого порядка, так называемый начальный отрезок, который определяют исходя из начального условия (2), каким-нибудь численным методом. Можно, например, использовать метод Рунге-Кутта. Зная эти значения, из уравнения (1) можно найти значения производныхРешение дифференциального уравнения первого порядка и составить таблицу разностей.


Решение дифференциального уравнения первого порядкаРешение дифференциального уравнения первого порядкаРешение дифференциального уравнения первого порядкаРешение дифференциального уравнения первого порядкаРешение дифференциального уравнения первого порядкаРешение дифференциального уравнения первого порядка (6)


Дальнейшие значения Решение дифференциального уравнения первого порядка (i=4,5,…) искомого решения можно шаг за шагом вычислять по формуле Адамса, пополняя по мере необходимости таблицу разностей (6).

Для контроля рекомендуется вычислив первое приближение для Решение дифференциального уравнения первого порядка по формуле


Решение дифференциального уравнения первого порядка


определить Решение дифференциального уравнения первого порядка, подсчитать конечные разности.


Решение дифференциального уравнения первого порядка, Решение дифференциального уравнения первого порядка, Решение дифференциального уравнения первого порядка (7)


и затем найти второе приближение по более точной формуле

Решение дифференциального уравнения первого порядка (8)


Если Решение дифференциального уравнения первого порядка и Решение дифференциального уравнения первого порядка отличаются лишь на несколько единиц последнего сохраняемого десятичного разряда, то можно положить Решение дифференциального уравнения первого порядка , а затем, найдя Решение дифференциального уравнения первого порядка, перевычислив конечные разности (7). После этого, строго говоря, следует снова найтиРешение дифференциального уравнения первого порядка по формуле(8). Поэтому шаг h должен быть таким , чтобы этот пересчёт был излишним.

На практике шаг h выбирают столь малым, чтобы можно было пренебречь членом Решение дифференциального уравнения первого порядка в формуле (8).

Если же расхождение величин Решение дифференциального уравнения первого порядкаи Решение дифференциального уравнения первого порядка значительно, то следует уменьшить шаг h.

Обычно шаг h уменьшают в два раза. Покажем, как в этом случае, имея до некоторого значения i таблицу величин Решение дифференциального уравнения первого порядкаиРешение дифференциального уравнения первого порядка, Решение дифференциального уравнения первого порядка(jРешение дифференциального уравнения первого порядкаi) c шагом Решение дифференциального уравнения первого порядка, можно просто построить таблицу величин Решение дифференциального уравнения первого порядка(k=0,1,2…) с шагом Решение дифференциального уравнения первого порядка. Для кратности введения сокращенные обозначения:


Решение дифференциального уравнения первого порядка(k=0,1,2…).


На основе формулы (4) будем иметь


Решение дифференциального уравнения первого порядка, (9)


где Решение дифференциального уравнения первого порядка. Отсюда, полагая j=i-2 и q=1/2 и учитывая, что Решение дифференциального уравнения первого порядка, находим

Решение дифференциального уравнения первого порядка. (10)


Аналогично при j=i-1, q=1/2 из формулы (9) получаем, что аргументу Решение дифференциального уравнения первого порядка соответствует значение


Решение дифференциального уравнения первого порядка. (11)


Что касается значений Решение дифференциального уравнения первого порядка и Решение дифференциального уравнения первого порядка , то они имеются в старой таблице. После этого составляем начальный отрезок для новой таблицы.Решение дифференциального уравнения первого порядка и находим конечные разности:


Решение дифференциального уравнения первого порядка (k=-3,-2,-1),

Решение дифференциального уравнения первого порядка (k=-3,-2),

Решение дифференциального уравнения первого порядка (k=-3,).


Дальше таблица продолжается обычным путём, посредством соответствующей модификации формулы (5):


Решение дифференциального уравнения первого порядка,

Решение дифференциального уравнения первого порядка (j=0,1,2,…).


Для работы на электронных счётчиках машинах формулу Адамса (5) выгодно применять в раскрытом виде. Учитывая, что


Решение дифференциального уравнения первого порядка

Решение дифференциального уравнения первого порядка

Решение дифференциального уравнения первого порядка


после приведения подобных членов имеем


Решение дифференциального уравнения первого порядка,


причём Решение дифференциального уравнения первого порядка.


2. Методы, основанные на применении производных высших порядков


До сих пор для численного интегрирования дифференциального уравнения первого порядка


Решение дифференциального уравнения первого порядка (1)


с начальным условием


Решение дифференциального уравнения первого порядка(2)


мы применяли формулы, в которых явно используется лишь первая производная Решение дифференциального уравнения первого порядка искомого решения.

Однако если использовать формулы, явно содержащие производные высших порядков от искомого решения, то можно указать методы, дающие более точный результат на данном промежутке без увеличения числа шагов.

Выведем соответствующие формулы, предполагая, что правая часть уравнения (1) дифференцируема достаточное число раз.

Пусть Решение дифференциального уравнения первого порядка- значения искомого решения y=y(x) и, соответственно, значения его производных первого и второго порядков в точках Решение дифференциального уравнения первого порядка. Располагая величины


Решение дифференциального уравнения первого порядка


в ряды по степеням h, находим:


Решение дифференциального уравнения первого порядка

Решение дифференциального уравнения первого порядка

Решение дифференциального уравнения первого порядка


Из полученных формул исключим члены, содержащие Решение дифференциального уравнения первого порядкаРешение дифференциального уравнения первого порядка и Решение дифференциального уравнения первого порядка.

Для этого вторую формулу умножим на Решение дифференциального уравнения первого порядка, а третью – на Решение дифференциального уравнения первого порядка и сложим с первой. Будем иметь:


Решение дифференциального уравнения первого порядка


Таким образом, с точностью до Решение дифференциального уравнения первого порядка имеем приближённую формулу


Решение дифференциального уравнения первого порядка (3)


Можно показать, что остаточный член формулы (3) равен Решение дифференциального уравнения первого порядка где Решение дифференциального уравнения первого порядка Аналогично имеем:

Решение дифференциального уравнения первого порядкаи

Решение дифференциального уравнения первого порядка


Отсюда


Решение дифференциального уравнения первого порядка


С другой стороны


Решение дифференциального уравнения первого порядка


Поэтому


Решение дифференциального уравнения первого порядка

Таким образом, с точностью до h5 Решение дифференциального уравнения первого порядкаимеем приближённую формулу


Решение дифференциального уравнения первого порядка (4)


Можно доказать, что остаточный член формулы (4) есть


Решение дифференциального уравнения первого порядка


где Решение дифференциального уравнения первого порядка

К формулам (3) и (4) присоединим выражения для производных:


Решение дифференциального уравнения первого порядка (5)

Решение дифференциального уравнения первого порядка (6)


Процесс численного дифференцирования уравнения (1) при наличии начального условия (2), использющий формулы (3) и (4), происходит следующим образом. Каким-либо методом вычисляем три начальные строки (начальная таблица):


Решение дифференциального уравнения первого порядка


Из формулы (4) при i=2 получаем первое приближение для Решение дифференциального уравнения первого порядка:


Решение дифференциального уравнения первого порядка (7)


и, пользуясь формулами (5) и (6), находим для соответствующих производных Решение дифференциального уравнения первого порядка и Решение дифференциального уравнения первого порядка их первые приближения:


Решение дифференциального уравнения первого порядка и Решение дифференциального уравнения первого порядка.


Второе приближение для Решение дифференциального уравнения первого порядка определяем при i=2 из формулы (3):

Решение дифференциального уравнения первого порядка (8)


После этого исправляем значения производных Решение дифференциального уравнения первого порядка и Решение дифференциального уравнения первого порядка, подсчитывая их вторые приближения:


Решение дифференциального уравнения первого порядка и Решение дифференциального уравнения первого порядка.


Для контроля ещё раз вычисляем по формуле (3) третье приближение Решение дифференциального уравнения первого порядка значения Решение дифференциального уравнения первого порядка, используя найденные значения Решение дифференциального уравнения первого порядка и Решение дифференциального уравнения первого порядка.

Если шаг h выбран подходящим, то перещёт не даёт нового результата, и в этом случае можно положить Решение дифференциального уравнения первого порядка

В противном случае следует уменьшить шаг. Аналогично находятся дальнейшие значения Решение дифференциального уравнения первого порядка при i>3.

Для получения начальных значений Решение дифференциального уравнения первого порядка и Решение дифференциального уравнения первого порядка обычно используют метод последовательных приближений или метод Рунге-Кутта, после чего нужные производные Решение дифференциального уравнения первого порядка и Решение дифференциального уравнения первого порядка (i=0,1,2) определяются по формулам (5) и (6).

Можна также применить следующий приём: сначала, используя данное начальное значение Решение дифференциального уравнения первого порядка, непосредственно вычисляем


Решение дифференциального уравнения первого порядка и Решение дифференциального уравнения первого порядка.


Тем самым будет заполнена первая строка начальной таблицы .

Далее на основании формулы Тейлера приближённо получаем


Решение дифференциального уравнения первого порядка


и, следовательно, можно будит найти


Решение дифференциального уравнения первого порядка и Решение дифференциального уравнения первого порядка.


Пользуясь этими данными, уточняем значение Решение дифференциального уравнения первого порядка по формуле (3):


Решение дифференциального уравнения первого порядка


и затем перевычисляем значения Решение дифференциального уравнения первого порядка и Решение дифференциального уравнения первого порядка. Тем самым заполняем вторую строку начальной таблицы. Аналогично, исходя из второй строки, находим элементы Решение дифференциального уравнения первого порядка, Решение дифференциального уравнения первого порядка и Решение дифференциального уравнения первого порядка последней, третей строки начальной таблицы.

Отметим, что если пересчёты элементов строк дают значительные расхождения, то этот приём не является надёжным. В таком случае следует или уменьшить шаг h вычислений, или же обратиться к более точным методам.

В заключение приведём формулы, обеспечивающие более высокую степень точности, но требующие вычисления, кроме второй, ещё и третьей производной искомого решения. А именно, используя Формулу Тейлера и употребляя приём, аналогичный указанному выше, получаем формулы


Решение дифференциального уравнения первого порядка, (11)


где


Решение дифференциального уравнения первого порядка, и

Решение дифференциального уравнения первого порядка, (12)

где Решение дифференциального уравнения первого порядка.


Формула (11) употребляется для нахождения первого приближения Решение дифференциального уравнения первого порядка; формула (12) даёт уточнённое значение Решение дифференциального уравнения первого порядка. Само собой разумеется, что к последним двум формулам целесообразно прибегать тогда, когда форма дифференциального уравнения позволяет сравнительно просто находить вторую и третью производные от искомой функции y.


Приложение


program proizw_w_p;

uses crt;

const epsilon=0.05;

type mas=array[1..100] of real;

nabl=array [1..3] of real;

var i:integer;

x,y,y1,y2:mas;

nabl1,nabl2,nabl3:nabl;

a,h:real;

n:integer;

function f(x, y:real):real;

begin

f:=sqr(x)-sqr(y);

end;


procedure metod(xi, yi, step: real; var rez:real);

var k1, k2, k3, k4:real;

begin

k1:=F(xi,yi);

k2:=F(xi+step/2,yi+k1*step/2);

k3:=F(xi+step/2,yi+k2*step/2);

k4:=F(xi+step,yi+k3*step);

rez:=yi+(step/6)*(k1+2*k2+2*k3+k4)

end;


procedure osn_metod(xi, yi, step:real;var yh22:real;var h:real);

var yh,yh2:real;

begin

repeat

metod(xi, yi,step, yh);

metod(xi, yi, step/2, yh2);

metod(xi, yh2, step/2, yh22);

if abs(yh-yh22)/15>epsilon then step:=h/2;

until abs(yh-yh22)/15<epsilon;

end;


procedure iteraziya(j:integer;xi,h:real);

begin

{первое приближение}

nabl1[1]:=y[j-3]+3*(y[j-1]-y[j-2])+sqr(h)*y2[j-1]-y2[j-2];

{производная первого приближения}

nabl1[2]:=sqr(xi)-sqr(nabl1[1]);

{вторая производная первого приближение}

nabl1[3]:=2*(xi-nabl1[1]*nabl1[2]);

{второе приближение}

nabl2[1]:=y[j-1]+(h/2)*(y1[j-1]+nabl1[2])+((sqr(h))/12)*(nabl1[3]-y2[j-1]);

{производная второго приближения}

nabl2[2]:=sqr(xi)-sqr(nabl2[1]);

{вторая производная второго приближения}

nabl2[3]:=2*(xi-nabl2[1]*nabl2[2]);

{третье приближение}

nabl3[1]:=y[j-1]+(h/2)*(y1[j-1]+nabl2[2])-(sqr(h)/12)*(nabl2[3]-y2[j-1]);

{производная третьего приближения}

nabl3[2]:=sqr(xi)-sqr(nabl3[1]);

{вторая производная третьего приближения}

nabl3[3]:=2*(xi-nabl2[1]*nabl2[2]);

end;


procedure solution(h:real);

begin

{==============Метод Рунге-Кута =================================}

a:=0;

i:=1;

y[1]:=1;

while i<4 do

begin

x[i+1]:=a+i*h;

osn_metod(x[i], y[i], h,y[i+1], h);

inc(i);

end;

{======Окончание метода Рунге-Кута =================================}


{============найдем первые и вторые производные===============}

for i:=1 to 3 do

begin

y1[i]:=sqr(x[i])-sqr(y[i]);

y2[i]:=2*(x[i]-y[i]*y1[i]);

end;

{=================================================================}

for i:=4 to n do

begin

iteraziya(i,x[i],h);

if abs(nabl3[1]-nabl2[1])<epsilon

then

begin

y[i]:=nabl3[1];

y1[i]:=nabl3[2];

y2[i]:=nabl3[3];

end

else

begin

h:=h/2;

if keypressed then halt;

solution(h);

end;

end;


end;


BEGIN

{=====================init==========================================}

clrscr;

write('введите количество значений, которые необходимо вычислить n= ');

readln(n);

h:=0.1;

{==================end of init=========================================}

for i:=1 to n do

begin

x[i]:=(i-1)*h;

end;

solution(h);


for i:=1 to n do

begin

write('y[',i,']= ',y[i],' y"[',i,']= ',y1[i],' y""[',i,']= ',y2[i]);

writeln;

end;

writeln('');

writeln('');

write('Press <enter> to exit....');

readln;


END.

Похожие работы:

  1. • Билеты по математическому анализу
  2. • Анализ дифференциальных уравнений
  3. • Решение дифференциального уравнения с последующей ...
  4. • Дифференциальные уравнения I и II порядка
  5. • Решение дифференциальных уравнений
  6. • Экзаменационные билеты по математике
  7. • Теория вероятностей
  8. • Основные понятия математического анализа
  9. • Методические материалы по учебной дисциплине "Высшая ...
  10. • Решение обыкновенных дифференциальных уравнений
  11. • Решение систем линейных дифференциальных уравнений ...
  12. • Вычисление пределов функций, производных и ...
  13. • Решение дифференциальных уравнений 1 порядка методом Эйлера
  14. • Билеты по математике
  15. • Исследование функций и построение их графиков
  16. •  ... обучения во время изложения дифференциальных уравнений
  17. • РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ ...
  18. • Решение систем линейных дифференциальных уравнений ...
  19. • Междисциплинарный подход в преподавании математики
Рефетека ру refoteka@gmail.com