Помощь в написании студенческих работ
Антистрессовый сервис

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

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

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

Построение временной функции (реферат, курсовая, диплом, контрольная)

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

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

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

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

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

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

Тема Построение временной функции Минск 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|n+1)|

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 100 000 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 (65 000);

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))

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*z2 + b1*z + c1 = 0 ¦');

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

writeln ('Diskreminant raven : — d = b12 — 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;

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

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

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

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

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 ('При вводе можно использовать .');

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

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

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 ('Игра завершена по нажатию .');

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

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

writeln;

end;

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

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 ');

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,5

2.6

7.6

1,5

2,5

53.43

82.03

3,5

120.9

169.2

4,5

228.3

5,5

484.9

6,5

7,5

8,5

9.5

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

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

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

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

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

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

Показать весь текст
Заполнить форму текущей работой