работа по дисциплине : «Вычислительные задачи в системах управления»

Остальные рефераты » работа по дисциплине : «Вычислительные задачи в системах управления»

Московский Государственный Университет Путей Сообщения


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


по дисциплине:

«Вычислительные задачи в системах управления»


на тему

«Решение системы обыкновенных дифференциальных уравнений»


Москва 2005 г.

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА


СОДЕРЖАНИЕ


Назначение и характеристика программы

исходные, нормативно-справочные и промежуточные данные

Математическое описание способа решения

Алгоритм решения

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

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

График функции

Заключение

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

НАЗНАЧЕНИЕ И ХАРАКТЕРИСТИКА ПРОГРАММЫ


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


y1’=-3y1+48y2-28y3

y2’=-4y1+40y2-22y3

y3’=-6y1+57y2-31y3 при а=0, b=3, y1(a)=1, y2(a)=1, y3(a)=1


Программа решает систему методом прогноза и коррекции (исправленный метод Эйлера). Точность решения ε=0.0001. Способ выбора шага – переменный шаг, выбираемый по верхней оценке остаточного члена. Характер системы – линейная автономная.


Таблица описания переменных

Обозначение в программе Описание
k Счетчик шагов интегрирования
Y1,y2.y3 Неизвестные системы
h Шаг интегрирования
sumR Методическая погрешность(суммируется на всем отрезке)
R Погрешность на одном шаге
k1,k2 Приращение функции y1 (к2 более точное чем к1)
C1,c2 Приращение функции y2 (с2 более точное чем с1)
Z1,z2 Приращение функции y3 (z2 более точное чем z1)
dmax Максимальная 3-я производная
d3y1 Третья производная функции y1
d3y2 Третья производная функции y2
x Переменная х





АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ


IV ТЕКСТ ПРОГРАММЫ

{Программа для решения систем диф.уравнений методом проб и коррекции}

{$n+}

program metod_prob_i_korrekcii;

uses

crt;

var

y1,y2,y3 : extended;

k1,c1,z1 : extended ;

k2,c2,z2 : extended;

k3,c3,z3 : extended;

k : integer; {номера шагов интегрирования}

h : real; {шаг интегрирования}

R : real; {погрешность на к-ом шаге}

sumR : real; {суммарная погрешность}

x : real; {отрезок интегрирования}

d3y1,d3y2,d3y3,dmax : extended; { 3-я производная }

print : integer;

f : text;

begin

textbackground(white);

clrscr;

y1:=1; { y1 в начале отрезка интегрирования }

y2:=1;

y3:=1;

assign(f,'c:f.txt');

rewrite(f); {результаты вычислений запишутся в текстовый файл}

repeat

d3y1:=-51*y1+552*y2-316*y3;

d3y2:=-52*y1+490*y2-274*y3;

d3y3:=-78*y1+723*y2-403*y3;

if (d3y1>d3y2)and(d3y1>d3y3)

then dmax:=d3y1

else

if (d3y2>d3y1)and(d3y2>d3y3)

then dmax:=d3y2

else dmax:=d3y3;

h:=exp((1/3)*ln(12*0.0001/dmax));

textcolor(blue);

{ writeln(k,'-ый шаг интегрирования равен ',h:1:9);}

k1:=h*(-3*y1+48*y2-28*y3); {для y1}

c1:=h*(-4*y1+40*y2-22*y3); {для y2}

z1:=h*(-6*y1+57*y2-31*y3); {для y3}


k2:=h*(-3*(y1+k1)+48*(y2+c1)-28*(y3+z1)); {для y1}

c2:=h*(-4*(y1+k1)+40*(y2+c1)-22*(y3+z1)); {для y2}

z2:=h*(-6*(y1+k1)+57*(y2+c1)-31*(y3+z1)); {для y3}


y1:=y1+((k1+k2)/2);

y2:=y2+(c1+c2)/2;

y3:=y3+(z1+z2)/2;


R:=(h*h*h)*dmax/12; {погрешность метода на одном шаге инт-ния}

textcolor(black);

sumR:=R+sumR; {суммарная погрешность}

x:=x+h;

k:=k+1;

print:=k+100;

if ((print mod 100)=0)or(k=1) {значения печатаются с шагом 80}

then

begin

{печать в текстовый файл}


writeln(f,'Y1= ',y1:0:3,' Y2=',y2:0:3,' Y3=',y3:0:3);

writeln(f,k,'-ый шаг интегрирования равен ',h:1:9);

writeln(f,' погрешность метода на ',k,'-ом шаге R=',R:1:4);

writeln(f,' X= ',x:1:3);

{печать в паскале}

writeln('Y1= ',y1:0:3,' Y2=',y2:0:3,' Y3=',y3:0:3);

writeln(k,'-ый шаг интегрирования равен ',h:1:9);

writeln(' погрешность метода на ',k,'-ом шаге R=',R:1:4);

writeln(' X= ',x:1:3);

end;

until x>=3; {конец отрезка интегрирования}

close(f);

readkey;

end.


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


Y1= 1.299 Y2=1.246 Y3=1.352

1-ый шаг интегрирования равен 0.017052522 погрешность метода на 1-ом шаге R=0.0001 X= 0.017


Y1= 124.121 Y2=110.241 Y3=161.694

100-ый шаг интегрирования равен 0.006313207 погрешность метода на 100-ом шаге R=0.0001 X= 0.996


Y1= 553.260 Y2=508.101 Y3=752.419

200-ый шаг интегрирования равен 0.003867977 погрешность метода на 200-ом шаге R=0.0001 X= 1.484


Y1= 1466.039 Y2=1372.205 Y3=2039.611

300-ый шаг интегрирования равен 0.002788804 погрешность метода на 300-ом шаге R=0.0001 X= 1.811


Y1= 3040.150 Y2=2880.244 Y3=4289.805

400-ый шаг интегрирования равен 0.002180586 погрешность метода на 400-ом шаге R=0.0001 X= 2.057


Y1= 5453.307 Y2=5209.931 Y3=7769.572

500-ый шаг интегрирования равен 0.001790200 погрешность метода на 500-ом шаге R=0.0001 X= 2.254


Y1= 8883.238 Y2=8538.993 Y3=12745.503

600-ый шаг интегрирования равен 0.001518382 погрешность метода на 600-ом шаге R=0.0001 X= 2.418


Y1= 13507.680 Y2=13045.166 Y3=19484.200

700-ый шаг интегрирования равен 0.001318231 погрешность метода на 700-ом шаге R=0.0001 X= 2.559


Y1= 19504.375 Y2=18906.192 Y3=28252.276

800-ый шаг интегрирования равен 0.001164704 погрешность метода на 800-ом шаге R=0.0001 X= 2.683


Y1= 27051.068 Y2=26299.816 Y3=39316.349

900-ый шаг интегрирования равен 0.001043208 погрешность метода на 900-ом шаге R=0.0001 X= 2.793


Y1= 36325.510 Y2=35403.788 Y3=52943.043

1000-ый шаг интегрирования равен 0.000944666 погрешность метода на 1000-ом шаге R=0.0001 X= 2.892


Y1= 47505.454 Y2=46395.860 Y3=69398.988

1100-ый шаг интегрирования равен 0.000863134 погрешность метода на 1100-ом шаге R=0.0001 X= 2.983


ЗАКЛЮЧЕНИЕ


Данная программа написании на алгоритмическом языке Turbo-Pascal.

И работает следующим образом:

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

Далее по полученным результатам строится график в Exel.


СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ


Максимов В.М. «Решение на ЭВМ систем обыкновенных дифференциальных уравнений. Методические указания к курсовой работе.» Москва, 1995 г.

Максимов В.М. лекции по дисциплине «Вычислительные задачи в системах управления», 2005 г.