Программа для решения системы обыкновенных дифференциальных уравнений

  • Вид работы:
    Реферат
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    78,73 kb
  • Опубликовано:
    2012-01-12
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Программа для решения системы обыкновенных дифференциальных уравнений

Министерство образования и науки РФ

Федеральное бюджетное государственное образовательное учреждение

высшего профессионального образования

«Тульский государственный университет»

Институт высокоточных систем им. В.П. Грязева

Факультет «Системы автоматического управления»

Кафедра «Системы автоматического управления»





Реферат по дисциплине

" Программирование и основы алгоритмизации"

Разработал студент гр.130101

Алясов А. А.

Консультировал: Илюхин А. С.






Тула 2011 г.

Содержание

Задание на курсовую работу

Система, приведенная к виду Коши

Исходные данные

Описание метода

Описание алгоритма

Описание исходных данных программы

Текст программы. Текст файла с исходными данными

Результат работы программы

График зависимости x(t)

Список использованной литературы

Задание на курсовую работу

На основе базовой программы для решения системы обыкновенных дифференциальных уравнений разработать программу для решения системы уравнений:

=

=F

Разработать программу в системе программирования Паскаль АВС, выполняющую следующие действия.

.        Чтение исходных данных из внешнего файла.

.        Вывод исходных данных и результатов на дисплей и во внешний файл.

Программа должна состоять из главной программы, Главная программа должна выполнять обращение к процедурам вычисления функций «правых частей» и процедуры, реализующей метод Ейлера.

Система, приведенная к виду Коши

=x3

=

Исходные данные

Начальные условия - нулевые.

K1 =K2=K3=K22=K23=F=1.0

tk=5.

Описание метода

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

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

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

dy/dx=F(x,y),(1)

У(х0) = Уо(2)

где F(x,y) - заданная функция двух переменных х и у, х0, у0 - известные числа. Требуется определить функцию у→у(х) при x→х0. Уравнение (1) можно рассматривать как задание кривой через ее производную в координатной плоскости x, у, поскольку известно как вычислить производную в каждой точке этой кривой через ее координаты. В общем случае уравнению (1) удовлетворяет целое семейство кривых; начальное условие (2) позволяет выбрать из этого семейства одну определенную кривую, которая проходит через заданную точку х0, y0.

Для численного решения (1), (2) заменим область непрерывного изменения аргумента x дискретным множеством точек, т.е. введем сетку. Положим, что величина х изменяется от значения х=х0 до значения х=Ь. Тогда, рассматривая равномерную сетку, получаем узловые точки x0, x1,... xk,...b, находящиеся на расстоянии h друг от друга, т.е.

xk+1-xk=h, k=0,1...,(3)

где h - шаг сетки. Соответствующие значения функции будем обозначать yk, т.е.

yk=y*(xk)

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

(yk+1-yk)/h=F(xk, yk) k=0,1,..., (4)

Уравнение (4) следует из (I), если производную dy/dx приближенно представить через значения функции у(х) в соседних узлах.

Соотношения (2. 12.4) можно записать в виде

yk+1=yk+h*F(xk, yk) (5)

Тогда, учитывая (2), с помощью формулы (5) можно последовательно определить значения y1, y2,..... Этот метод приближенного решения (1), (2) называется методом Эйлера. Геометрическая интерпретация этой схемы дана на. рис.1, где изображено поле интегральных кривых. Использование только первого члена формулы Тейлора означает движение не по интегральной кривой, а по касательной к ней. На каждом шаге мы заново находим касательную; следовательно, траектория движения будет ломаной линией. Из-за этого метод Эйлера иногда называют методом ломаных.

Рис.1

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

программирование паскаль файл язык

3. Описание исходных данных программы

Обозначения

Тип

Программные обозначения

Пояснения

t0

real

t0

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

x0

x0[ ]


х

массив real

x[ ]

вычисляемые значения

h

real

h

выбранный шаг

f

массив real

f[ ]

функции от х

k1 k2 k3 k22 k23

real

k1 k2 k3 k22 k23

исходные данные

F

real

fs


t

real

t

промежуточное значение t

tk

real

tk

конечное значение t

порядок

integer

jm

количество уравнений

-

integer

n

счётчик, используется для вывода результата

-

integer

j

счётчик уравнений

-

string

l

используются для работы с файлами

-

text

d




Текст программы

program kursach;jm=3;mas=array[1..3]of real;k1,k2,k3,k22,k23,fs:real;,t,tk,h:real;,n:integer;,x0,x:mas;:text;:string;rp(t:real;var x0,f:mas);

{процедура вычисления правых частей}

begin[1]:= x[3];[2]:= (fs-k23*x[2])/k22;[3]:= (x[2]-x[3]*k2-x[1]*k3)/k1;;eu(var t,t0,h:real;var x0:mas;var x:mas);

{процедура, выполняющая действия по методу Ейлера}

var j:integer;(t,x0,f);j:=1 to 3 do[j]:=x0[j]+h*f[j];:=t0+h;

end;

begin

writeln('введите путь к файлу с исходными данными');

readln(l);(d,l);(d);(d,k1,k2,k3,k22,k23,fs);(d) ;

writeln('введите путь к файлу вывода');

readln(l);(d,l);(d);:=0.0; tk:=5.0;:=0.01;

{k1:=1.0; k2:=1.0; k3:=1.0; k22:=1.0; k23:=1.0; fs:=1.0; }:=0;[1]:=0.0; x0[2]:=0.0; x0[3]:=0.0;:=t0;('t=',t:2:2,'; x1=',x0[1]:5:6,'; x2=',x0[3]:5:6,'; x3=',x0[2]:5:6,';');(d,'t=',t:2:2,'; x1=',x0[1]:5:6,'; x2=',x0[3]:5:6,'; x3=',x0[2]:5:6,';');t<=tk do(t,t0,h,x0,x);:=n+1;n=10 then(d,'t=',t:2:2,'; x1=',x[1]:5:6,'; x2=',x[3]:5:6,'; x3=',x[2]:5:6,';');('t=',t:2:2,'; x1=',x[1]:5:6,'; x2=',x[3]:5:6,'; x3=',x[2]:5:6,';');:=0;;j:=1 to 3 do0[j]:=x[j];

t0:=t;

end;

close(d);

end.

Файл с исходными данными

Результат работы программы

t

x1

x2

0.00

0.000000

0.000000

0.000000

0.10

0.000116

0.004264

0.095618

0.20

0.001046

0.016815

0.182093

0.30

0.003540

0.035914

0.260300

0.40

0.008180

0.060002

0.331028

0.50

0.015402

0.087694

0.394994

0.60

0.025510

0.117767

0.452843

0.70

0.038692

0.149148

0.505161

0.80

0.055036

0.180910

0.552477

0.90

0.074544

0.212255

0.595268

1.00

0.097143

0.242511

0.633968

1.10

0.122697

0.271117

0.668967

1.20

0.151020

0.297619

0.700620

1.30

0.181885

0.321657

0.729246

1.40

0.215033

0.342958

0.755135

1.50

0.250180

0.361327

0.778548

1.60

0.287027

0.376642

0.799723

1.70

0.325266

0.818873

1.80

0.364584

0.397914

0.836192

1.90

0.404670

0.403908

0.851855

2.00

0.445220

0.406903

0.866020

t

x1

x2

х2

2.10

0.485939

0.407020

0.878831

2.20

0.526545

0.404404

0.890417

2.30

0.566773

0.399229

0.900895

2.40

0.606375

0.391685

0.910371

2.50

0.645124

0.381978

0.918941

2.60

0.682812

0.370321

0.926692

2.70

0.719255

0.356936

0.933702

2.80

0.754290

0.342047

0.940041

2.90

0.787777

0.325878

0.945774

3.00

0.819598

0.308649

0.950959

3.10

0.849655

0.290575

0.955648

3.20

0.877875

0.271863

0.959889

3.30

0.904202

0.252713

0.963724

3.40

0.233310

0.967193

3.50

0.951056

0.213832

0.970330

3.60

0.971566

0.194441

0.973167

3.70

0.990145

0.175287

0.975733

3.80

1.006825

0.156506

0.978053

3.90

1.021649

0.138220

0.980152

4.00

1.034669

0.120536

0.982049

4.10

1.045952

0.103548

0.983766

4.20

1.055571

0.087335

0.985318

t

x1

x2

х2

4.30

1.063606

0.071966

0.986722

4.40

1.070143

0.057492

0.987992

4.50

1.075275

0.043955

0.989140

4.60

1.079097

0.031385

0.990178


График зависимости x(t)


Список использованной литературы

1. А.М. Епанешников, В.А. Епанешников. Программирование в среде TURBO PASCAL 7.0. - 3-е изд.,стер. - М.: «ДИАЛОГ-МИФИ», 2004 - 367с.

. Вирт Н. Алгоритмы и структуры данных с примерами на Паскале.- 2-е изд. - СПб. : Невский диалект, 2007 .- 352с.

. Марченко А.И. Программирование в среде Turbo Pascal 7.0 / А.И. Марченко,Л.А. Марченко .- 8-е изд. - Киев : Корона Принт, 2004 .- 464с.

. Фаронов, В.В. Turbo Pascal : учеб. пособие для вузов / В.В. Фаронов .- М.[и др.] : Питер, 2007 .- 367с

. Шафрин Ю. А. Информационные технологии: В 2 ч. - М.: Лаборатория Базовых Знаний, 2001.

Похожие работы на - Программа для решения системы обыкновенных дифференциальных уравнений

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!