Временная функция

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

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

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

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

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

1. Постановка задачи

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

Функция:

Где t0=0 c; tкон = 10 c; Tk =0.5 c;

е - корень нелинейного уравнения 0,1a2 + ln a = 0, которое надо решить методом простых итераций с точностью ?=0,001, при начальном значении корня, лежащего в диапазоне [1,2]; n=z+v - сумма корней системы уравнений:

при a1=5; b1=3; d1= - 4; Коэффициенты: a=0.5, m=cos30?

a2=3; b2=5; d2=7;

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

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

Полином:

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

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

Y=a0 + t(a1 + t(a2 +t(a3 +… + t(an-1 + tan)…))),

где a0, a1, a2, a3,…. an - коэффициенты полинома;

t - время.

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

На рисунке 2.1 представлена процедура вычисления полинома по схеме Горнера.

Рисунок 2.1 - Процедура вычисления полинома по схеме Горнера

3. Разработка основной программы

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

Список переменных (идентификаторов), использованных в основной программе и их характеристики представлены в таблице 3.1.

Таблица 3.1

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

Характеристика идентификатора

a

Координата начала интервала нелинейного уравнения

b

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

e

Точность вычисления нелинейного уравнения

x0

Начальное приближение корня нелинейного уравнения

i

Счетчик цикла схемы Горнера

si

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

Y

Значение функции

t

Время (аргумент функции)

Tn

Начальное значение времени аргумента функции

Tk

Конечное значение времени аргумента функции

T

Время квантования

a1, b1, d1, a2, b2, d2

Коэффициенты системы уравнений

z, v

Корни системы уравнений

n

Сумма корней системы уравнений

3.2 Блок-схемы алгоритмов

Поиск коэффициента e осуществляется с помощью решения нелинейного уравнения одним из следующих методов:

- деления отрезка пополам (биссекции);

- хорд;

- Ньютона;

- простой итерации.

На рисунке 3.2 представлена процедура решения нелинейного уравнения методом деления отрезка пополам. Предполагается, что функция f(x) непрерывна и ограничена в заданном интервале [a; b], также предполагается, что значение функции на концах интервала f(a) и f(b) имеют разные знаки, то есть f(a)*f(b)<0.

Рисунок 3.2 - Процедура решения нелинейного уравнения методом деления отрезка пополам (биссекции)

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

1) задать интервал [a; b] и точность вычисленияe;

2) проверить условие, если оно выполняется, то делить интервал пополам;

3) вычислитьf(a)*f((a+b)/2), если это значение меньше нуля, то необходимо рассмотреть интервал [a; d], иначе-интервал [d; b], где с = (a + b)/2;

4) деление отрезка выполнять до тех пор, пока не выполняется условие |a - b|<=e.

На рисунке 3.3 представлена процедура решения линейного уравнения методом хорд.

Рисунок 3.3 - Процедура решения нелинейного уравнения методом хорд

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

1) задать интервал [a; b] и точность вычисления;

2) проверить выполнение условия f(a)<0 для того чтобы присвоить приближенному значению корня x0 значение конца интервала;

3) в зависимости от выполнения условияf(a)<0 выбрать формулу расчета приближенного значения корня уравнения;

4) деление отрезка выполнять до тех пор, пока не выполняется условие |xn+1 - xn|<=e.

На рисунке 3.4 представлена процедура решения нелинейного уравнения методом Ньютона.

Рисунок 3.4 - Процедура решения нелинейного уравнения методом Ньютона

Процедура решения нелинейного уравнения методом Ньютона заключается в последовательном выполнении следующих операций:

1) выбрать приближенное значение корня x0и точность вычисленияe;

2) проверить выполнение условия сходимости|?' (xn)|<1;

3) найти значение корня уравнения путем последовательного приближения по формуле xn+1=xn-f(xn)/f' (xn).

На рисунке 3.5 представлена процедура решения нелинейного уравнения методом простой итерации.

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

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

1) выбрать приближенное значение корня x0 и точность вычисленияe;

2) проверить выполнение условия сходимости, где? (х) - функция, выраженная из данного нелинейного уравнения;

3) найти значение корня уравнения путем последовательного приближения по формуле xn+1=?(xn).

3.3 Распечатка листинга программы

#include <vcl.h>

#pragma hdrstop

#include <stdio.h>

#include «Unit1.h»

#include «Unit2.h»

#include «Unit3.h»

#include «mmsystem.h»

 // -

#pragma package (smart_init)

#pragma link «CGAUGES»

#pragma resource «*.dfm»

TForm1 *Form1;

 // -

__fastcall TForm1:TForm1 (TComponent* Owner)

: TForm(Owner)

{

}

 // -

void __fastcall TForm1: FormActivate (TObject *Sender)

{PlaySound («D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\ Kursach.wav», 0, SND_ASYNC);

int W, L, t;

W=10; L=43;

for (int i=1; i<=129; i++)

{t=8; if (L<=583) {

for (int T=0; T<=20; T++)

{t=t++; Imagekar->Top=t; Application->ProcessMessages(); Sleep (5);}

for (int T=0; T<=20; T++)

{t=t-1; Imagekar->Top=t; Application->ProcessMessages(); Sleep (5);}

W=W+12;

L=L+12;

Imagekar->Left=L; Label1->Width=W; Application->ProcessMessages(); Sleep (10);

}}

for (t=t; t<=72; t++)

{

Imagekar->Top=t; Application->ProcessMessages(); Sleep (10);

}

Image2->Visible=true;

Imagekar->Height=137; int q;

for (t=t; t>=40; t-)

{q=q+5;

Imagekar->Top=t-3; Image3->Height=q; Application->ProcessMessages(); Sleep (20);}

Imagekar->Visible=false;

int t2, t3;

t3=Image2->Top; t2=Label1->Top;

for (int i=0; i<=100; i++)

{

t2=t2-; t3=t3 -;

Image2->Top=t3; Label1->Top=t2; Application->ProcessMessages(); Sleep (15);

}

Image1->Visible=true; CGauge1->Visible=true; MaskEdit1->Visible=true;

} // -

void __fastcall TForm1: Timer1Timer (TObject *Sender)

{

for (int i=0; i<=100; i++)

{

CGauge1->Progress=i;

Sleep (50);

if (CGauge1->Progress == CGauge1->MaxValue) Timer1->Enabled = false;

}

Form2->Show ();

Form1->Hide();

PlaySound («D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\ 2.wav», 0, SND_ASYNC);

}

 // -

void __fastcall TForm1: MaskEdit1MouseMove (TObject *Sender,

TShiftState Shift, int X, int Y)

{

Imagepar->Visible=true;

}

 // -

void __fastcall TForm1: FormMouseMove (TObject *Sender, TShiftState Shift,

int X, int Y)

{

Imagepar->Visible=false;

}

 // -

void __fastcall TForm1: Image1Click (TObject *Sender)

{

PlaySound («D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\ 1.wav», 0, SND_ASYNC);

float parol=123456;

MaskEdit1->Font->Color=clBlack;

float s=StrToFloat (MaskEdit1->Text); if (parol==s) {

MaskEdit1->Font->Color=clGreen;

CGauge1->Progress=0;

CGauge1->MaxValue = 100; Timer1->Interval = 100; Timer1->Enabled = true;

}

else

{char s[40]; sprintf (s, «%s», MaskEdit1->Text); MaskEdit1->Font->Color=clRed; MaskEdit1->Text=s;}

}

 // -

 // -

#include <vcl.h>

#pragma hdrstop

#include «Unit1.h»

#include «Unit2.h»

#include «Unit3.h»

#include «math.h»

#include «Math.hpp»

#include «windows.h»

#include «mmsystem.h»

 // -

#pragma package (smart_init)

#pragma resource «*.dfm»

TForm2 *Form2;

 // -

__fastcall TForm2:TForm2 (TComponent* Owner)

: TForm(Owner)

{

int r;

}

 // -

float F (float x) {

return 0.1*x*x+log(x);

}

 // -

float F1 (float x) {

return exp (-0.1*x*x);

}

 // -

float F2 (float x) {

return -0.2*x*exp (-0.1*x*x);

}

 // -

float F3 (float x) {

return 0.2*x+(1/x);

}

 // -

float F4 (float x) {

return 0.2*x - (1/(x*x));

}

 // -

void __fastcall TForm2: Edita1Change (TObject *Sender)

{

if (Edita1->SelStart>=1)

{Editb1->Visible=true; Imageb->Visible=true;}

}

 // -

void __fastcall TForm2: Editb1Change (TObject *Sender)

{

if (Editb1->SelStart>=1)

{Editeps->Left=440; Editeps->Visible=true; Imageeps->Left=440; Imageeps->Visible=true;}

}

 // -

void __fastcall TForm2: EditepsChange (TObject *Sender)

{

if (Editeps->SelStart>=1)

{if ((r==3)|(r==4)) {Editx0->Visible=true; Imagex0->Visible=true;}

else

{Editx0->Visible=false; Imagex0->Visible=false;}

}

}

 // -

int r;

void __fastcall TForm2: NbisClick (TObject *Sender)

{

r=1;

Image5->Visible=false; Label1->Visible=false; Label2->Visible=false; Label3->Visible=false;

Label4->Visible=false; Imagebis->Visible=true; Imagehord->Visible=false; Imageiter->Visible=false;

Imagenut->Visible=false; Edita1->Visible=true; Editx0->Visible=false; Editb1->Visible=false;

Edita1->Text=»»; Editb1->Text=»»; Editx0->Text=»»; Editeps->Text=»»;

Editeps->Left=440; Editeps->Visible=false; Imagea->Visible=true; Imageb->Visible=false;

Imageeps->Left=440; Imageeps->Visible=false; Imagex0->Visible=false; BitBtn1->Visible=true;

BitBtn2->Visible=false; BitBtn3->Visible=false; BitBtn4->Visible=false;

}

 // -

void __fastcall TForm2: NxordClick (TObject *Sender)

{

r=2;

Image5->Visible=false; Label1->Visible=false; Label2->Visible=false; Label3->Visible=false;

Label4->Visible=false; Imagebis->Visible=false; Imagehord->Visible=true; Imageiter->Visible=false;

Imagenut->Visible=false; Edita1->Visible=true; Editx0->Visible=false; Editb1->Visible=false;

Edita1->Text=»»; Editb1->Text=»»; Editx0->Text=»»; Editeps->Text=»»; Editeps->Left=440;

Editeps->Visible=false; Imagea->Visible=true; Imageb->Visible=false;

Imageeps->Left=440; Imageeps->Visible=false; Imagex0->Visible=false;

BitBtn1->Visible=false; BitBtn2->Visible=true; BitBtn3->Visible=false; BitBtn4->Visible=false;

}

 // -

void __fastcall TForm2: NiterClick (TObject *Sender)

{

r=3;

Image5->Visible=false; Label1->Visible=false; Label2->Visible=false; Label3->Visible=false;

Label4->Visible=false; Imagebis->Visible=false; Imagehord->Visible=false; Imageiter->Visible=true;

Imagenut->Visible=false; Edita1->Visible=false; Editx0->Visible=false; Editb1->Visible=false;

Edita1->Text=»»; Editb1->Text=»»; Editx0->Text=»»; Editeps->Text=»»; Editeps->Left=8;

Editeps->Visible=true; Imagea->Visible=false; Imageb->Visible=false; Imageeps->Left=8;

Imageeps->Visible=true; Imagex0->Visible=false;

BitBtn1->Visible=false; BitBtn2->Visible=false; BitBtn3->Visible=true; BitBtn4->Visible=false;

}

 // -

void __fastcall TForm2: NnutClick (TObject *Sender)

{r=4;

Image5->Visible=false; Label1->Visible=false; Label2->Visible=false; Label3->Visible=false;

Label4->Visible=false; Imagebis->Visible=false; Imagehord->Visible=false; Imageiter->Visible=false; Imagenut->Visible=true; Edita1->Visible=false; Editx0->Visible=false; Editb1->Visible=false;

Edita1->Text=»»; Editb1->Text=»»; Editx0->Text=»»; Editeps->Text=»»;

Editeps->Left=8; Editeps->Visible=true; Imagea->Visible=false; Imageb->Visible=false;

Imageeps->Left=8; Imageeps->Visible=true; Imagex0->Visible=false;

BitBtn1->Visible=false; BitBtn2->Visible=false; BitBtn3->Visible=false; BitBtn4->Visible=true;

}

 // -

void __fastcall TForm2: BitBtn1Click (TObject *Sender)

{

float a1=StrToFloat (Edita1->Text);

float b1=StrToFloat (Editb1->Text);

float eps=StrToFloat (Editeps->Text);

float c1; int i1=0;

do

{

i1++;

c1=(a1+b1)/2;

if (F(a1)*F(c1)<0) b1=c1;

else a1=c1;

}

while (fabs(a1-b1)>=e);

PlaySound («D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\Основная программа 2\\Sta.wav», 0, SND_ASYNC);

Image5->Visible=true;

Application->ProcessMessages();

Sleep(550);

Label1->Visible=true; Label2->Visible=true; Label3->Visible=true; Label4->Visible=true;

Label1->Font->Color=clSilver; Label2->Font->Color=clSilver; Label3->Font->Color=clSilver;

Label4->Font->Color=clSilver;

Label3->Caption= «i=»;

Label4->Caption= «e=»;

Label1->Caption=i1;

Label2->Caption=SimpleRoundTo (c1, -5);

Application->ProcessMessages();

Sleep(750);

Label1->Font->Color=clBlack; Label2->Font->Color=clBlack; Label3->Font->Color=clBlack;

Label4->Font->Color=clBlack;

Label3->Caption= «i=»;

Label4->Caption= «e=»;

Label1->Caption=i1;

Label2->Caption=SimpleRoundTo (c1, -5);

}

 // -

void __fastcall TForm2: BitBtn2Click (TObject *Sender)

{

float x0, x1;

float a2=StrToFloat (Edita1->Text);

float b2=StrToFloat (Editb1->Text);

float e=StrToFloat (Editeps->Text); int i1=0;

if (F(a2)<0) x0=a2; else x0=b2;

x1=x0;

do

{

i1++;

x0=x1;

if (F(a2)<0) x1=x0-F(x0)*(b2-x0)/(F(b2) - F(x0));

else x1=x0-F(x0)*(x0-a2)/(F(x0) - F(a2));

}

while (fabs (x1-x0)>e);

PlaySound («D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\Основная программа 2\\Sta.wav», 0, SND_ASYNC);

Image5->Visible=true;

Application->ProcessMessages();

Sleep(550);

Label1->Visible=true; Label2->Visible=true; Label3->Visible=true; Label4->Visible=true;

Label1->Font->Color=clSilver; Label2->Font->Color=clSilver; Label3->Font->Color=clSilver;

Label4->Font->Color=clSilver;

Label3->Caption= «i=»; Label4->Caption= «e=»; Label1->Caption=i1;

Label2->Caption=SimpleRoundTo (x1, -5);

Application->ProcessMessages();

Sleep(550);

Label1->Font->Color=clBlack; Label2->Font->Color=clBlack; Label3->Font->Color=clBlack;

Label4->Font->Color=clBlack;

Label3->Caption= «i=»; Label4->Caption= «e=»; Label1->Caption=i1;

Label2->Caption=SimpleRoundTo (x1, -5);

}

 // -

void __fastcall TForm2: BitBtn3Click (TObject *Sender)

{

int i1=0;

float x0=StrToFloat (Editx0->Text);

float e=StrToFloat (Editeps->Text);

float x1;

x1=x0;

do {

i1++;

x0=x1;

x1=F1 (x0);}

while (fabs (x1-x0)>e);

PlaySound («D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\Основная программа 2\\Sta.wav», 0, SND_ASYNC);

Image5->Visible=true;

Application->ProcessMessages();

Sleep(550);

Label1->Visible=true;

Label2->Visible=true;

Label3->Visible=true;

Label4->Visible=true;

Label1->Font->Color=clSilver; Label2->Font->Color=clSilver; Label3->Font->Color=clSilver;

Label4->Font->Color=clSilver;

Label3->Caption= «i=»; Label4->Caption= «e=»; Label1->Caption=i1;

Label2->Caption=SimpleRoundTo (x1, -5);

Application->ProcessMessages();

Sleep(750);

Label1->Font->Color=clBlack; Label2->Font->Color=clBlack; Label3->Font->Color=clBlack;

Label4->Font->Color=clBlack;

Label3->Caption= «i=»; Label4->Caption= «e=»; Label1->Caption=i1;

Label2->Caption=SimpleRoundTo (x1, -5);

 // -

void __fastcall TForm2: BitBtn4Click (TObject *Sender)

{

int i1=0; float x1; float e=StrToFloat (Editeps->Text);

float x0;

L1:x0=StrToFloat (Editx0->Text); if (F(x0)*F4 (x0)<0) {

x1=x0;

do

{

i1++;

x0=x1;

x1=x0 - (F(x0)/F3 (x0));}

while (fabs (x1-x0)>e);

PlaySound («D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\Основная программа 2\\Sta.wav», 0, SND_ASYNC);

Image5->Visible=true;

Application->ProcessMessages();

Sleep(550);

Label1->Visible=true;

Label2->Visible=true;

Label3->Visible=true;

Label4->Visible=true;

Label1->Font->Color=clSilver; Label2->Font->Color=clSilver; Label3->Font->Color=clSilver;

Label4->Font->Color=clSilver.

Список литературы

1. А.Я. Архангельский. Программирование в C++ Builder 6 М: «Издательство БИНОМ», 2003

2. 1. Архангельский А.Я. C++ Builder 6. Справочное пособие. - М: «Издательство БИНОМ», 2002

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Разработка программы построения графика экспериментальных точек и полинома регрессии второй степени в среде Turbo Pascal. Блок-схемы алгоритмов используемых процедур. Листинг программы. Составление вектора свободных членов и матрицы коэффициентов.

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

  • Функция записи в сжатое представление массива. Распечатка внутреннего представления матрицы. Результат работы программы при Xm=4. Построение графика зависимости T=F(Xm) по начальному значению времени выполнения алгоритма. Запись элементов в массив.

    лабораторная работа [471,8 K], добавлен 05.12.2015

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