Временная функция

МИНИСТЕРСТВО ОБРАЗОВАНИЯ  РЕСПУБЛИКИ БЕЛАРУСЬ

БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра «ТЭС»

 

 

 

 

 

 

 

 

 

 

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

К КУРСОВОЙ РАБОТЕ

ПО ДИСЦИПЛИНЕ “Информатика”

Тема: “ Временная функция“

 

 

 

 

 

 

 

 

 

Выполнила: студентка гр.106414 Микулич Т.В.

 Руководитель:     доцент  Тарасевич  Л. А.

 

 

 

 

 

 

 

                                           

 

 

Минск   2005.

Содержание:

Введение                                                                                      3                                                  

1. Постановка задачи                                                                   4

2. Выбор и обоснование методов решения

2.1 Метод деления отрезка пополам                                         5    

2.2 Метод Ньютона                                                                      5

2.3 Метод простой итерации                                                       6

2.4  Схема Горнера                                                                       7

2.5 Метод Гаусса                                                                           7

3.Таблица идентификаторов                                                        9

4.Схемы алгоритмов

4.1 Схема алгоритма метода бисекции                                      10

4.2. Схема алгоритма метода Ньютона                                       11

4.3 Схема алгоритма  метода простой итерации                         12

4.3 Схема Горнера                                                                        13

4.4 Схема метода Гаусса                                                               14

4.5 Схема основной программы                                                   15

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

6. Результаты расчета   

6.1Исходные величины                                                                  23

6.2 Вычисленные величины                                                          23

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

 

 

 

 

 

 

Введение.

 

Алгоритмический язык “Паскаль “ был разработан профессором  ВТУ в Цюрихе  Н. Виртом. Свой алгоритмический  язык он назвал в честь французского ученого Блэза Паскаля.

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

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

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

Язык Паскаль постоянно  совершенствовался. Для персональных компьютеров появились революционные  по своей сущности компиляторы с  языка Паскаль для IBM PC (главным образом фирм Microsoft и Borland), представляющие диалоговые системы, называемые интегрированными средами (Turbo Pascal). К настоящему времени существуют ряд версий интегрированных сред языка Turbo Pascal 5.0, 5.5, 6.0, 7.0, 8.0, причем соблюдается принцип их совместимости снизу вверх.

 

 

1. Постановка задачи.

 

Составить схему алгоритма и программу для построения графика временной функции, работающую как в машинном, так и в реальном времени. Реальное время в диапазоне (t0-tкон) формируется таймером в виде программного модуля с метками Тк, называемыми временем квантования. При вычислении функции использовать алгоритм Горнера.

 

Функция:  y=│

где t0=0 с, tкон=10 с, Тк=0.5 с;                                        

p – корень нелинейного уравнения , которое надо решить методом Ньютона с точностью , при начальном значении корня, лежащего в диапазоне [0;2]; c-наибольший по абсолютному значению корень системы уравнений   

 

a1 z + b1 p = d1


a2 z + b2 p = d2 ,

 

где а1=3; b1=2; d1=2;

       a2=3; b2=3; d2=3.  

 

Коэффициенты:

 

a=1,2

b=| d-a |

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. Выбор и обоснование методов решения.

 

2.1 Метод деления отрезка пополам.

Метод деления отрезка  пополам используется для решения  нелинейных уравнений. Предполагаем, что  функция f(x) непрерывна и ограничена в заданном интервале [a; b], также предполагается, что значение функции на концах интервала f(a) и f(b) имеют разные знаки, то есть f(a)*f(b)<0. Осуществляется метод следующим образом:

    1. проверяем условие f(a)*f(b)<0;
    2. делим отрезок [a,b] пополам: c=(a+b)/2;
    3. вычисляем f(a)*f(c) и если это значение меньше нуля, то рассматриваем промежуток [a; c], иначе - [c;b];
    4. Деление отрезка выполняем до тех пор, пока не выполняется следующее условие:

            ïa – bï   <= ε, где ε – заданная точность. Любая точка из отрезка [a; b] будет подходить в качестве решения.

 

2.2 Метод Ньютона.

В данном методе осуществляется экстраполяция с помощью касательной  к кривой в данной точке. В основе лежит разложение функции f(x) в ряд Тейлора. Члены, содержащие h во второй и более высоких степенях, отбрасываются, и используется соотношение  xn+1=xn+h. Предполагается, что переход от xn к xn+1 приближает значения функции к 0. Тогда f(x1)+hf’(x1)=0  =>  h= - f(x1)/f’(x1). Таким образом, рабочая формула будет иметь вид:

Xn+1=f(Xn)/f’(Xn)

X1=f(X0)/f’(X0)

X2=f(X1)/f’(X1)

………………..

Xn+1=f(Xn)/f’(Xn)

Счёт заканчивается, когда |xn+1 - xn|<eps    или     |f(xn+1)|<eps.

 

2.3 Метод простой итерации.

 Суть метода простой итерации состоит в том, что уравнение y=f(x) заменяется на выражение x=φ(x). Условие, при котором данный процесс сходится, определяется теоремой: если интервал (a;b) является интервалом изоляции корня уравнения x=φ(x) и во всех точках данного интервала выполняется условие |φ’(x)|<1, то процесс нахождения корня данным методом будет сходящимся.

                  Алгоритм нахождения корня:

        x1= φ(x0);                 

        x2= φ(x1);

        xn= φ(xn-1);

Счёт заканчивается, когда |xn+1 - xn|<eps    или     |f(xn+1)|<eps.

 

 

 

 

2.4  Схема Горнера.

Существуют различные  методы  решения полиномов на языке PASCAL. Один из них – разложение полинома по схеме Горнера.

             Полином:

y = a0 + a1t +  a2t2+ a3t3+ a4t4+ … + antn

по схеме Горнера  представляется в виде

y = a0 + t(a1 + t(a2 +t(a3 +… + t(an-1 + t an)…)))

 

Данное разложение полинома удобно тем, что в нём отсутствует возведение в степень, что значительно ускоряет вычисление полинома.

 

 

 

2.5  Метод Гаусса.

За основу метода принята идея последовательного  исключения неизвестных и приведение СЛАУ к треугольному виду.

Дана СЛАУ :

a11 x1 + a12 x2 +…+ a1n xn = b1


a21 x1 + a22 x2 +…+ a2n xn = b2

an1 x1 + an2 x2 +…+ ann xn = bn

Алгоритм решения СЛАУ.

Предположим n=3-число уравнений.


a11 x1 + a12 x2 +…+ a13 x3 = b1                           (1)

a21 x1 + a22 x2 +…+ a23 x3 = b2          (2)

a31 x1 + a32 x2 +…+ a33 x3 = b3                  (3)

1) Если a11  <>0 (т. е. система не является вырожденной) делим первое уравнение на a11.

  1. Исключим из уравнения (2) x1. Для этого умножим уравнение (1) на коэффициент a21 и вычтем из уравнения (1) уравнение (2).
  2. Исключим из уравнения (3) x1. Для этого умножим уравнение (1) на коэффициент a31 и вычтем из уравнения (1) уравнение (3).Получили СЛАУ:

x1 + a12* x2 + a13* x3 = b1*                           (1)


0 + a22* x2 + a23* x3 = b2*          (2)

0 + a32* x2 + a33* x3 = b3*                  (3)

4)Разделим второе уравнение  на a22*.

5) Исключим из уравнения (3) x2. Для этого умножим уравнение (2) на коэффициент a32* и вычтем из уравнения (2) уравнение (3). Получили СЛАУ:

x1 + a12* x2 + a13* x3 = b1*                         


0  +  x2     +   a23** x3 = b2**         

0  + 0      +   a33** x3 = b3**                

 

Таким образом, исходная СЛАУ приведена к эквивалентной  системе треугольного вида. Преобразование исходной СЛАУ к треугольному виду называется прямым ходом. Процедура нахождения неизвестных из полученной треугольной СЛАУ осуществляется обратным ходом.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.  Таблица   идентификаторов.

 

 

 

 

 

 

 

 

Иден.

Наименование

x0,x1

Корни нелинейного уравнения

i, j

Счётчики

   p,x, g,w

Коэффициенты временной функции

t

Время

to

Начальное время

tk

Конечное  время 

fynkcia

Значение функции

с

Середина отрезка

a, b

Параметры для решения  нелинейного уравнения

eps

Точность вычисления корня




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.Схемы алгоритмов

 

4.1  Схема алгоритма метода бисекции.



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.2  Схема алгоритма метода Ньютона.



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.3  Схема алгоритма метода итераций.



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.4 Схема Горнера.



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.5 Схема метода Гаусса.



 


 




 


 



 


 

 

4.6 Основная программа



 

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

 

 

program grafik;

uses crt;

var

d:array [1..3,1..3] of real;

e:array [1..3] of real;

x,k,f,I,J,t:integer;

fynkcia,c,v,z,p,eps,x0,x1,a,b,q,g:real;

procedure timer(tk:real);

begin

delay(round(tk*20000));

end;

begin

textbackground(1);

clrscr;

X:=11;

WHILE (K<>27)AND(K<>13) DO BEGIN

textcolor (1);

if k=72 then x:=x-5;

if k=80 then x:=x+5;

if x=6 then x:=11;

if x=26 then x:=21;

clrscr;

textcolor(2);

gotoxy(30,5);

write('VYBERITE METOD RESHENIA YRAVNENIA');

textcolor(5);

gotoxy(30,10);

write('METOD ITERACII');

gotoxy(30,15);

write('METOD NEWTONA');

gotoxy(30,20);

write('METOD DELENIA OTREZKA POPOLAM');

textcolor(5);

gotoxy(30,x);

write('───────────────────────────────');

gotoxy(30,x-3);

write('───────────────────────────────');

gotoxy(29,x-3);

write('┌');

gotoxy(29,x-2);

write('│');

gotoxy(29,x-1);

write('│');

gotoxy(29,x);

write('└');

gotoxy(60,x-3);

write('┐');

gotoxy(60,x-2);

write('│');

gotoxy(60,x-1);

write('│');

gotoxy(60,x);

write('┘');

textcolor(1);

write(' ');

k:=ord(readkey);

END;

textcolor(10);

textbackground(1);

clrscr;

textcolor(9);

if x=11 then begin

gotoxy(20,5);

writeln('VVEDITE TOCHNOST');

gotoxy(10,6);write('eps=');

readln(eps);

gotoxy(10,8); writeln('VVEDITE NACHAlNOE PRIBLIGENIE');

gotoxy(10,10);write('a=');

read(a);

while f<>20 do

if abs(-0.75*a*a)<1 then begin x1:=a;f:=20; end

else

begin

writeln('VVEDITE DRYGIE ZNACHENIA');

readln(a);

end;

repeat

x0:=x1;

x1:=1.2502-0.25*x1*x1*x1

until abs(x0-x1)<=eps;

clrscr;

window(10,15,50,20);

textbackground(5);

clrscr;

window(15,16,45,19);

writeln('KOREN YRAVNENIA');

write('p=');

writeln(x1:(round(abs(ln(eps)/ln(10))))+1:(round(abs(ln(eps)/ln(10)))));

readkey;

p:=x1;

end;

if x=16 then begin

gotoxy(20,5);

writeln('VVEDITE TOCHNOST');

gotoxy(10,6);write('eps=');

read(eps);

writeln('VVEDITE NACHAlNOE PRIBLIGENIE');

read(a);

while f<>20 do

if (0.25*a*a*a+a-1.2502)*1.5*a>0 then begin x1:=a;f:=20; end

else

begin

writeln('VVEDITE DRYGIE ZNACHENIA');

readln(a);

end;

while abs(x0-x1)>eps do

begin

x0:=x1;

x1:=x1-(0.25*x1*x1*x1+x1-1.2502)/(0.75*x1*x1+1);

end;

clrscr;

window(10,15,50,20);

textbackground(5);

clrscr;

window(15,16,45,19);

writeln('KOREN YRAVNENIA');

write('p=');

writeln(x1:(round(abs(ln(eps)/ln(10))))+1:(round(abs(ln(eps)/ln(10)))));

readkey;

p:=x1;

end;

if x=21 then begin

gotoxy(20,5);

writeln('VVEDITE TOCHNOST');

gotoxy(10,6);write('eps=');

read(eps);

f:=0;

while f<>20 do begin

writeln('VVEDITE NACHALO OTREZKA');

read(a);

writeln('VVEDITE  KONEC  OTREZKA');

read(b);

if (0.25*a*a*a+a-1.2502)*(0.25*b*b*b+b-1.2502)<0 then f:=20

else write('VVEDITE DRYGIE ZNACHENIA');

       end;

while abs(a-b)>eps do begin

c:=(a+b)/2;

if (0.25*c*c*c+c-1.2502)>0 then b:=c;

if (0.25*c*c*c+c-1.2502)<0 then a:=c;

if (0.25*c*c*c+c-1.2502)=0 then begin a:=c;b:=c;end;

end;

writeln('KOREN YRAVNENIA');

write('p=');

writeln(c:(round(abs(ln(eps)/ln(10))))+1:(round(abs(ln(eps)/ln(10)))));

readkey;

p:=c;

end;

clrscr;

window(2,2,79,24);

clrscr;

writeln('VVEDITE KOEFICIENTY SISTEMY YRAVNENIY');

for i:=1 to 2 do

for j:=1 to 3 do BEGIN

IF J=1 THEN WRITE('A',I,'=');

IF J=2 THEN WRITE('B',I,'=');

IF J=3 THEN WRITE('D',I,'=');

READLN(d[I,J]); end;

for k:=1 to 2 do begin

z:=d[k,k];

for j:= k to 3 do

d[k,j]:=d[k,j]/z;

for i:=(1 +k) to 2 do begin

q:=d[i,k];

for j:=k to 3 do

d[i,j]:=d[i,j]-d[k,j]*q;

end;end;

v:=d[2,3]/d[2,2];

z:=(d[1,3]-d[1,2]*v)/d[1,1];

if abs(v)>abs(z) then g:=v

else g:=z;

writeln('NAIBOLSHYI PO ABSOLYTNOMY ZNACHENIY KOREN: ',v);

readkey;

window(2,2,79,49);

clrscr;

X:=16;

WHILE (K<>27)AND(K<>13) DO BEGIN

if k=72 then x:=x-5;

if k=80 then x:=x+5;

if x=11 then x:=16;

if x=26 then x:=21;

clrscr;

textcolor(2);

gotoxy(30,5);

write('VYBERITE VREMA POSTROENIA GRAFIKA ');

textcolor(2);

gotoxy(30,15);

write('REALNOE VREMA');

gotoxy(30,20);

write('MASHINNOE VREMA');

textcolor(2);

gotoxy(30,x);

write('───────────────────────────────');

gotoxy(30,x-3);

write('───────────────────────────────');

gotoxy(29,x-3);

write('┌');

gotoxy(29,x-2);

write('│');

gotoxy(29,x-1);

write('│');

gotoxy(29,x);

write('└');

gotoxy(60,x-3);

write('┐');

gotoxy(60,x-2);

write('│');

gotoxy(60,x-1);

write('│');

gotoxy(60,x);

write('┘');

textcolor(1);

write(' ');

k:=ord(readkey);

END;

textbackground(3);

clrscr;

window(2,2,79,40);

clrscr;

textcolor(10);

e[1]:=1.2;

e[2]:=abs(p-e[1]);

e[3]:=v+p;

writeln('┌──────────────────────────────┐');

writeln('│    t   │      fynkcia        │');

writeln(' ──────────────────────────────');

for t:=0 to 20 do begin

if x=16 then timer(0.5);

fynkcia:=0;

for i:=1 to 3 do

begin

fynkcia:=fynkcia*(t/2)+e[i];

end;

fynkcia:=abs(fynkcia);

writeln('│', (t/2):5:1,'   │',abs(fynkcia):18:3,'   │');

end;

writeln('└──────────────────────────────┘');

readkey;

end.

 

 

6. Результат расчета.

6.1 Исходные величины.

 Заданная точность:     ε=10-3

Коэффициенты системы  уравнений:

а1=3; b1=2; d1= 2;

а2= 3; b2=3; d2= 3;          

Время (начальное, конечное, квантования):

T0=0

Tk=10

Tkv=0,5

Коэффициенты временной  функции:

a=1,2; b= |d-a|;

6.2 Вычисленные величины.

t

funkcia

0

2

0,5

2,4

1

3,4

1,5

5

2

7,2

2,5

10

3

13,4

3,5

17,499

4

22

4,5

27,2

5

33

5,5

39,399

6

46,399

6,5

53,999

7

62,199

7,5

70,999

8

80,399

8,5

90,398

9

100,998

9,5

112,198

10

123,998


 

Наибольший по абсолютному значению корень системы уравнений с= 1

Корень уравнения d=1,000.

 

 

График временной  функции .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

  1. С.А. Немнюгин.     TURBOPASCAL  учебник.

                                    Санкт-Петербург, «Питер»,2001г.     

 

 




Временная функция