Решение краевой задачи для ОДУ методом конечных разностей

МИНИСТЕРСТВО НАУКИ И ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

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









Кафедра ПиПЭВС













Курсовая работа 

по дисциплине «Моделирование систем»



Решение краевой задачи для ОДУ методом конечных разностей.











































Йошкар-Ола

2010

Теоретическая часть.

Краевые задачи, задачи, в которых из некоторого класса функций, определённых в данной области, требуется найти ту, которая удовлетворяет на границе (крае) этой области заданным условиям. Функции, описывающие конкретные явления природы (физические, химические и др.), как правило, представляют собой решения уравнений математической физики, выведенных из общих законов, которым подчиняются эти явления. Когда рассматриваемые уравнения допускают целые семейства решений, дополнительно задают так называемые краевые или начальные условия, позволяющие однозначно выделить интересующее нас решение. В то время, как краевые условия задаются исключительно на граничных точках области, где ищется решение, начальные условия могут оказаться заданными на определённом множестве точек внутри области. 

Для исследования краевых задач широко используются методы интегральных уравнений (потенциала), априорных оценок и конечных разностей.

Конечные разности.

Исчисление конечных разностей связано с изучением свойств и применений разностей между соседними членами какой-нибудь последовательности или между значениями функции в точках, расположенных с постоянным интервалом в некотором пространстве. Слово «конечные» используется здесь в несколько устаревшем смысле «не бесконечно малые», т.е. не связанные с предельными переходами. Поскольку дифференциальное исчисление занимается изучением пределов разностей, а исчисление конечных разностей – самими разностями, то естественно, что между этими двумя теориями существуют много параллелей. Исчисления конечных разностей используются при интерполяции в математических таблицах, при суммировании числовых рядов, при вычислении интегралов и дифференцировании функций. Разности встречаются также в любой ситуации, когда надо описать поведение объекта, который испытывает воздействие меняющихся условий на определенном расстоянии (во времени и в пространстве). Например, термостату требуется значительное время, чтобы отреагировать на изменение температуры, поэтому он реагирует не на текущую температуру, а на ту, что была минуту назад. Другой пример: автомашиной управляет водитель, которому требуется какое-то время, чтобы отреагировать на возникшую на дороге ситуацию.

Под конечной разностью первого порядка функции f (x) принято понимать величину



где d – некоторая постоянная, которую часто, но не всегда, принимают равной 1. Разность второго порядка обозначается D2f и представляет собой разность разностей, т.е.



Продолжив этот процесс, мы получим разности более высоких порядков D3f (x), D4f (x), ј .

У истоков теории.

Хотя исследование свойств и использование конечных разностей приходится на современный период развития математики, Птолемей (ок. 150 н.э.) ввел в Альмагесте таблицу разностей первого порядка, чтобы облегчить расчеты в таблице длин хорд. Разности второго порядка использовал при вычислении своих таблиц логарифмов в 1624 Г.Бриггс. Теория интерполяции берет начало со знаменитой пятой леммы из 3-й книги Математических начал (1687) И.Ньютона, в которой впервые была приведена формула, носящая ныне его имя. Частный случай формулы Ньютона, открытый также независимо его современником Дж.Грегори (1638–1675), приведен ниже (см. формулу (7)). В общей формуле интерполяции Ньютона использовались разделенные разности, хотя этот термин, по-видимому, был введен О.де Морганом (1806–1871) в 1848. Первое применение исчисления конечных разностей к задачам теории вероятностей принято связывать с именами П.де Монтмора (1678–1719) и А.де Муавра (1667–1754).

Хотя Л.Эйлер (1707–1783) в своих работах по дифференциальному исчислению использовал предельные переходы в конечных разностях, основания современной теории конечных разностей были заложены в основном Ж.Лагранжем (1736–1813) и П.Лапласом (1749–1827). Первый из них ввел в исчисление конечных разностей символические методы, второй сделал конечные разности главным инструментом в своей Аналитической теории вероятностей (1812).

Под влиянием этих работ математики 19 в. принялись интенсивно разрабатывать предмет, и в 1860 Дж.Буль выпустил свой классический Трактат об исчислении конечных разностей. С тех пор это исчисление и круг его приложений существенно расширились. Одно из наиболее важных приложений конечные разности нашли в статистике. Особенно полезными они оказались в теории сериальной корреляции, в анализе случайных последовательностей и статистических временных рядов. 

Алгоритм метода конечных разностей.

Разобьем отрезок [a,b] на n равных частей длины, или шага 

Точки разбиения  называются узлами, а их совокупность – сеткой на отрезке [a,b]

Вводим обозначения 

3. Заменим производные односторонними конечно-разностными  отношениями:



Эти формулы  приближенно выражают значения производных во внутренних точках интервала [a,b].

Кроме того, краевые условия дополнительно дают еще два уравнения:



Составляем матрицу уравнений, которую можно решить любым численным методом.




Практическая часть.

Задание:

Используя метод конечных разностей, составить решение краевой задачи для ОДУ с точностью , h=0,1.





Разбив отрезок [1;1,3]  на части с шагом h=0.1 получим 4 узловые точки с абсциссами:

 

две точки x0 и x3 – конечные;

две другие x1 и x2 – внутренние.

Заменим производные односторонними конечно-разностными отношениями:

Во внутренних точках (i=1,2)

          =      

              Конечно-разностные уравнения в конечных точках:



После упрощения система принимает следующий вид:



Для нахождения корней данной системы уравнений воспользуемся методом Гаусса. (Приложение)  Решением краевой задачи является:

	





















Вывод:

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

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

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



















































ПРИЛОЖЕНИЕ

































Листинг программы:

program Kraevaja;

uses crt;

var

x1,x2,x3,x4:real;

i,j:integer;

Z:real;

B:array [1..4,1..5] of real;

C:array [1..4,1..5] of real;



procedure EnterMatrix;

begin

writeln('Введите элементы упрощенной матрицы:');

for i:=1 to 4 do

for j:=1 to 5 do begin

write ('B[',i,',',j,']=');

readln (B[i,j]);

end;

end;



procedure PrintMatrix;

begin

for i:=1 to 4 do begin

for j:=1 to 5 do

write(B[i,j]:6:2);

writeln;

end;

end;



begin

clrscr;

gotoxy(30,1);

writeln('Метод конечных разностей');

gotoxy(1,2);

writeln('Исходное задание);

gotoxy(20,2);

writeln('d^2г/dx^2-(dy/dx)/2+3y=2x^2');

gotoxy(20,4);

writeln('y(1)+2(dy/dx)(1)=0,6');

gotoxy(20,5);

writeln('y(1,3)=1');

gotoxy(1,6);

writeln(' Ј h=0,1');

EnterMatrix;

writeln('Исходная матрица:');

PrintMatrix;



Z:=B[1,1];

for j:=1 to 5 do

begin

B[1,j]:=B[1,j]/z;

end;

for j:=1 to 5 do

begin

C[1,j]:=B[1,j];

end;

Z:=B[2,1];

for j:=1 to 5 do

begin

B[1,j]:=B[1,j]*Z;

end;

for j:=1 to 5 do

begin

B[2,j]:=B[2,j]-B[1,j];

end;

Z:=B[2,2];

for j:=1 to 5 do

begin

B[2,j]:=B[2,j]/Z;

end;

for j:=1 to 5 do

begin

C[2,j]:=B[2,j];

end;

for j:=1 to 5 do

begin

B[1,j]:=C[1,j];

end;

Z:=B[3,1];

for j:=1 to 5 do

begin

B[1,j]:=B[1,j]*Z;

end;

for j:=1 to 5 do

begin

B[3,j]:=B[3,j]-B[1,j];

end;

for j:=1 to 5 do

begin

B[2,j]:=C[2,j];

end;

Z:=B[3,2];

for j:=1 to 5 do

begin

B[2,j]:=B[2,j]*Z;

end;

for j:=1 to 5 do

begin

B[3,j]:=B[3,j]-B[2,j];

end;

Z:=B[3,3];

for j:=1 to 5 do

begin

B[3,j]:=B[3,j]/Z;

end;

for j:=1 to 5 do

begin

C[3,j]:=B[3,j];

end;

for j:=1 to 5 do

begin

B[1,j]:=C[1,j];

end;

Z:=B[4,1];

for j:=1 to 5 do

begin

B[1,j]:=B[1,j]*Z;

end;

for j:=1 to 5 do

begin

B[4,j]:=B[4,j]-B[1,j];

end;

for j:=1 to 5 do

begin

B[2,j]:=C[2,j];

end;

Z:=B[4,2];

for j:=1 to 5 do

begin

B[2,j]:=B[2,j]*Z;

end;

for j:=1 to 5 do

begin

B[4,j]:=B[4,j]-B[2,j];

end;

for j:=1 to 5 do

begin

B[3,j]:=C[3,j];

end;

Z:=B[4,3];

for j:=1 to 5 do

begin

B[3,j]:=B[3,j]*Z;

end;

for j:=1 to 5 do

begin

B[4,j]:=B[4,j]-B[3,j];

end;

for j:=1 to 5 do

begin

C[4,j]:=B[4,j];

end;

for j:=1 to 5 do

begin

B[2,j]:=C[2,j];

end;



x4:=C[4,5]/C[4,4];

x3:=C[3,5]-x4*C[3,4];

x2:=C[2,5]-x4*C[2,4]-x3*C[2,3];

x1:=C[1,5]-x4*C[1,4]-x3*C[1,3]-x2*C[1,2];

writeln('y(1)=',x1:3:3);

writeln('y(1,1)=',x2:3:3);

writeln('y(1,2)=',x3:3:3);

writeln('y(1,3)=',x4:3:3);

readkey;

end.

program tochki;

uses crt, graph;

var

    gd,gm,a:integer;



begin

clrscr;

initgraph(gd,gm,'');

setcolor(12);

line(320,0,320,480);

line(0,240,640,240);

outtextxy(400,100,'tochka1');

outtextxy(440,110,'tochka2');

outtextxy(480,120,'tochka3');

outtextxy(530,130,'tochka4');

readkey;

end.