Разработка программы на языке Turbo Pascal 7.0 для решения дифференциальных уравнений

Разработка программы на языке Turbo Pascal 7.0 для преобразования кинетической схемы протекания химических реакций при изотермических условиях в систему дифференциальных уравнений. Ее решение в численном виде методом Рунге-Кутта четвертого порядка.

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

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

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

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

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

РЕФЕРАТ

Курсовая работа: 25 страниц, 4 рисунка, 2 таблицы, 2 графика, 3 источника

Цель работы: разработать программу на языке Turbo Pascal 7.0 для решения дифференциальных уравнений.

В курсовой работе приведено описание методов Рунге-Кутта первого, второго, третьего и четвертого порядков, приведена точность нахождения концентраций компонентов по рассматриваемым методам, блок-схема алгоритма, разработана программа расчета на на языке Turbo Pascal 7.0 с результатами и с тестовым вариантом расчета, проведен анализ полученных результатов.

МЕТОД РУНГЕ-КУТТА, РЕАКЦИЯ, БЛОК-СХЕМА, АЛГОРИТМ, ПРОИЗВОДНАЯ, ТОЧНОСТЬ, ПРОГРАММА, РАСЧЕТ, ГРАФИК.

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. ПОСТАНОВКА ЗАДАЧИ

2. СУЩНОСТЬ МЕТОДОВ РУНГЕ-КУТТА

3. ИДЕНТИФИКАЦИЯ ПЕРЕМЕННЫХ

4. ПРОГРАММА РАСЧЕТА НА ЯЗЫКЕ TURBO PASCAL

5 РЕЗУЛЬТАТЫ РАСЧЕТА

6. АНАЛИЗ РЕЗУЛЬТАТОВ

ЗАКЛЮЧЕНИЕ

ПЕРЕЧЕНЬ ССЫЛОК

ВВЕДЕНИЕ

Многие процессы химической технологии описываются системой дифференциальных уравнений - начиная от кинетических исследований и заканчивая химическими технологическими процессами В основу математических способов описания процессов положены система дифференциальных уравнений и система линейных алгебраических уравнений Эти уравнения описывают материальные и тепловые балансы объектов химической технологии а так же структуры потоков технических веществ в этих аппаратах

Для получения распределения технологических параметров во времени и в пространстве (в пределах объекта) необходимо произвести СДУ методом который дал бы высокую точность решения при минимальных затратах времени на решение потому что ЭВМ должна работать в режиме реального времени и успевать за ходом технологического процесса. Если время на решение задачи большое то управляющее воздействие выработанное на ЭВМ может привести к отрицательным воздействиям Методов решения существует очень много В данной работе будет изучена кинетическая схема протекания химических реакций, которая будет переведена на математический язык - систему дифференциальных уравнений первого порядка, которая будет решаться в численном виде методом Рунге-Кутта четвертого порядка.

программа дифференциальные уравнение кинетический

1. ПОСТАНОВКА ЗАДАЧИ

Необходимо найти распределение концентраций компонентов во времени, а также изменение скорости химических реакций до веществ А,B,C,E,D, протекающих по следующей схеме:

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

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

Так как коэффициенты являются константами, то можно уравнение записать в следующем виде.

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

2. СУЩНОСТЬ МЕТОДОВ РУНГЕ-КУТТА

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

Методы Рунге-Кутта обладают следующими свойствами:

a) Эти методы являются одноступенчатыми: чтобы найти уm+1 нужна информация о предыдущей точке xmym

b) Они согласуются с рядом Тейлора вплоть до членов порядка hp где степень р различна для различных методов и называется порядковым номером или порядком метода

c) Они не требуют вычисления производных от f (xy) а требуют вычисления самой функции

Рассмотрим сначала геометрическое построение и выведем некоторые формулы на основе геометрических аналогий После этого мы подтвердим полученные результаты аналитически

Предположим нам известна точка xmym на искомой кривой Тогда мы можем провести прямую линию с тангенсом угла наклона уm=f(xmym) которая пройдет через точку xmym Это построение показано на рис1 где кривая представляет собой точное но конечно неизвестное решение уравнения а прямая линия L1 построена так как это только что описано

Тогда следующей точкой решения можно считать ту где прямая L1 пересечет ординату проведенную через точку x=xm+1=xm+h

Уравнение прямой L1 выглядит так: y=ym+ym(x-xm) так как y=f(xmym) и кроме того xm+1=xm+h тогда уравнение примет вид

ym+1=ym+h*f(xmym) 11

Ошибка при x=xm+1 показана в виде отрезка е Очевидно найденное таким образом приближенное значение согласуется с разложением в ряд Тейлора вплоть до членов порядка h так что ошибка ограничения равна et=Кh2

Заметим что хотя точка на рисунке 2.1 была показана на кривой в действительности ym является приближенным значением и не лежит точно на кривой

Формула 11 описывает метод Эйлера один из самых старых и широко известных методов численного интегрирования дифференциальных уравнений Отметим что метод Эйлера является одним из методов Рунге-Кутта первого порядка

Рассмотрим исправленный метод Эйлера и модификационный метод Эйлера В исправленном методе Эйлера мы находим средний тангенс угла наклона касательной для двух точек: xmym и xm+hym+hym Последняя точка есть та самая которая в методе Эйлера обозначалась xm+1ym+1 Геометрический процесс нахождения точки xm+1ym+1 можно проследить по рис2 С помощью метода Эйлера находится точка xm+hym+hym лежащая на прямой L1 В этой точке снова вычисляется тангенс дает прямую Наконец через точку xmym мы проводим прямую L параллельную Точка в которой прямая L пересечется с ординатой восстановленной из x=xm+1=xm+h и будет искомой точкой xm+1ym+1

Тангенс угла наклона прямой и прямой L равен

Ф(xmymh)=[f(xmym)+f(xm+hym+ymh)] 12

где ym=f(xmym) 13

Уравнение линии L при этом записывается в виде

y=ym+(x-xm)Ф(xmymh)

так что

ym+1=ym+hФ(xmymh) 14

Соотношения 12 13 14 описывают исправленный метод Эйлера

Чтобы выяснить насколько хорошо этот метод согласуется с разложением в ряд Тейлора вспомним что разложение в ряд функции f(xy) можно записать следующим образом:

f(xy)=f(xmym)+(x-xm)f/x+(y-ym)f/x+ 15

где частные производные вычисляются при x=xm и y=ym

Подставляя в формулу 15 x=xm+h и y=ym+hym и используя выражение 13 для ym получаем

f(xm+hym+hym)=f+hfx+hffy+O(h2)

где снова функция f и ее производные вычисляются в точке xmym Подставляя результат в 12 и производя необходимые преобразования получаем

Ф(xmymh)=f+h/2(fx+ffy)+O(h2)

Подставим полученное выражение в 14 и сравним с рядом Тейлора

ym+1=ym+hf+h2/2(fx+ffy)+O(h3)

Как видим исправленный метод Эйлера согласуется с разложением в ряд Тейлора вплоть до членов степени h2 являясь таким образом методом Рунге-Кутты второго порядка

Рассмотрим модификационный метод Эйлера Рассмотрим рис3 где первоначальное построение сделано так же как и на рис2 Но на этот раз мы берем точку лежащую на пересечении этой прямой и ординатой x=x+h/2 На рисунке эта точка образована через Р а ее ордината равна y=ym+(h/2)ym Вычислим тангенс угла наклона касательной в этой точке

Ф(xmymh)=f+(xm+h/2ym+h/2*ym) 16

где ym=f(xmym) 17

Прямая с таким наклоном проходящая через Р обозначена через * Вслед за тем мы проводим через точку xmym прямую параллельную * и обозначаем ее через L0 Пересечение этой прямой с ординатой x=xm+h и даст искомую точку xm+1ym+1 Уравнение прямой можно записать в виде

y=ym+(x-xm)Ф(xmymh)

где Ф задается формулой 16 Поэтому

ym+1=ym+hФ(xmymh) 18

Соотношения 16 17 18 описывают так называемый модификационный метод Эйлера и является еще одним методом Рунге-Кутта второго порядка Обобщим оба метода Заметим что оба метода описываются формулами вида

ym+1=ym+hФ(xmymh) 19

и в обоих случаях Ф имеет вид

Ф(xmymh)=a1f(xmym)+a2f(xm+b1hym+b2hym) 110

где ym=f(xmym) 111

В частности для исправленного метода Эйлера

a1=a2=1/2;

b1=b2=1

В то время как для модификационного метода Эйлера

a1=0 a2=1

b1=b2=1/2

Формулы 19 110 111 описывают некоторый метод типа Рунге-Кутта Посмотрим какого порядка метод можно рассчитывать получить в лучшем случае и каковы допустимые значения параметров a1 a2 b1 и b2

Чтобы получить соответствие ряду Тейлора вплоть до членов степени h в общем случае достаточно одного параметра Чтобы получить согласование вплоть до членов степени h2 потребуется еще два параметра так как необходимо учитывать члены h2fx и h2ffy Так как у нас имеется всего четыре параметра три из которых потребуются для создания согласования с рядом Тейлора вплоть до членов порядка h2 то самое лучшее на что здесь можно рассчитывать - это метод второго порядка

В разложении f(xy) в ряд 15 в окрестности точки xmym положим

x=xm+b1h

y=ym+b2hf

Тогда

f(xm+b1hym+b2hf)=f+b1hfx+b2hffy+O(h2)

где функция и производные в правой части равенства вычислены в точке xmym

Тогда 19 можно переписать в виде

ym+1=ym+h[a1f+a2f+h(a2b1fx+a2b2ffy)]+O(h3)

Сравнив эту формулу с разложением в ряд Тейлора можно переписать в виде

ym+1=ym+h[a1f+a2f+h(a2b1fx+a2b2ffy)]+O(h3)

Если потребовать совпадения членов hf то a1+a2=1

Сравнивая члены содержащие h2fx получаем a2b1=1/2

Сравнивая члены содержащие h2ffy получаем a2b2=1/2

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

Положим например a2=0 тогда a1=1- b1=b2=1/2 и соотношения 19 110 111 сведутся к

ym+1=ym+h[(1-)f(xmym)+f(xm+h/2ym+h/2f(xmym))]+O(h3) 112

Это наиболее общая форма записи метода Рунге-Кутта второго порядка При =1/2 мы получаем исправленный метод Эйлера при =1 получаем модификационный метод Эйлера Для всех отличных от нуля ошибка ограничения равна

et=kh3 113

Методы Рунге-Кутта третьего и четвертого порядков можно вывести совершенно аналогично тому как это делалось при выводе методов первого и второго порядков Мы не будем воспроизводить выкладки а ограничимся тем что приведем формулы описывающие метод четвертого порядка один из самых употребляемых методов интегрирования дифференциальных уравнений Этот классический метод Рунге-Кутта описывается системой следующих пяти соотношений

ym+1=ym+h/6(R1+2R2+2R3+R4) 114

где R1=f(xmym) 115

R2=f(xm+h/2ym+hR1/2) 116

R3=f(xm+h/2ym+hR2/2) 117

R4=f(xm+h/2ym+hR3/2). 118

Ошибка ограничения для этого метода равна et=kh5 так, что формулы 114-118 описывают метод четвертого порядка Заметим что при использовании этого метода функцию необходимо вычислять четыре раза

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

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

Рисунок 2.4 Метод Рунге-Кутта четвертого порядка

3. ИДЕНТИФИКАЦИЯ ПЕРЕМЕННЫХ

Таблица 3.1

4. ПРОГРАММА РАСЧЕТА НА ЯЗЫКЕ TURBO PASCAL 7.0

program Kurs;

const n=5;

var c,dc,cpr:array[1..n] of real;

k:array [1..5] of real;

h,p,dp,tn,tk,t,eps:real;

i:integer;

f:text;

procedure DF;

begin

dc[1]:=-k[1]*c[1];

dc[2]:=k[1]*c[1]-(k[2]+k[5])*c[2]+k[4]*c[3];

dc[3]:=k[2]*c[2]-(k[4]+k[3])*c[3];

dc[4]:=k[3]*c[3];

dc[5]:=k[5]*c[2];

end;

Procedure Runge_kutt_4;

var r:array[1..5,1..n] of real;

begin

DF;

for i:= 1 to n do begin

r[1,i]:=dc[i];

c[i]:=cpr[i]+r[1,i]*h/2;

end;

t:=t+h/2;

DF;

for i:= 1 to n do begin

r[2,i]:=dc[i];

c[i]:=cpr[i]+r[3,i]*h/2;

end;

DF;

for i:= 1 to n do begin

r[3,i]:=dc[i];

c[i]:=cpr[i]+r[3,i]*h;

end;

t:=t+h/2;

DF;

for i:= 1 to n do begin

r[4,i]:=dc[i];

r[5,i]:=1/6*(r[1,i]+2*r[2,i]+2*r[3,i]+r[4,i]);

c[i]:=cpr[i]+r[5,i]*h/2;

end;

end;

procedure outdata;

begin

writeln(f,t:1:4,#9,c[1]:1:4,#9,dc[1]:1:4,#9,c[2]:1:4,#9,dc[2]:1:4,#9,c[3]:1:4,#9,dc[3]:1:4,#9,

c[4]:1:4,#9,dc[4]:1:4,#9,c[5]:1:4,#9,dc[5]:1:4,#9,c[1]+c[2]+c[3]+c[4]+c[5]:1:4);

end;

begin

Assign(f,'in.txt');

Reset(f);

readln(f,c[1],c[2],c[3],c[4],c[5]);

readln(f,k[1],k[2],k[3],k[4],k[5]);

readln(f,h,dp,tn,tk,eps);

Close(f);

Assign(f,'out.txt');

Rewrite(f);

t:=tn;

p:=tn;

writeln('-------------Begin data--------------');

writeln('| c1 = ',c[1]:10:4, ' | k1 = ',k[1]:10:4, ' | ');

writeln('| c2 = ',c[2]:10:4, ' | k2 = ',k[2]:10:4, ' | ');

writeln('| c3 = ',c[3]:10:4, ' | k3 = ',k[3]:10:4, ' | ');

writeln('| c4 = ',c[4]:10:4, ' | k4 = ',k[4]:10:4, ' | ');

writeln('| c5 = ',c[5]:10:4, ' | k5 = ',k[5]:10:4, ' | ');

writeln('> sum ',c[1]+c[2]+c[3]+c[4]+c[5]:10:4,' |');

writeln;

writeln('| h = ', h:10:4, ' | dp = ', dp:10:4, ' | ');

writeln('| tn = ', tn:10:4, ' | tk = ', tk:10:4, ' | ');

writeln('|eps = ', eps:10:4, ' | |');

writeln('------------End data-----------------');

writeln;

writeln(f,'t',#9,'c[1]',#9,'dc[1]',#9,'c[2]',#9,'dc[2]',#9,'c[3]',#9,'dc[3]',#9,

'c[4]',#9,'dc[4]',#9,'c[5]',#9,'dc[5]',#9,'sum');

repeat

if abs(t-p)<eps then begin

DF;

if p=20 then

outdata;

outdata;

P:=p+dp;

end;

for i:= 1 to n do cpr[i]:=c[i];

Runge_kutt_4;

until t>tk+eps;

close(f);

ReadKey;

end.

Пример файла исходных данных in.txt

98 1 1 0 0

0.3 0.2 0.05 0.1 0.05

0.01.5 0 20 0.001

5. РЕЗУЛЬТАТЫ РАСЧЕТА

Таблица 5.1

6. АНАЛИЗ РЕЗУЛЬТАТОВ РАСЧЕТА

Вещество А на протяжении всего процесса расходуется на образование веществ В, С, E, D. Концентрации вещества А в начальный момент времени расходуется быстрее, чем концентрации его же в конце процесса. Это обусловлено тем, что скорость химической реакции зависит от концентрации реагирующего вещества. Производная имеет знак «минус». Это говорит о том, что вещество расходуется. Следовательно, чем выше концентрация вещества, вступающего в процесс, тем выше скорость его реагирования с другими веществами. Вещество В образуется из вещества A и С и расходуется на производство веществ D и С. Поскольку концентрация вещества А большая в начале процесса и расходуется со временем, то и концентрация вещества В сначала быстро возрастает, а затем скорость уменьшается и меняет знак с «плюс» на «минус», в результате чего концентрация вещества начинает медленно уменьшаться.

Аналогичная ситуация происходит с веществом С, но пик его концентрации приходится наболее дальний срок (уже после 20 сек.). Концентрации веществ D и Е на протяжении всего времени реакции имеют положительные производные, в следствии чего можно и концентрации данных веществ ростут со временем. Причем, поскольку концентрация вещества В, в начале процесса, на много выше, чем концентрация вещества С, то и концентрация вещества D в процессе реакции будет всегда выше, чем концентрация вещества E. Реакция протекает в течении длительного времени и не заканчивается после 20 сек

График 6.1

График 6.2

ЗАКЛЮЧЕНИЕ

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

В результате выполнения расчета получена зависимость изменения концентрации вещества во времени. Из расчета следует, что на протяжении всего процесса вещество А расходовалось на образование остальных. Процесс не достиг конечного состояния (не достиг равновесия).

ПЕРЕЧЕНЬ ССЫЛОК

1 Мудров А.Е. Численные методы для ПЭВМ на языках Паскаль, Фортран и Бейсик. МП “Раско”, Томск, 1991 г.

2 Самарский А.А. «Введение в численные методы» М.: «Наука» 1978, 269 стр.

3 Гулин А.В., Самарский А.А. «Численные методы» М.: «Наука» 1989, 432стр.

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


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

  • Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.

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

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

    курсовая работа [385,7 K], добавлен 15.06.2013

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

    курсовая работа [76,7 K], добавлен 18.11.2009

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

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

  • Решение системы дифференциальных уравнений переходных процессов в RLC-цепи численным методом. Анализ графиков в Excel. Расчет переходного процесса в математическом пакете MathCad по точным формулам. Разработка программы на языке программирования Pascal.

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

  • Анализ эффективности методов сортировки данных в языке Turbo Pascal. Разработка эскизного и технического проекта программы. Сортировка без и с использованием дополнительной памяти, за исключением небольшого стека (массива). Сортировка связанных списков.

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

  • Анализ предметной области объектно-ориентированного программирования. Языки Delphi, Object Pascal - объектно-ориентированная среда программирования. Основные алгоритмические решения. Решение дифференциального уравнения методом Рунге-Кутта в среде Excel.

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

  • Написание программы "телеграф", который принимает от пользователя сообщения и выводит его на экран в виде последовательности точек и тире. Их вывод сортируется звуковым сигналом соответствующей длительности. Программа написана на языке Turbo Pascal.

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

  • Программирование и структура программы на языке Turbo Pascal и MS Visual C++6.0. Вычисление площади круга. Реализация программы в системе Turbo Pascal и MS VISUAL C++6.0 для Windows. Структура окна ТРW. Сохранение текста программы в файле на диске.

    лабораторная работа [3,7 M], добавлен 22.03.2012

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

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

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