Построение временной функции

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

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

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

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

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

2

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

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

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

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

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

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

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

Тема

Построение временной функции

Минск 2011

Введение

программа временная функция

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

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

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

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

Язык Паскаль постоянно совершенствовался. Для персональных компьютеров появились революционные по своей сущности компиляторы с языка Паскаль для 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 с;

x - корень нелинейного уравнения tgx-1/3(tgx)+1/5(tgx)-1/3=0, которое надо решить методом Ньютона с точностью , при начальном значении корня, лежащего в диапазоне [0;0.8]; m-наименьший по абсолютному значению корень квадратного уравнения

az+bz+c= 0

При a=1,5

b=2

c=-2

Коэффициенты a = 1.5, b = 4.3, d = sin 60.

2.Описание методов решения

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

Суть метода простой итерации состоит в том, что уравнение 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.2 Схема Горнера

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

Полином:

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

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

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

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

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

Идентификаторы

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

a1, b1,с1

Коэффициенты квадратного уравнения

z1,z2

Корни квадратного уравнения

m

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

е

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

x

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

x0

Начальное приближение

t

Время

y

Значение временной функции

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

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

начало

нет

да

4.2 Схема Горнера

начало

a,m,l,n

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

начало

Решение квадратного уравнения

Метод простых

итераций

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

конец

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

{$N+}

program Kursovoj;

uses crt,dos,graph;

const

MAXLEV=5;{ максимально возможный уровень сложности }

CURLEV=3;{ текущий уровень сложности }

K_ENTER=13;

K_ESC=27;

e=1e-3;

k=5; {kol-vo rezhimov}

NameRegime: array [1..k]of string[36] =

('1 - reshenie kvadratnogo yravnenija',

'2 - reshenie nelinejnogo yravnenija',

'3 - metod Gornera',

'4 - Grafik',

'5 - Vyxod');

type

ArOfint=array[1..MAXLEV]of integer;

Var

I,j : byte;

y,d,r,v,x,x0,a,b,a1,b1,c1,z,m:real;

n,t,gd,gm,h:integer;

t0:word;

Procedure zastavka;

const max =50;

xs = [27,28,29,31,32,33,35,36,37,39,40,41,43,44,45,47,48,49,51,52,53];

ys = [22,23,24,25,26];

xy: array[1..55,1..2] of integer =

((27,22),(27,23),(27,24),(27,25),(27,26),(28,22),(29,22),(29,23),(29,24),(29,25),(29,26),

(31,23),(31,24),(31,25),(32,22),(32,26),(33,23),(33,24),(33,25),

(35,22),(35,23),(35,24),(35,25),(35,26),(36,22),(36,24),(36,26),(37,23),(37,25),

(39,22),(40,22),(40,23),(40,24),(40,25),(40,26),(41,22),

(47,23),(47,24),(47,25),(48,22),(48,26),(49,23),(49,24),(49,25),

(51,23),(52,22),(53,23),(53,24),(52,25),(51,26),(52,26),(53,26),

(43,24),(44,24),(45,24));

type matx= record

s: string[255];

x,y,l: integer;

end;

var

sym: array[1..max] of matx;

a,b,n:integer;

c1,c2,c3: byte;

procedure writex(x,y: integer; s: string);

var i,d: integer;k:longint;

begin for k:= 1 to 100000 do;

for i:=0 to length(s)-1 do

if ((i+y)<50)and((i+y)>0) then

begin

gotoxy(x,i+y);

if odd(random(2)) then textcolor(c1)

else textcolor(c2);

{ for d:=1 to 55 do

if (x=xy[d,1])and((y+i)=xy[d,2]) then begin textbackground(c3);

textcolor(c3);end; }

{ delay(2);}

write(s[i+1]);

{ textbackground(black);}

end;

end;

procedure init;

var i,j:integer;

begin

c1:=lightgreen;

c2:=green;

c3:=white;

textmode(c80+font8x8);

highvideo;

clrscr;

randomize;

for i:=1 to max do begin

sym[i].l:=random(20)+200;

for j:=0 to sym[i].l do sym[i].s[j]:=chr(random(143)+32);

sym[i].x:=random(80)+1;

sym[i].y:=-random(100);

end;

end;

begin

init;

for a:=1 to max do

with sym[a] do begin

writex(x,y,' '+s);

end;

{ delay(1); {150}

y:=y+1;

if y>50 then begin

x:=random(80)+1;

y:=-random(100);

end;

delay(65000);

end;

Procedure nelinyr;

{----AAA---}

function f1(a:extended):extended;

var k:real;

begin

k:=sin(a)/cos(a);

f1:=arctan(1/3*(k*k*k)-1/5*(k*k*k*k*k)+1/3)

end;

function f2(a:extended):extended;

var k,g:real;

begin

k:=sin(a)/cos(a);

g:=cos(a)/sin(a);

f2:=-g+k-(k*k*k);

end;

function f(a:extended):extended;

var k:real;

begin

k:=sin(a)/cos(a);

f:=k-1/3*(k*k*k)+1/5*(k*k*k*k*k)-1/3;

end;

{---AAAA---}

begin

{----- reshenie nelinejnogo yravnenija -----}

clrscr;

writeln(' //____ Reshenie nelinejnogo yravnenija ____//');

writeln;

writeln(' Trebuetsa reshit nelinejnoe yravnenie metodom prostoj iteracii ');

writeln(' s zadannoj tochnostju e = ',e:4:3);

writeln(' ----------------------------------------------¬');

writeln('Nelinejnoe yravnenie imeet vid :¦tg(x) - 1/3(tg(x)^3) + 1/5(tg(x)^5) - 1/3 = 0¦');

writeln(' L----------------------------------------------');

writeln('Введите границы отрезка изолирующего корень');

write(' a = ');readln(x0);

write(' b = ');readln(b);

writeln;

if (f(x0)*f(b)<0) and (f2(x0)<1) then begin

repeat

x:=f1(x0); x0:=x;

n:=n+1;

until

abs(f(x))<e;

writeln(' г========¬');

writeln('Koren nelinejnogo yravnenija raven ¦x = ',x:3:2,'¦');

writeln(' L========-');

writeln('Kolichestvo proizvedennyx iteracij n = ',n);

writeln('Znachenie fynkcii v tochke X ravno f(x) = ',f(x):3:6);end

else

writeln('Фиг вам');

writeln;

writeln(' //_________________________________________//');

readkey;

writeln('privet expertint');

readkey;

end;

Procedure kvyravn;

begin

clrscr;

{----- reshenie kvadratnogo yravnenija ------}

writeln(' //____ Reshenie kvadratnogo yravnenija ____//');

writeln;

writeln('vvedite koeficienti a1,b1,c1');

write('a1 = '); readln(a1);

write('b1 = '); readln(b1);

write('c1 = '); readln(c1);

Writeln;

Writeln(' -------------------------¬');

Writeln('Kvadratnoe yravnenie imeet vid : ¦ a1*z^2 + b1*z + c1 = 0 ¦');

Writeln(' L-------------------------');

writeln('Diskreminant raven : - d = b1^2 - 4*a1*c1 - , gde a1,b1,c1 - koeficienti; ' );

writeln(' d - diskreminant.' );

d:=sqr(b1)-4*a1*c1;

Writeln(' - d = ',d:0:0,' -');

if d>=0 then begin

z:=((-b1)+sqrt(d))/(2*a1);

v:=((-b1)-sqrt(d))/(2*a1);

Writeln;

writeln(' Korni kvadratnogo yravnenija :');

writeln(' г============¬');

writeln(' ¦ z1 = ',z:4:3,' ¦');

writeln(' ¦ z2 = ',v:0:0, ' ¦');

m:=z;

writeln(' L============-');

end;

if abs(z)>abs(v) then

m:=v;

Writeln;

writeln(' г---------------¬');

writeln('Naimen6ii po modulu koren kv. yr-ija : - m = z = ',m:4:3,' -');

writeln(' L----------------');

writeln(' //__________________________________________//');

readkey;

end;

Procedure Graffik;

begin

clrscr;

gd:=detect;

initgraph(gd,gm,'');

line(0,240,640,240);

line(320,0,320,480);

t0:=0;

while t0<=20 do begin

y:=abs(1.5*t0*t0*t0+4.3*t0*t0+(sqrt(3)/2)*t0+x+m);

h:=round(y/20);

delay(250);

putpixel(t0*2+320,240-h,15);

t0:=t0+0.001;

end;

writeln('graffik');

end;

Procedure gorner;

begin

clrscr;

r:=0.5;

t:=0;

d:=(sqrt(3))/2;

writeln(' //____________Tablica Gornera____________//');

writeln;

writeln(' г============T============¬');

for t:=0 to 20 do begin

r:=t/2;

y:=abs(a*r*r*r+b*r*r+d*r+x+m);

write(' ¦t = ',r:4:1);

writeln (' ¦ y = ', y:6:2,'¦');

end;

writeln(' L============¦============-');

writeln;

writeln(' //_________________________________________//');

readkey;

end;

{---------------------------}

{---------------------------}

procedure igra;

var

igrok:ArOfint;{ комбинация игрока }

comp:ArOfint;{ комбинация компьютера }

level:integer;{ уровень сложности ¦ число цифр в числе }

nu:integer;{ угадано чисел }

nm:integer;{ из них на своих местах }

KeyCode:integer;{ код клавиши,нажатием которой игрок завершил ввод }

otl:boolean;

i:integer;

{ " получить " строку цифр у компьютера }

procedure GetComp(var a:ArOfInt;n:integer);

var

i:integer;

begin

randomize;

for i:=1 to n do

a[i]:=random(10);

if otl then begin

writeln;

write('Комбинация компьютера: ');

for i:=1 to n do write(a[i]);

writeln;

end;

end;

{ Сколько цифр угадано? }

function ugad(comp,igrok:ArOfInt;n:integer):integer;

var

u:integer;{ угадано цифр }

i,j:integer;

found:boolean;{ TRUE,если igrok[i]=comp[j]}

begin

u:=0;

for i:=1 to n do { проверим каждую цифру игрока }

begin

j:=1;

found:=FALSE;

{ будем igrok[i]последовательно сравнивать с числами

компьютера }

repeat

if igrok[i]=comp[j] then

begin

comp[j]:=-1;{ пометим найденное число }

u:=u+1;

found:=TRUE;

end

else j:=j+1;

until (j>n)or found

end;

ugad:=u;

end;

{ Сколько цифр на своих местах? }

function mesto(comp,igrok:ArOfInt;n:integer):integer;

var

m:integer;

i:integer;

begin

m:=0;

for i:=1 to n do

if comp[i]=igrok[i]

then m:=m+1;

mesto:=m;

end;

{ Процедура вводит с клавиатуры строку цифр заданной длины.}

{ Используя клавишу <BackSpace>,можно исправлять введенные цифры.}

{ Процедура завершает работу,если введено заданное количество цифр }

{ и нажата клавиша <Enter>.}

function GetIgrok(var a:ArOfint;n:integer;mes:string):integer;

var

ch:char;{ символ }

dec:integer;{ десятичный код символа }

x,y:integer;{ положение курсора }

i:integer;

code:integer;

begin

i:=1;

write(mes);

repeat

ch:=readkey;

dec:=ord(ch);

if(ch >='0') and (ch<='9') and (i<=n)

then begin

write(ch);

val(ch,a[i],code);

i:=i+1;

end

else

if(dec=8) and (i > 1)

then begin

i:=i-1;

x:=whereX;

y:=whereY;

gotoXY(x-1,y);

write(' ');

gotoXY(x-1,y);

end;

until((i>n) and (dec=K_ENTER)) or (dec=K_ESC);

getigrok:=dec;

end;{ GeIgrok }

procedure pravila(n:integer);

begin

writeln;

writeln;

writeln('Компьютер задумал число из ',n,' цифр. Вы должны его отгадать.');

writeln('После ввода очередного числа программа сообщает');

writeln('сколько цифр');

writeln('угадано, и сколько из них находятся на своих местах.');

writeln(' Например,');

writeln('если задумано число 4345 и введено 4251,');

writeln(' то угаданы две цифры,');

writeln('и одна цифра находится на своем месте.');

writeln('При вводе можно использовать <Backspace>.');

writeln(' После ввода числа');

writeln('следует нажать клавишу <Enter> или <Esc> -');

writeln(' для прекращения игры.');

writeln;

end;

begin { основная процедура }

level:=CURLEV;

otl:=FALSE;

pravila(level);{ вывести правила игры }

GetComp(comp,level);

repeat

KeyCode:=GetIgrok(igrok,level,'Ваш вариант-> ');

if KeyCode<>K_ESC then begin

nu:=ugad(comp,igrok,level);

nm:=mesto(comp,igrok,level);

writeln('Угадано:',nu,'. На своих местах:',nm);

end;

until ((nu=level) and (nm=level)) or (KeyCode=K_ESC);

if KeyCode<>K_ESC

then writeln('***ВЫ УГАДАЛИ ЧИСЛО!***')

else begin

writeln('Игра завершена по нажатию <Esc>.');

write('Задуманное число:');

for i:=1 to level do write(comp[i]);

writeln;

end;

write('Нажмите <Enter> для завершения.');

readln;

end;

{-----------------------}

{-----------------------}

Begin

clrscr;

GoToXY(200,200);

textcolor(12);

writeln('г===============================¬');

writeln('¦ KURSOVAJA RABOTA ¦');

writeln('¦ vychislenie vremennoj funkcii ¦');

writeln('L===============================-');

readkey;

Zastavka;

While true do

Begin

Clrscr;

GotoXY(24,4);{peresulka kursora v to4ku na4ala zagolovka}

Write('GLAVNOE MENU');

for j:=1 to 5 do begin

GotoXY(25,7+j);

write(nameregime[j]);end;

gotoxy(20,15);

write('Vvedite nomer rezhima i nazhmite <ENTER>');

readln(i);

case i of

1:kvyravn;

2:nelinyr;

3:gorner;

4:graffik;

5:begin clrscr;igra; halt; end;

else

begin

GotoXY(20,17);

write('takogo rezhima nety v menu. POVTORITE!!!');

delay(1000);

end;

end;

end;

END.

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

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

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

Коэффициенты квадратного уравнения:

а1=1,5; b1=2; с1= -2;

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

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

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

а= 1,5; b=4,3; d= sin60;

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

t

y

0

1

0,5

2.6

1

7.6

1,5

17

2

31

2,5

53.43

3

82.03

3,5

120.9

4

169.2

4,5

228.3

5

300

5,5

385

6

484.9

6,5

600

7

732

7,5

882

8

1051

8,5

1240

9

1450

9.5

1683

10

1939

Наименьший по абсолютному значению корень квадратного уравнения m= 0.667

Корень уравнения x=0.33

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

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

1.Тарасевич Л.А. Лекционный материал 1 курс 2005-2006гг.

2. Ю.С. Бородич, А.Н. Вальвачёв, А.И.Кузьмич Паскаль для персональных компьютеров» Минск 1991г.

3.В.А. Скляров, И.Р. Булатова «Знакомьтесь : Паскаль!» Минск, 1988г.

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


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

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

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

  • Выбор и обоснование методов составления схемы алгоритма и разработки программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Алгоритм Горнера. Программа на языке Quick BASIC (с распечаткой листинга).

    курсовая работа [55,1 K], добавлен 21.11.2012

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

    реферат [154,8 K], добавлен 15.03.2012

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

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

  • Создание программ в Borland C++ Builder 6.0. Разработка программы для построения графика временной функции, работающей, как в машинном, так и в реальном времени. Использование алгоритма Горнера для вычисления корня квадратного и нелинейного уравнений.

    контрольная работа [925,2 K], добавлен 05.01.2016

  • История создания и развитие языка программирования Pascal, его версии. Особенности и порядок построения графика функции на языке Turbo Pascal с использованием декартовой системы координат. Блок схема алгоритма процедур, листинг и тестирование программы.

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

  • Решение трансцендентного уравнения методом Ньютона. Построение графика функции. Блок-схема алгоритма решения задачи и программа решения на языке Pascal. Вычисление значения интеграла методом трапеции, блок-схема алгоритма, погрешности вычисления.

    задача [163,4 K], добавлен 16.12.2009

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

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

  • Сущность и описание симплекс-метода и улучшенного симплекс-метода (метода обратной матрицы), преимущества и недостатки их применения в линейном прогаммировании. Листинг и блок-схема программы на языке Turbo Pascal для решения математической задачи.

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

  • Построение интерполяционного полинома Ньютона по значениям функции в узлах согласно методу Лагранжа. Составление алгоритмов решения задачи, их реализация на программном уровне на языке Turbo Pascal. Представление результатов работы программы Polinom.

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

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