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

Разработка программы для решения системы обыкновенных дифференциальных уравнений на базе языка программирования Паскаль АВС. Чтение исходных данных из внешнего файла. Вывод исходных данных и результатов на дисплей и во внешний файл. Суть метода Ейлера.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 12.01.2012
Размер файла 126,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

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

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

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

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

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

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

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

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

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

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

Алясов А. А.

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

Тула 2011 г.

Содержание

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

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

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

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

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

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

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

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

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

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

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

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

=

=F

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

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

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

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

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

=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

массив real

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;

const jm=3;

type mas=array[1..3]of real;

var k1,k2,k3,k22,k23,fs:real;

t0,t,tk,h:real;

j,n:integer;

f,x0,x:mas;

d:text;

l:string;

procedure rp(t:real;var x0,f:mas);

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

begin

f[1]:= x[3];

f[2]:= (fs-k23*x[2])/k22;

f[3]:= (x[2]-x[3]*k2-x[1]*k3)/k1;

end;

procedure eu(var t,t0,h:real;var x0:mas;var x:mas);

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

var j:integer;

begin

rp(t,x0,f);

for j:=1 to 3 do

x[j]:=x0[j]+h*f[j];

t:=t0+h;

end;

begin

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

readln(l);

assign(d,l);

reset(d);

read(d,k1,k2,k3,k22,k23,fs);

close(d) ;

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

readln(l);

assign(d,l);

rewrite(d);

t0:=0.0; tk:=5.0;

h:=0.01;

{k1:=1.0; k2:=1.0; k3:=1.0; k22:=1.0; k23:=1.0; fs:=1.0; }

n:=0;

x0[1]:=0.0; x0[2]:=0.0; x0[3]:=0.0;

t:=t0;

writeln('t=',t:2:2,'; x1=',x0[1]:5:6,'; x2=',x0[3]:5:6,'; x3=',x0[2]:5:6,';');

writeln(d,'t=',t:2:2,'; x1=',x0[1]:5:6,'; x2=',x0[3]:5:6,'; x3=',x0[2]:5:6,';');

while t<=tk do

begin

eu(t,t0,h,x0,x);

n:=n+1;

if n=10 then

begin

writeln(d,'t=',t:2:2,'; x1=',x[1]:5:6,'; x2=',x[3]:5:6,'; x3=',x[2]:5:6,';');

writeln('t=',t:2:2,'; x1=',x[1]:5:6,'; x2=',x[3]:5:6,'; x3=',x[2]:5:6,';');

n:=0;

end;

for j:=1 to 3 do

x0[j]:=x[j];

t0:=t;

end;

close(d);

end.

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

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

t

x1

x2

х2'

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.388839

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.928602

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

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

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

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

Размещено на Allbest.ru


Подобные документы

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

    курсовая работа [1,9 M], добавлен 05.01.2013

  • Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений: Эйлера, Рунге-Кутта, Адамса и Рунге. Техники приближенного решения данных уравнений: метод конечных разностей, разностной прогонки, коллокаций; анализ результатов.

    курсовая работа [532,9 K], добавлен 14.01.2014

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

    дипломная работа [1,6 M], добавлен 19.06.2012

  • Команды, используемые при решении обыкновенных дифференциальных уравнений в системе вычислений Maple. Произвольные константы решения дифференциального уравнения второго порядка, представленном рядом Тейлора. Значения опции method при численном решении.

    лабораторная работа [47,2 K], добавлен 15.07.2009

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

    курсовая работа [226,6 K], добавлен 05.04.2013

  • Реализация решения обыкновенных дифференциальных уравнений 1-го и 2-го порядка методом Рунге-Кутты. Построение на ЭВМ системы отображения результатов в табличной форме и в виде графика. Архитектура и требования к разрабатываемым программным средствам.

    курсовая работа [2,7 M], добавлен 05.11.2011

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

    реферат [14,5 K], добавлен 06.12.2011

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

    курсовая работа [38,0 K], добавлен 26.04.2011

  • Решение системы обыкновенных дифференциальных уравнений в программе Matlab. Применение метода Рунге–Кутты. Априорный выбор шага интегрирования. Построение трехмерного графика движения точки в декартовой системе координат и создание видеофайла формата AVI.

    контрольная работа [602,8 K], добавлен 04.05.2015

  • Описание математических методов решения систем линейных уравнений. Метод Гаусса, матричный метод. Вычисление определителей второго и третьего порядка. Язык программирования Паскаль. Структура программы, описание переменных, основные конструкции языка.

    курсовая работа [137,3 K], добавлен 20.07.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.