КУРСОВАЯ РАБОТА
Методы решения дифференциальных уравнений
Введение
Дифференциамльное уравнемние --уравнение, связывающее значение некоторой неизвестной функции в некоторой точке и значение её производных различных порядков в той же точке. Дифференциальное уравнение содержит в своей записи неизвестную функцию, ее производные и независимые переменные. Решить дифференциальное уравнение не просто. Есть большое число способов их решения.
1.Теоретическая часть
1.1 Модифицированный метод Эйлера
Суть этого метода состоит в следующем. Сначала вычисляются вспомогательные значения искомой функции y в точках t = ti + с помощью формулы:
y = yi + fi = yi +f(ti, yi).
Затем находится значение правой части уравнения в средней точке
f = f(t, y) и затем полагается yi+1 = yi + h f, i = 0, 1, …, n - 1.
1.2 Формула Ньютона
Интерполяционный многочлен легко определяется если его построить в виде:
Pn(x) = С0 + С1(x - x0) + C2(x - x0) (x - x1) + ...+ Cn(x - x0)(x - x1) ... (x - xn-1)
Исходя из условия интерполяции, для коэффициентов Ci получим систему уравнений треугольного вида
f(x0) = С0
f(x1) = С0 + С1(x1 - x0 )
f(x2) = С0 + С1(x1 - x0 ) + C2(x2 - x0 )(x2 - x1 )
. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .
f(xn ) = С0 + С1(xn - x0) + C2(xn - x0)(xn - x1) + ...+ Cn(xn - x0)(xn - x1) ... (xn- xn-1)
Из этой системы легко находятся
и так далее.
1.3 Дихотомия
Пусть задана функция .
Разобьём мысленно заданный отрезок пополам и возьмём две симметричные относительно центра точки и так, что:
,
где -- некоторое число в интервале
Отбросим тот из концов изначального интервала, к которому ближе оказалась одна из двух вновь поставленных точек с максимальным значением (напомним, мы ищем минимум), то есть:
Если , то берётся отрезок , а отрезок отбрасывается.
Иначе берётся зеркальный относительно середины отрезок , а отбрасывается .
Процедура повторяется, пока не будет достигнута заданная точность, к примеру, пока длина отрезка не достигнет удвоенного значения заданной погрешности.
На каждой итерации приходится вычислять новые точки. Можно добиться того, чтобы на очередной итерации было необходимо высчитывать лишь одну новую точку, что заметно способствовало бы оптимизации процедуры. Это достигается путём зеркального деления отрезка в золотом сечении, в этом смысле метод золотого сечения можно рассматривать, как улучшение метода дихотомии с параметром , где -- золотое сечение.
1.4 Метод трапеций
Выведем формулу трапеций из геометрических соображений. Заменим график функции y = f(x) ломаной линией (рис.1.1), полученной следующим образом. Из точек a = x0, x1, x2,…, xn = b проведем ординаты до пересечения с кривой y = f(x). Концы ординат соединим прямолинейными отрезками.
Рис. 1.1
Тогда площадь криволинейной трапеции приближенно можно считать равной площади фигуры, составленной из трапеций. Так как площадь трапеции, построенной на отрезке [xi, xi+1] длины h = , равна h , то, пользуясь этой формулой для i = 0, 2, … , n - 1, получим квадратурную формулу трапеций:
I=Iтр =h=
2. Расчетная часть
program kursovaya;
var q:real;
procedure zagacha1(q:real);
var x, y, yp, h, b: real;
i : integer;
function f (xn, yn: real): real;
begin
f := 2 * (xn * xn + yn);
end;
begin
i := 0;
x := 0;
y := 1;
h := 0.1;
b := 1;
writeln('Модифицированный метод Эйлера');
writeln('');
writeln('dy/dx = 2*(x^2+y), y(0) = 1');
writeln('');
writeln('| i | x | yp | y |');
writeln('-----------------------------');
repeat
writeln('|', i:2, ' |', x:4:1, ' |', yp:7:4, ' |', y:7:4, ' |');
yp := y + h/2 * f(x, y);
y := y + h * (f(x+h/2, yp));
i := i + 1;
x := x + h;
until x > b;
readln;
end;
procedure zagacha2(q:real);
var i, k0, k1, k2: real;
const h = 0.1;
main:array[0..2] of real = (1.2205, 1.4937, 1.8356);
begin
i := 0.2;
writeln('Интерполированный полином Ньютона');
writeln('');
writeln('dy/dx = 2*(x^2+y), y(0) = 1, n = 2');
k0 := main[0];
k1 := (main[1] - k0)/h;
k2 := ((main[2] - main[1])/h - k1)/(2*h);
writeln('f(x)=',k0:0:3,'+(x-',i:0:1,')*',k1:0:3,'+(x-',i:0:1,')(x-',i+h:0:1,')*',k2:0:3);
readln;
end;
procedure zagacha3(q:real);
var
y:real;
Function f(x: real): real;
Begin
f := (2*sqr(x))+2*y
End;
Var
x, E, a, b,t,d, c,g,m: real;
n,k: Integer;
begin
e:=0.1;
a:=0;
b:=1;
n := 0;
k:=0;
m:=1;
t:=0;
d:=1;
Repeat
c := (a + b) / 2;
If (f(a) * f(c)) < 0 Then b := c
Else a := c;
Inc(n)
Until (b - a) <= E;
x := (a + b) / 2;
WriteLn('koren max raven x=', x:10:5);
Repeat
g := (t + d) / 2;
If (f(t) * f(g)) < 0 Then d := g
Else d := g;
Inc(k)
Until (d - t) <= E;
x := (t +d) ;
WriteLn('koren min raven x=', x:10:4);
Readln;
End;
procedure zagacha4(q:real);
var a, b, h, i, sum: real;
n: integer;
function f (x: real): real;
begin
f := 1.220+(x-0.2)*2.732+(x-0.2)*(x-0.3)*3.635;
end;
begin
writeln('Метод трапеций');
writeln('');
write('Левая граница: ');
readln(a);
write('Правая граница: ');
readln(b);
write('Кол-во разбиений: ');
readln(n);
sum := 0;
i := 0;
h := (b - a)/n;
repeat
sum := sum + f(a+i*h) + f(a+(i+1)*h);
i := i + 1;
until i = n - 1;
writeln(' Result: ', h/2*sum:0:4);
readln;
end;
end.
Рисунок 1-полученные значения
2.Составим Блок-схему алгоритма
Блок-схема 3. Метод дихотомии
Заключение
Освоение методов решения дифференциальных уравнений, в ходе выполнения курсовой работы, позволяет проводить различные вычислительные операции, которые упрощают вычисления.
Модифицированный метод Эйлера с пересчетом имеет второй порядок точности, однако для его реализации необходимо дважды вычислять правую часть функции. дифференциальный уравнение эйлер полином
Интерполяционные полиномы в форме Ньютона удобно использовать, если точка интерполирования находится вблизи начала (прямая формула Ньютона) или конца таблицы (обратная формула Ньютона)
Дихотомическое деление привлекательно своей простотой
Метод трапеций быстро сходится к точному значению интеграла для периодических функций, поскольку погрешность за период анулируется.