Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Метод Эйлера. В основе метода Эйлера лежит идея графического построения решения дифференциального уравнения, этот метод называется также методом ломаных Эйлера.
В основе метода Эйлера лежит идея графического построения решения дифференциального уравнения, этот метод называется также методом ломаных Эйлера. Угловой коэффициент касательной к интегральной кривой в точке M0(x0, y0) равен . Найдем ординату y1 касательной, соответствующей абсциссе x1=x0+h. Уравнение касательной к кривой в точке M0 имеет вид или , откуда y1=y0+hf(x0, y0). Аналогично, угловой коэффициент касательной к интегральной кривой в точке M1(x1, y1) равен . Точку M2(x2, y2) получим соответственно x2=x1+h y2=y1+hf(x1, y1). Продолжая вычисления по данной схеме, получим формулы Эйлера для приближенного решения задачи Коши с начальными данными (x0, y0) на сетке отрезка [ a, b ] с шагом h: xi=xi-1+h yi=yi-1+hf(xi-1, yi-1). (4)
Погрешность метода Эйлера можно оценить неравенством , (5) которое можно представить в виде d=Ch, где . Таким образом, метод Эйлера имеет первый порядок точности. Практическую оценку погрешности решения, найденного на сетке с шагом h/2, в точке xi Î [ a, b ] производят с помощью приближенного равенства – правила Рунге: (6) где P – порядок точности численного метода. Таким образом, оценка полученного результата по правилу Рунге вынуждает проводить вычисления дважды: с шагом h и h/2, причем совпадение десятичных знаков в полученных двумя способами результатах дает основание считать их верными.
Программа решения дифференциального уравнения методом Эйлера program Eiler; var x, a, b, h, y: real; m, i: integer; function f(x, y: real): real; begin f: =cos(x); end; begin writeln('Введите значения концов отрезка [a, b]'); readln(a, b); writeln('Введите начальное значение y0=y(x0)'); readln(y); writeln('Введите число значений функции на промежутке [a, b]'); read(m); x: =a; h: =(b-a)/m; for i: =0 to m do begin writeln (x: 10: 3, y: 15: 4); y: =y+h*f(x, y); x: =x+h end; readln; end.
|