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

 

Задание


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

При вычислении функции использовать алгоритм Горнера.

Функция:


,


где время изменяется от до . ;

- корень нелинейного уравнения , которое необходимо решить методом простой итерации с точностью , при начальном зна-чении корня, лежащего в диапазоне ;

= z+z- сумме корней квадратного уравнения: ; при

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

Введение


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

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

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


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


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


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


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

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

,


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

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


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


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


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


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


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



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

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


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


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


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


Имя переменнойКоэффициентПоясненияAaКоэффициент функцииBbКоэффициент функцииCcКоэффициент функцииA1a1Коэффициент квадратного уравненияB1b1Коэффициент квадратного уравненияC1c1Коэффициент квадратного уравненияggКорень нелинейного уравненияddСумма корней квадратного уравнения

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


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


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


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


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


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

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


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

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

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


Процедура Graph.

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

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


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

, , .

.

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

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

t= 0 => Y(t)= 1.510833 = .25 => Y(t)= .3248954 = .5 => Y(t)= 1.301667 = .75 => Y(t)= 3.62198 = 1 => Y(t)= 6.889167 = 1.25 => Y(t)= 11.35635 = 1.5 => Y(t)= 17.27667 = 1.75 => Y(t)= 24.90323 = 2 => Y(t)= 34.48917 = 2.25 => Y(t)= 46.28761 = 2.5 => Y(t)= 60.55167 = 2.75 => Y(t)= 77.53448 = 3 => Y(t)= 97.48917 = 3.25 => Y(t)= 120.6689 = 3.5 => Y(t)= 147.3267 = 3.75 => Y(t)= 177.7157 = 4 => Y(t)= 212.0892 = 4.25 => Y(t)= 250.7001 = 4.5 => Y(t)= 293.8017 = 4.75 => Y(t)= 341.647 = 5 => Y(t)= 394.4892 = 5.25 => Y(t)= 452.5814 = 5.5 => Y(t)= 516.1767 = 5.75 => Y(t)= 585.5283 = 6 => Y(t)= 660.8892 = 6.25 => Y(t)= 742.5126 = 6.5 => Y(t)= 830.6517 = 6.75 => Y(t)= 925.5595 = 7 => Y(t)= 1027.489

Заключение


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

Список использованных источников


1.Jr. Ruder, C. Millsap. «BASIC for the IBM PC»: пер. с англ. - М.: «Радио и связь», 1991.

2.Пособие по математике для поступающих в ВУЗы./Под ред. Г.Н. Яковлева. - М.: «Наука», 1985.

.Языки BASIC В.К. Алиев СОЛОН - P М., 2000.

Приложение


Листинг программы.

Компоновка программы (с распечаткой листинга)

Программа написана на языке Quick BASIC, что позволило вынести все подпрограммы за пределы основной программы, не выделяя их в отдельные файлы. Листинг каждой подпрограммы можно увидеть, выбрав в меню VIEW опцию SUBS… и затем название нужной подпрограммы.

Далее приводятся листинги основной программы и подпрограмм.

Листинг основной программы


????????????????????

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

????????????????????SUB Titul ()SUB RootSum ()SUB Uravnenie ()SUB MassK ()SUB MassY ()FUNCTION Gorner (t)SUB Graf ()SUB Tim ()SUB Rezultat ()SHARED d, g, t0, tkon, tk AS SINGLE, k(1 TO 4) AS SINGLESHARED Y(0 TO 30) AS SINGLE

Graf

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

FUNCTION Gorner (t)= 0i = 1 TO 4= Y * t + k(i)i= YFUNCTION

'-------------------------Вывод графика-----------------------------------Graft AS SINGLE, i AS SINGLE, j AS SINGLE

CLS99, 25" Построение графика:"

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

PRINT"Введите № варианта: ", vv <> 1 AND v <> 2 THEN 30

SCREEN 12= tkon

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

x0 = 80= 80= (640 - 4 * x0) / (t / tk)= (480 - 2 * y0) / ABS(Gorner(t))

'Вертикальная разметкаi = 1 TO t

LOCATE 27, (9 + 5.8 * i)ii(x0, y0 - 20)-(x0, 488 - y0), 5(x0, y0 - 20)-(x0 - 4, y0 - 5), 5(x0, y0 - 20)-(x0 + 4, y0 - 5), 5i = x0 + Mx TO 640 - 3 * x0 STEP Mx(i, y0 + 8)-(i, 488 - y0), 8i

'Горизональная разметка= 0i = 6 TO 24 STEP 2i, 5= (320 - 32 * k) / MyINT(j)= k + 1i(x0, 488 - y0)-(640 - 3 * x0 + 2 * Mx, 488 - y0), 5(640 - 3 * x0 + Mx, 488 - y0 + 4)-(640 - 3 * x0 + 2 * Mx, 488 - y0), 5(640 - 3 * x0 + Mx, 488 - y0 - 4)-(640 - 3 * x0 + 2 * Mx, 488 - y0), 5i = y0 + (Mx / 2) TO 472 - y0 + Mx STEP Mx(x0, i)-(640 - 3 * x0, i), 8i113, 2"График временной функции: y =?a?t^3 + b?t^2 + c?t + d + g?"4, 17"Масштаб: по t ="; tk; ", по Y ="; Mx / My;1127, 9: PRINT "0"5, 9: PRINT "Y"27, 55: PRINT "t"

'построение графика9(x0 + Mx * t0, 488 - y0 - My * ABS(Gorner(t0))), 5j = t0 + tk / Mx TO tkon STEP tk / Mx-(x0 + Mx * (j / tk), 488 - y0 - My * ABS(Gorner(j))), 5j(480, 0)-(480, 480), 5j = t0 TO tkon - tk STEP tk(x0 + Mx * (j / tk), 488 - y0 - My * ABS(Gorner(j))), 1, 2(x0 + Mx * (j / tk), 488 - y0 - My * ABS(Gorner(j))), 2, 21 + (j / tk), 62"t="; j1 + (j / tk), 72"y="; FIX(ABS(Gorner(j)))

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

IF v = 1 THEN Timj(x0 + Mx * (j / tk), 488 - y0 - My * ABS(Gorner(j))), 1, 2(x0 + Mx * (j / tk), 488 - y0 - My * ABS(Gorner(j))), 2, 21 + (j / tk), 62; "t="; j; " y="; FIX(ABS(Gorner(j)))

SLEEPSUB

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

PRINT " y =?a?t^3 + b?t^2 + c?t + d + g?""?????????????????????????????????????""a = ", A"b=", B= A + B"c="; C"t0 = ", t0"tkon = ", tkon"tk = ", tk(1) = A(2) = B(3) = C(4) = g + dSUB

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

SUB MassY= (tkon - t0) / tkj = 0 TO n(j) = ABS(Gorner(j * tk))

NEXT jSUB

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

SUB Rezultat151, 27

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

PRINT "y =?a?t^3 + b?t^2 + c?t + d + g?:"= 4j = t0 TO tkon STEP tk(3 + j / tk) < 27 THENk + j / tk, 4: PRINT "При t ="; jk + j / tk, 20: PRINT "y ="; Y(j / tk)k, 40: PRINT "При t ="; jk, 56: PRINT "y ="; Y(j / tk)= k + 1IFj

LOCATE k + 1, 50"Значение рассчитанных"

LOCATE k + 2, 55"коэффициентов:"k + 3, 45: PRINT " a ="; k(1)k + 4, 45: PRINT " b ="; k(2)k + 5, 45: PRINT " c ="; k(3)k + 6, 45: PRINT " g + d ="; k(4)k + 7, 45: PRINT " g ="; g12

PRINTSUB

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

SUB RootSuma1, b1, c1 AS INTEGER

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

PRINT "a1*z^2 + b1*z + c1 = 0""?????????????????????????????""Для нахождения суммы корней d квадратного уравнения"

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

INPUT ; "a1=", a1; "b1=", b1; "c1=", c1= b1 ^ 2 - 4 * a1 * c1disrk < 0 GOTO 15diskr = 0 GOTO 25diskr > 0 GOTO 35

d = -d= -b1 / (2 * a1)= SQR(disrk) / (2 * a1)= z1 + z2

z1 = -b1 / (2 * a1)= z1= z1 + z1

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

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

WHILE INKEY$ = ""SUB

'-----------------------------Таймер-------------------------------------TimA AS SINGLE= 0l = 1 TO 3500 * tkon= A + EXP(1) lSUB

'-----------------------Титульный лист программы--------------------------Titul92, 18"Министерство образования Республики Беларусь"4, 16"Белорусский Национальный Технический Университет"

LOCATE 5, 34"ФИТР"6, 31"кафедра РТС"

LOCATE 9, 25"Курсовой проект по информатике"10, 9"На тему: Построение графика временной функции на языке BASIC."

LOCATE 15, 45"Выполнил: Миткевич Д.А. "16, 55 "студент группы 107412"

LOCATE 17, 45

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

LOCATE 23, 35"Минск 2003"1125

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

WHILE INKEY$ = ""

WEND

END SUB

'---------Подпрограмма решения нелинейного уравнения методом простой итерации----------Uravnenie"Нахождения корня g нелинейного уравнения"" методом простой итерации:""x + cos(x^0.52 + 2) = 0""????????????????????????????????????""Для нахождения корня g нелинейного уравнения"; "введите диапазон [Xbeg;Xend] начального значения корня: [", Xbeg

INPUT ; ";", Xend"]""введите точность eps=", eps= (Xbeg + Xend) / 2= x0= -COS(EXP(.52 * LOG(X1)) + 2)ABS(X2 - X1) > eps= X2= -COS(EXP(.52 * LOG(X1)) + 2)

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

PRINT "G="; gINKEY$ = ""SUB


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

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ