Алгоритм и программа построения графика временной функции
Выбор и обоснование методов составления схемы алгоритма и разработки программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Алгоритм Горнера. Программа на языке 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 "1) - в реальном времени"
PRINT "2) - в машинном времени"
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 "-------------------------------------"
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
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
INPUT ; "b1=", b1
INPUT ; "c1=", c1
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 нелинейного уравнения"
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 "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.2012Cтpyктypнaя модель функционирования пapикмaxepcкoй: описание временной диаграммы и Q-схемы системы. Разработка машинной имитационной модели на специализированном языке GPSS: составление блок-схемы, детализированного алгоритма и листинга программы.
курсовая работа [425,1 K], добавлен 02.07.2011Характеристика и описание массива структур из 3-х элементов. Блок-схемы главной функции main и текст программы на языке Си. Построение графика изменения напряженности поля заряженной частицы. Таблица символических имен, работоспособность программы.
курсовая работа [365,8 K], добавлен 02.02.2010