Алгоритм и программа построения графика временной функции

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

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

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

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

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

Задание
Составить схему алгоритма и программу для построения графика вре-менной функции, работающую как в машинном, так и в реальном времени. Реальное время в диапазоне () формируется таймером в виде программного модуля с метками , называемыми временем квантования.
При вычислении функции использовать алгоритм Горнера.
Функция:
,
где время изменяется от до . ;
- корень нелинейного уравнения , которое необходимо решить методом простой итерации с точностью , при начальном зна-чении корня, лежащего в диапазоне ;
= z+z- сумме корней квадратного уравнения: ; при
Коэффициенты:
Введение

С развитием промышленности возникает необходимость в автоматизации технологических процессов и производств. На данном этапе развития техники широкое применение находят роботы и робототехнические системы. Для управления производственными процессами в 70-е, 80-е годы стало возможным применение микропроцессорной техники. Развитие различных языков программирования (Fortran, Basic, Assembler, Pascal, C и т.д.) дает возможность разработки и внедрения объемных пакетов прикладных программ для управления сложными технологическими процессами и производствами. Пакеты прикладных программ дают возможность дистанционного управления и контроля сложных процессов с невозможным прямым вмешательством человека. Управляющая система намного быстрее и точнее выполняет поставленные задачи, не требуя при этом времени на отдых. Применение программного управления значительно увеличивает производительность труда. Первоначальные затраты материальных средств на установку и наладку микропроцессорного оборудования в процессе работы быстро окупаются. Это делает выгодным применение систем такого рода в производстве.

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

1. Выбор и обоснование методов

1.1 Понятие машинного и реального времени

Реализацию любой программы можно проводить по двум путям: либо в темпе быстродействия ЭВМ (с учётом быстродействия языка программирования), либо в реальном масштабе времени. При этом время задержки напрямую зависит от частоты процессора, и эта программа может наиболее объективно использоваться на той ЭВМ, для которой она была написана. Машинное время является относительным, т.к. зависит от быстродействия ЭВМ, от используемого языка, от сложности алгоритма и т.д. Исследователь должен уметь связывать последовательность результатов с реальным временем, проводить эксперимент в реальном времени. Моделирование в реальном времени дает возможность оценивать эффективность алгоритмов для работы в реальных системах.

1.2 Дискретизация времени

При исследовании блоков и систем во временной области на ЭВМ, в частности микроЭВМ, непрерывные процессы заменяются на дискретные. При этом временной интервал L представляется как совокупность дискретных интервалов:

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

,

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

1.3 Реализация временных задержек в программе

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

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

Для получения ответа необходимо решить квадратное уравнение. Надо сначала вычислить дискриминант уравнения. Затем, проанализировав величину дискриминанта найти корни уравнения и сравнив их найти наибольший.

1.5 Вычисление корня нелинейного уравнения

Чтобы найти корень нелинейного уравнения перед циклом вычисления найдём значения функции в крайних точках диапазона, если произведение этих значений меньше нуля то можно сделать вывод что корень есть, если - больше то корней нет. Если корни есть в цикле необходимо найти как среднее арифметическое крайних точек диапазона

где: a, b - крайние точки диапазона.

Затем, надо подставить значение в уравнение и сравнить значение функции в этой точке с 0 ( ) а так же сравнив модуль разности a и b с удвоенной погрешностью ( ) узнаем является ли корнем уравнения. Если является корнем уравнения, то выполняется выход из цикла и присваивается, это значение возвращается в основную программу. Если не является корнем уравнения то находим произведение если это произведение меньше 0 то делаем вывод , если больше 0 то и снова возвращаемся к началу цикла.

1.6 Вычисление значения многочлена

Вычисление значения многочлена с фиксированной старшей степенью аргумента может быть организовано с помощью функции пользователя. Но этот способ нецелесообразен в случаях, когда многочлен имеет много слагаемых или старшая степень не является фиксированной. Тогда можно воспользоваться алгоритмом Горнера. Он состоит в том, чтобы организовать цикл, выполняющийся количество раз, равное старшей степени аргумента. В цикле выполняется приращение функции , где х - аргумент, аn - массив из коэффициентов при х, первый член которого находится при х старшей степени. Для вычисления многочлена по этому алгоритму требуется задать х и массив коэффициентов аn.

2. Переменные программы

Имя переменной

Коэффициент

Пояснения

A

a

Коэффициент функции

B

b

Коэффициент функции

C

c

Коэффициент функции

A1

a1

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

B1

b1

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

C1

c1

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

g

g

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

d

d

Сумма корней квадратного уравнения

3. Разработка схем алгоритмов, основной программы и подпрограмм

3.1 Схема алгоритма основной программы

В основной программе не выполняется множество существенных вычислений. Ведь задача основной программы -- одготовить данные и запустить нужный модуль для их обработки.

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

3.2 Описание подпрограмм

Процедура Titul. Вывод титульного листа

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

Функция Gorner. Вычисляет значение многочлена по схеме Горнера.

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

Процедура MassK. Строит массив коэффициентов временной функции.

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

Процедура MassY. Строит массив значений временной функции.

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

Процедура Rezultat. Вывод полученных значений на экран.

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

Процедура Tim. Временная задержка при построении графика функции.

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

Процедура Graph.

Этот модуль используется для вывода графика функции в машинном и в реальном времени. Именно выбранный метод организации временных задержек предопределил появление двух модулей вместо одного. В модуле осуществляется выбор машинного или реального времени, выбирается масштаб графика, чертятся оси координат и таблица. Затем следуют циклические обращения к модулю Tim (для построения графика в реальном времени). Все линии, в том числе и кривая, прочерчены оператором LINE.

4. Распечатка исходных и промежуточных значений

Исходные данные:

, , .

.

Значения коэффициентов временной функции:

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

t= 0 => Y(t)= 1.510833

t= .25 => Y(t)= .3248954

t= .5 => Y(t)= 1.301667

t= .75 => Y(t)= 3.62198

t= 1 => Y(t)= 6.889167

t= 1.25 => Y(t)= 11.35635

t= 1.5 => Y(t)= 17.27667

t= 1.75 => Y(t)= 24.90323

t= 2 => Y(t)= 34.48917

t= 2.25 => Y(t)= 46.28761

t= 2.5 => Y(t)= 60.55167

t= 2.75 => Y(t)= 77.53448

t= 3 => Y(t)= 97.48917

t= 3.25 => Y(t)= 120.6689

t= 3.5 => Y(t)= 147.3267

t= 3.75 => Y(t)= 177.7157

t= 4 => Y(t)= 212.0892

t= 4.25 => Y(t)= 250.7001

t= 4.5 => Y(t)= 293.8017

t= 4.75 => Y(t)= 341.647

t= 5 => Y(t)= 394.4892

t= 5.25 => Y(t)= 452.5814

t= 5.5 => Y(t)= 516.1767

t= 5.75 => Y(t)= 585.5283

t= 6 => Y(t)= 660.8892

t= 6.25 => Y(t)= 742.5126

t= 6.5 => Y(t)= 830.6517

t= 6.75 => Y(t)= 925.5595

t= 7 => Y(t)= 1027.489

Заключение
Мировой и отечественный опыт подготовки специалистов в области компьютерной науки и компьютерной инженерии подтверждает целесо-образность и эффективность понимания основ программирования на более простых и базирующих языках программирования, одним из которых является Basic. На примере данной программы, написанной на языке Basic, показан несложный вычислительный процесс, позволяющий обеспечить построение графика временной функции, работающий как в машинном, так и в реальном времени.
Список использованных источников
1. Jr. Ruder, C. Millsap. «BASIC for the IBM PC»: пер. с англ. - М.: «Радио и связь», 1991.
2. Пособие по математике для поступающих в ВУЗы./Под ред. Г.Н. Яковлева. - М.: «Наука», 1985.
3. Языки BASIC В.К. Алиев “СОЛОН - P” М., 2000.
Приложение
Листинг программы.
Компоновка программы (с распечаткой листинга)
Программа написана на языке Quick BASIC, что позволило вынести все подпрограммы за пределы основной программы, не выделяя их в отдельные файлы. Листинг каждой подпрограммы можно увидеть, выбрав в меню VIEW опцию SUBS… и затем название нужной подпрограммы.
Далее приводятся листинги основной программы и подпрограмм.
Листинг основной программы

г==================¬

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

L==================-

DECLARE SUB Titul ()

DECLARE SUB RootSum ()

DECLARE SUB Uravnenie ()

DECLARE SUB MassK ()

DECLARE SUB MassY ()

DECLARE FUNCTION Gorner (t)

DECLARE SUB Graf ()

DECLARE SUB Tim ()

DECLARE SUB Rezultat ()

DIM SHARED d, g, t0, tkon, tk AS SINGLE, k(1 TO 4) AS SINGLE

DIM SHARED Y(0 TO 30) AS SINGLE

CLS

Titul

RootSum

Uravnenie

MassK

MassY

Graf

Rezultat

END

'----------Вычисление значений многочлена по схеме Горнера-------------

FUNCTION Gorner (t)

Y = 0

FOR i = 1 TO 4

Y = Y * t + k(i)

NEXT i

Gorner = Y

END FUNCTION

'-------------------------Вывод графика-----------------------------------

SUB Graf

DIM t AS SINGLE, i AS SINGLE, j AS SINGLE

30 CLS

COLOR 9

LOCATE 9, 25

PRINT " Построение графика:"

PRINT

PRINT "1) - в реальном времени"

PRINT

PRINT "2) - в машинном времени"

PRINT

INPUT "Введите № варианта: ", v

IF v <> 1 AND v <> 2 THEN 30

SCREEN 12

CLS

t = tkon

'Определение масштаба по оси

x0 = 80

y0 = 80

Mx = (640 - 4 * x0) / (t / tk)

My = (480 - 2 * y0) / ABS(Gorner(t))

'Вертикальная разметка

FOR i = 1 TO t

LOCATE 27, (9 + 5.8 * i)

PRINT i

NEXT i

LINE (x0, y0 - 20)-(x0, 488 - y0), 5

LINE (x0, y0 - 20)-(x0 - 4, y0 - 5), 5

LINE (x0, y0 - 20)-(x0 + 4, y0 - 5), 5

FOR i = x0 + Mx TO 640 - 3 * x0 STEP Mx

LINE (i, y0 + 8)-(i, 488 - y0), 8

NEXT i

'Горизональная разметка

k = 0

FOR i = 6 TO 24 STEP 2

LOCATE i, 5

j = (320 - 32 * k) / My

PRINT INT(j)

k = k + 1

NEXT i

LINE (x0, 488 - y0)-(640 - 3 * x0 + 2 * Mx, 488 - y0), 5

LINE (640 - 3 * x0 + Mx, 488 - y0 + 4)-(640 - 3 * x0 + 2 * Mx, 488 - y0), 5

LINE (640 - 3 * x0 + Mx, 488 - y0 - 4)-(640 - 3 * x0 + 2 * Mx, 488 - y0), 5

FOR i = y0 + (Mx / 2) TO 472 - y0 + Mx STEP Mx

LINE (x0, i)-(640 - 3 * x0, i), 8

NEXT i

COLOR 11

LOCATE 3, 2

PRINT "График временной функции: y =¦a•t^3 + b•t^2 + c•t + d + g¦"

LOCATE 4, 17

PRINT "Масштаб: по t ="; tk; ", по Y ="; Mx / My;

COLOR 11

LOCATE 27, 9: PRINT "0"

LOCATE 5, 9: PRINT "Y"

LOCATE 27, 55: PRINT "t"

'построение графика

COLOR 9

PSET (x0 + Mx * t0, 488 - y0 - My * ABS(Gorner(t0))), 5

FOR j = t0 + tk / Mx TO tkon STEP tk / Mx

LINE -(x0 + Mx * (j / tk), 488 - y0 - My * ABS(Gorner(j))), 5

NEXT j

LINE (480, 0)-(480, 480), 5

FOR j = t0 TO tkon - tk STEP tk

CIRCLE (x0 + Mx * (j / tk), 488 - y0 - My * ABS(Gorner(j))), 1, 2

CIRCLE (x0 + Mx * (j / tk), 488 - y0 - My * ABS(Gorner(j))), 2, 2

LOCATE 1 + (j / tk), 62

PRINT "t="; j

LOCATE 1 + (j / tk), 72

PRINT "y="; FIX(ABS(Gorner(j)))

'для построения графика в реальном времени

IF v = 1 THEN Tim

NEXT j

CIRCLE (x0 + Mx * (j / tk), 488 - y0 - My * ABS(Gorner(j))), 1, 2

CIRCLE (x0 + Mx * (j / tk), 488 - y0 - My * ABS(Gorner(j))), 2, 2

LOCATE 1 + (j / tk), 62

PRINT ; "t="; j; " y="; FIX(ABS(Gorner(j)))

SLEEP

END SUB

'-----------------Ввод параметров временной функции-----------------------

SUB MassK

CLS

PRINT "Ввод коэффициентов временной функции:"

PRINT " y =¦a•t^3 + b•t^2 + c•t + d + g¦"

PRINT

PRINT "-------------------------------------"

INPUT "a = ", A

INPUT "b=", B

C = A + B

PRINT "c="; C

INPUT "t0 = ", t0

INPUT "tkon = ", tkon

INPUT "tk = ", tk

k(1) = A

k(2) = B

k(3) = C

k(4) = g + d

END SUB

'---------Массив вычисленных значений временной функции---------------

SUB MassY

CLS

n = (tkon - t0) / tk

FOR j = 0 TO n

Y(j) = ABS(Gorner(j * tk))

NEXT j

END SUB

'----------------------Вывод полученных значений--------------------------

SUB Rezultat

CLS

COLOR 15

LOCATE 1, 27

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

LOCATE 2, 23

PRINT "y =¦a•t^3 + b•t^2 + c•t + d + g¦:"

k = 4

FOR j = t0 TO tkon STEP tk

IF (3 + j / tk) < 27 THEN

LOCATE k + j / tk, 4: PRINT "При t ="; j

LOCATE k + j / tk, 20: PRINT "y ="; Y(j / tk)

ELSE

LOCATE k, 40: PRINT "При t ="; j

LOCATE k, 56: PRINT "y ="; Y(j / tk)

k = k + 1

END IF

NEXT j

LOCATE k + 1, 50

PRINT "Значение рассчитанных"

LOCATE k + 2, 55

PRINT "коэффициентов:"

LOCATE k + 3, 45: PRINT " a ="; k(1)

LOCATE k + 4, 45: PRINT " b ="; k(2)

LOCATE k + 5, 45: PRINT " c ="; k(3)

LOCATE k + 6, 45: PRINT " g + d ="; k(4)

LOCATE k + 7, 45: PRINT " g ="; g

COLOR 12

PRINT

END SUB

'---Подпрограмма нахождения суммы корней квадратного уравнения---

SUB RootSum

DIM a1, b1, c1 AS INTEGER

CLS

COLOR 11

PRINT "Расчёт квадратного уравнения:"

PRINT "a1*z^2 + b1*z + c1 = 0"

PRINT "-----------------------------"

PRINT "Для нахождения суммы корней d квадратного уравнения"

10 COLOR 11

PRINT "введите значенние коэффициентов a1,b1,c1:"

INPUT ; "a1=", a1

PRINT

INPUT ; "b1=", b1

PRINT

INPUT ; "c1=", c1

PRINT

diskr = b1 ^ 2 - 4 * a1 * c1

IF disrk < 0 GOTO 15

IF diskr = 0 GOTO 25

IF diskr > 0 GOTO 35

15 d = -d

z1 = -b1 / (2 * a1)

z2 = SQR(disrk) / (2 * a1)

d = z1 + z2

RETURN

25 z1 = -b1 / (2 * a1)

z2 = z1

d = z1 + z1

RETURN

35 z1 = (-b1 + SQR(diskr)) / (2 * a1)

z2 = (-b1 - SQR(diskr)) / (2 * a1)

d = z1 + z2

PRINT "Сумма корней квадратного уравнения d="; d

WHILE INKEY$ = ""

WEND

END SUB

'-----------------------------Таймер-------------------------------------

SUB Tim

DIM A AS SINGLE

A = 0

FOR l = 1 TO 3500 * tkon

A = A + EXP(1)

NEXT l

END SUB

'-----------------------Титульный лист программы--------------------------

SUB Titul

COLOR 9

LOCATE 2, 18

PRINT "Министерство образования Республики Беларусь"

LOCATE 4, 16

PRINT "Белорусский Национальный Технический Университет"

LOCATE 5, 34

PRINT "ФИТР"

LOCATE 6, 31

PRINT "кафедра РТС"

LOCATE 9, 25

PRINT "Курсовой проект по информатике"

LOCATE 10, 9

PRINT "На тему: Построение графика временной функции на языке BASIC."

LOCATE 15, 45

PRINT "Выполнил: Миткевич Д.А. "

LOCATE 16, 55

PRINT "студент группы 107412"

LOCATE 17, 45

PRINT "Проверил: Москаленко А.А."

LOCATE 23, 35

PRINT "Минск 2003"

COLOR 11

LOCATE 25

PRINT "Нажмите клавишу для продолжения"

WHILE INKEY$ = ""

WEND

END SUB

'---------Подпрограмма решения нелинейного уравнения методом простой итерации----------

SUB Uravnenie

CLS

PRINT "Нахождения корня g нелинейного уравнения"

PRINT " методом простой итерации:"

PRINT "x + cos(x^0.52 + 2) = 0"

PRINT "------------------------------------"

PRINT "Для нахождения корня g нелинейного уравнения"

PRINT

INPUT ; "введите диапазон [Xbeg;Xend] начального значения корня: [", Xbeg

INPUT ; ";", Xend

PRINT "]"

INPUT "введите точность eps=", eps

x0 = (Xbeg + Xend) / 2

X1 = x0

X2 = -COS(EXP(.52 * LOG(X1)) + 2)

WHILE ABS(X2 - X1) > eps

X1 = X2

X2 = -COS(EXP(.52 * LOG(X1)) + 2)

WEND

g = X2

PRINT

PRINT "Найденное значение корня уравнения: "

PRINT "G="; g

WHILE INKEY$ = ""

WEND

END SUB

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


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

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

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

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

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

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

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

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

    курсовая работа [41,5 K], добавлен 15.03.2012

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

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

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

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

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

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

  • Оценка неизвестной функции распределения величины или ее плотности распределения вероятности. Алгоритм основной программы, функции для построения графика исходного массива, гистограммы и графика функции Лапласа. Результат обработки сейсмического сигнала.

    курсовая работа [194,4 K], добавлен 16.12.2012

  • Cтpyктypнaя модель функционирования пapикмaxepcкoй: описание временной диаграммы и Q-схемы системы. Разработка машинной имитационной модели на специализированном языке GPSS: составление блок-схемы, детализированного алгоритма и листинга программы.

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

  • Характеристика и описание массива структур из 3-х элементов. Блок-схемы главной функции main и текст программы на языке Си. Построение графика изменения напряженности поля заряженной частицы. Таблица символических имен, работоспособность программы.

    курсовая работа [365,8 K], добавлен 02.02.2010

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