Міністерство освіти України ДАЛПУ Кафедра автоматизації технологічних процесів і приладобудування
КУРСОВА РОБОТА
з курсу “Математичне моделювання на ЕОМ” на тему “Розв’язок диференціального рівняння виду апу(п)+ап-1у(п-1)+…+а1у1+а0у=кх при заданих початкових умовах з автоматичним вибором кроку методом Ейлера” Виконала студентка групи БА-4-97 Богданова Ольга Олександрівна Холоденко Вероніка Миколаївна Перевірила Заргун Валентина Василівна
1998
Блок-схема алгоритма
Блок-схема алгоритма начало у/=f(x,y) y(x0)=y0 x0, x0+a h, h/2 k:=0 xk+1/2:=xk+h/2 yk+1/2:=yk+f(xk, yk)h/2 ?k:= f(xk+1/2, yk+1/2) xk+1:=xk+h yk+1:=yk+?kh нет k:=n да
x0, y0, x1, y1… xn, yn конец
ПОСТАНОВКА ЗАДАЧИ И МЕТОД РЕШЕНИЯ Решить дифференциальное уравнение у/=f(x,y) численным методом - это значит для заданной последовательности аргументов х0, х1…, хn и числа у0, не определяя функцию у=F(x), найти такие значения у1, у2,…, уn, что уi=F(xi)(i=1,2,…, n) и F(x0)=y0. Таким образом, численные методы позволяют вместо нахождения функции У=F(x) получить таблицу значений этой функции для заданной последовательности аргументов. Величина h=xk-xk-1 называется шагом интегрирования. Метод Эйлера относиться к численным методам, дающим решение в виде таблицы приближенных значений искомой функции у(х). Он является сравнительно грубым и применяется в основном для ориентировочных расчетов. Однако идеи, положенные в основу метода Эйлера, являются исходными для ряда других методов. Рассмотрим дифференциальное уравнение первого порядка y/=f(x,y) (1) с начальным условием x=x0, y(x0)=y0 (2) Требуется найти решение уравнения (1) на отрезке [а,b]. Разобьем отрезок [a, b] на n равных частей и получим последовательность х0, х1, х2,…, хn, где xi=x0+ih (i=0,1,…, n), а h=(b-a)/n-шаг интегрирования. В методе Эйлера приближенные значения у(хi)(yi вычисляются последовательно по формулам уi+hf(xi, yi) (i=0,1,2…). При этом искомая интегральная кривая у=у(х), проходящая через точку М0(х0, у0), заменяется ломаной М0М1М2… с вершинами Мi(xi, yi) (i=0,1,2,…); каждое звено МiMi+1 этой ломаной, называемой ломаной Эйлера, имеет направление, совпадающее с направлением той интегральной кривой уравнения (1), которая проходит через точку Мi. Если правая часть уравнения (1) в некотором прямоугольнике R{|x-x0|(a, |y-y0|(b}удовлетворяет условиям: |f(x, y1)- f(x, y2)| ( N|y1-y2| (N=const), |df/dx|=|df/dx+f(df/dy)| ( M (M=const),
то имеет место следующая оценка погрешности: |y(xn)-yn| ( hM/2N[(1+hN)n-1], (3) где у(хn)-значение точного решения уравнения(1) при х=хn, а уn- приближенное значение, полученное на n-ом шаге. Формула (3) имеет в основном теоретическое применение. На практике иногда оказывается более удобным двойной просчет: сначала расчет ведется с шагом h, затем шаг дробят и повторный расчет ведется с шагом h/2. Погрешность более точного значения уn* оценивается формулой |yn-y(xn)|(|yn*-yn|. Метод Эйлера легко распространяется на системы дифференциальных уравнений и на дифференциальные уравнения высших порядков. Последние должны быть предварительно приведены к системе дифференциальных уравнений первого порядка. Модифицированный метод Эйлера более точен. Рассмотрим дифференциальное уравнение (1) y/=f(x,y) с начальным условием y(x0)=y0. Разобьем наш участок интегрирования на n равных частей. На малом участке [x0,x0+h] у интегральную кривую заменим прямой Nk/ y=y(x) линией. Получаем точку Мк(хк,ук).
Мк Мк/ yk+1 yk
хк хк1/2 xk+h=xk1 х
Через Мк проводим касательную: у=ук=f(xk,yk)(x-xk). Делим отрезок (хк,хк1) пополам: xNk/=xk+h/2=xk+1/2 yNk/=yk+f(xk,yk)h/2=yk+yk+1/2 Получаем точку Nk/. В этой точке строим следующую касательную: y(xk+1/2)=f(xk+1/2, yk+1/2)=?k Из точки Мк проводим прямую с угловым коэффициентом ?к и определяем точку пересечения этой прямой с прямой Хк1. Получаем точку Мк/. В качестве ук+1 принимаем ординату точки Мк/. Тогда: ук+1=ук+?кh xk+1=xk+h (4) ?k=f(xk+h/2, yk+f(xk,Yk)h/2) yk=yk-1+f(xk-1,yk-1)h (4)-рекурентные формулы метода Эйлера. Сначала вычисляют вспомогательные значения искомой функции ук+1/2 в точках хк+1/2, затем находят значение правой части уравнения (1) в средней точке y/k+1/2=f(xk+1/2, yk+1/2) и определяют ук+1. Для оценки погрешности в точке хк проводят вычисления ук с шагом h, затем с шагом 2h и берут 1/3 разницы этих значений: | ук*-у(хк)|=1/3(yk*-yk), где у(х)-точное решение дифференциального уравнения.
Таким образом, методом Эйлера можно решать уравнения любых порядков. Например, чтобы решить уравнение второго порядка y//=f(y/,y,x) c начальными условиями y/(x0)=y/0, y(x0)=y0, выполняется замена: y/=z z/=f(x,y,z) Тем самым преобразуются начальные условия: y(x0)=y0, z(x0)=z0, z0=y/0.
РЕШЕНИЕ КОНТРОЛЬНОГО ПРИМЕРА Приведем расчет дифференциального уравнения первого, второго и третьего порядка методом Эйлера 1. Пусть дано дифференциальное уравнение первого порядка: y/=2x-y Требуется найти решение на отрезке [0,1] c шагом h=(1-0)/5=0,2 Начальные условия: у0=1; Пользуясь рекурентными формулами (4), находим: 1). x1=0,2; х1/2=0,1; y(x1)=y(x0)+?0h; y(x1/2)=y(x0)+f(x0,y0)h/2; f(x0,y0)=2(0-1=-1 y(x1/2)=1-1(0,1=0,9 ?0=2(0,1-0,9=-0,7 y1=1-0,1(0,2=0,86 2). y(x2)=y(x1)+?1h; x2=0,2+0,2=0,4; x1+1/2=x1+h/2=0,2+0,1=0,3 y(x1+1/2)=y(x1)+f(x1,y(x1))h/2 f(x1,y1)=2(0,2-0,86=-0,46 y(x1+1/2)=0,86-0,46(0,1=0,814 ?1=2*0,3-0,814=-0,214 y2=0,86-0,214*0,2=0,8172 3). x3=0,4+0,2=0,6; x2+1/2=x2+h/2=0,4+0,1=0,5 f(x2,y2)=2*0,4-0,8172=-0,0172 y2+1/2=0,8172-0,0172*0,1=0,81548 ?2=2*0,5-0,81548=0,18452 y3=0,8172+0,18452*0,2=0,854104 4).x4=0,8; x3+1/2=x3+h/2=0,6+0,1=0,7 f(x3,y3)=2*0,6-0,854104=0,345896 y3+1/2=0,854104+0,345896*0,1=0,8886936 ?3=2*0,7-0,89=0,5113064 y4=0,854104+0,5113064*0,2=0,95636528 5).x5=1; x4+1/2=0,8+0,1=0,9 f(x4,y4)=2*0,8-0,956=0,64363472 y4+1/2=0,956+0,643*0,1=1,020728752; ?4=2*0,9-1,02=0,779271248 y5=0,956+0,7792*0,2=1,11221953 2. Дано уравнение второго порядка: y//=2x-y+y/ Находим решение на том же отрезке [0,1] c шагом h=0,2; Замена: y/=z z/=2x-y+z Начальные условия: у0=1 z0=1 1).x1=0,2; x1/2=0,1 y(z1)=y(z0)+?0h z(x1,y1)=z(x0,y0)+?0h y(z1/2)=y(z0)+f(z0,y0)h/2 z(x1/2,y1/2)=z