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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    670,18 Кб
  • Опубликовано:
    2013-11-21
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

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].

Полином:

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

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

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

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

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

На рисунке 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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.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»*Form1;

// -

__fastcall TForm1:TForm1 (TComponent* Owner)

: TForm(Owner)

{

}

// -__fastcall TForm1: FormActivate (TObject *Sender)

{PlaySound («D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\ Kursach.wav», 0, SND_ASYNC);W, L, t;=10; L=43;(int i=1; i<=129; i++)

{t=8; if (L<=583) {(int T=0; T<=20; T++)

{t=t++; Imagekar->Top=t; Application->ProcessMessages(); Sleep (5);}(int T=0; T<=20; T++)

{t=t-1; Imagekar->Top=t; Application->ProcessMessages(); Sleep (5);}=W+12;=L+12;>Left=L; Label1->Width=W; Application->ProcessMessages(); Sleep (10);

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

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

}->Visible=true;>Height=137; int q;(t=t; t>=40; t-)

{q=q+5;>Top=t-3; Image3->Height=q; Application->ProcessMessages(); Sleep (20);}>Visible=false;t2, t3;=Image2->Top; t2=Label1->Top;(int i=0; i<=100; i++)

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

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

} // -__fastcall TForm1: Timer1Timer (TObject *Sender)

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

{->Progress=i;(50);(CGauge1->Progress == CGauge1->MaxValue) Timer1->Enabled = false;

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

}

// -__fastcall TForm1: MaskEdit1MouseMove (TObject *Sender,Shift, int X, int Y)

{>Visible=true;

}

// -__fastcall TForm1: FormMouseMove (TObject *Sender, TShiftState Shift,X, int Y)

{>Visible=false;

}

// -__fastcall TForm1: Image1Click (TObject *Sender)

{(«D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\ 1.wav», 0, SND_ASYNC);parol=123456;->Font->Color=clBlack;s=StrToFloat (MaskEdit1->Text); if (parol==s) {->Font->Color=clGreen;->Progress=0;->MaxValue = 100; Timer1->Interval = 100; Timer1->Enabled = true;

}

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

}

// -

// -

 

 

#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»*Form2;

// -

__fastcall TForm2:TForm2 (TComponent* Owner)

: TForm(Owner)

{r;

}

// -F (float x) {0.1*x*x+log(x);

}

// -F1 (float x) {exp (-0.1*x*x);

}

// -F2 (float x) {-0.2*x*exp (-0.1*x*x);

}

// -F3 (float x) {0.2*x+(1/x);

}

// -F4 (float x) {0.2*x - (1/(x*x));

}

// -__fastcall TForm2: Edita1Change (TObject *Sender)

{(Edita1->SelStart>=1)

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

}

// -__fastcall TForm2: Editb1Change (TObject *Sender)

{(Editb1->SelStart>=1)

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

}

// -__fastcall TForm2: EditepsChange (TObject *Sender)

{(Editeps->SelStart>=1)

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

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

}

}

// -r;__fastcall TForm2: NbisClick (TObject *Sender)

{=1;->Visible=false; Label1->Visible=false; Label2->Visible=false; Label3->Visible=false;->Visible=false; Imagebis->Visible=true; Imagehord->Visible=false; Imageiter->Visible=false;>Visible=false; Edita1->Visible=true; Editx0->Visible=false; Editb1->Visible=false;->Text=»»; Editb1->Text=»»; Editx0->Text=»»; Editeps->Text=»»;>Left=440; Editeps->Visible=false; Imagea->Visible=true; Imageb->Visible=false;>Left=440; Imageeps->Visible=false; Imagex0->Visible=false; BitBtn1->Visible=true;->Visible=false; BitBtn3->Visible=false; BitBtn4->Visible=false;

}

// -__fastcall TForm2: NxordClick (TObject *Sender)

{=2;->Visible=false; Label1->Visible=false; Label2->Visible=false; Label3->Visible=false;->Visible=false; Imagebis->Visible=false; Imagehord->Visible=true; Imageiter->Visible=false;>Visible=false; Edita1->Visible=true; Editx0->Visible=false; Editb1->Visible=false;->Text=»»; Editb1->Text=»»; Editx0->Text=»»; Editeps->Text=»»; Editeps->Left=440;>Visible=false; Imagea->Visible=true; Imageb->Visible=false;>Left=440; Imageeps->Visible=false; Imagex0->Visible=false;->Visible=false; BitBtn2->Visible=true; BitBtn3->Visible=false; BitBtn4->Visible=false;

}

// -__fastcall TForm2: NiterClick (TObject *Sender)

{=3;->Visible=false; Label1->Visible=false; Label2->Visible=false; Label3->Visible=false;->Visible=false; Imagebis->Visible=false; Imagehord->Visible=false; Imageiter->Visible=true;>Visible=false; Edita1->Visible=false; Editx0->Visible=false; Editb1->Visible=false;->Text=»»; Editb1->Text=»»; Editx0->Text=»»; Editeps->Text=»»; Editeps->Left=8;>Visible=true; Imagea->Visible=false; Imageb->Visible=false; Imageeps->Left=8;>Visible=true; Imagex0->Visible=false;->Visible=false; BitBtn2->Visible=false; BitBtn3->Visible=true; BitBtn4->Visible=false;

}

// -__fastcall TForm2: NnutClick (TObject *Sender)

{r=4;->Visible=false; Label1->Visible=false; Label2->Visible=false; Label3->Visible=false;->Visible=false; Imagebis->Visible=false; Imagehord->Visible=false; Imageiter->Visible=false; Imagenut->Visible=true; Edita1->Visible=false; Editx0->Visible=false; Editb1->Visible=false;->Text=»»; Editb1->Text=»»; Editx0->Text=»»; Editeps->Text=»»;>Left=8; Editeps->Visible=true; Imagea->Visible=false; Imageb->Visible=false;>Left=8; Imageeps->Visible=true; Imagex0->Visible=false;->Visible=false; BitBtn2->Visible=false; BitBtn3->Visible=false; BitBtn4->Visible=true;

}

// -__fastcall TForm2: BitBtn1Click (TObject *Sender)

{a1=StrToFloat (Edita1->Text);b1=StrToFloat (Editb1->Text);eps=StrToFloat (Editeps->Text);c1; int i1=0;

{++;=(a1+b1)/2;(F(a1)*F(c1)<0) b1=c1;a1=c1;

}(fabs(a1-b1)>=e);(«D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\Основная программа 2\\Sta.wav», 0, SND_ASYNC);->Visible=true;>ProcessMessages();(550);->Visible=true; Label2->Visible=true; Label3->Visible=true; Label4->Visible=true;->Font->Color=clSilver; Label2->Font->Color=clSilver; Label3->Font->Color=clSilver;->Font->Color=clSilver;->Caption= «i=»;->Caption= «e=»;->Caption=i1;->Caption=SimpleRoundTo (c1, -5);>ProcessMessages();(750);->Font->Color=clBlack; Label2->Font->Color=clBlack; Label3->Font->Color=clBlack;->Font->Color=clBlack;->Caption= «i=»;->Caption= «e=»;->Caption=i1;->Caption=SimpleRoundTo (c1, -5);

}

// -__fastcall TForm2: BitBtn2Click (TObject *Sender)

{x0, x1;a2=StrToFloat (Edita1->Text);b2=StrToFloat (Editb1->Text);e=StrToFloat (Editeps->Text); int i1=0;(F(a2)<0) x0=a2; else x0=b2;=x0;

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

}(fabs (x1-x0)>e);(«D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\Основная программа 2\\Sta.wav», 0, SND_ASYNC);->Visible=true;>ProcessMessages();(550);->Visible=true; Label2->Visible=true; Label3->Visible=true; Label4->Visible=true;->Font->Color=clSilver; Label2->Font->Color=clSilver; Label3->Font->Color=clSilver;->Font->Color=clSilver;->Caption= «i=»; Label4->Caption= «e=»; Label1->Caption=i1;->Caption=SimpleRoundTo (x1, -5);>ProcessMessages();(550);->Font->Color=clBlack; Label2->Font->Color=clBlack; Label3->Font->Color=clBlack;->Font->Color=clBlack;->Caption= «i=»; Label4->Caption= «e=»; Label1->Caption=i1;->Caption=SimpleRoundTo (x1, -5);

}

// -__fastcall TForm2: BitBtn3Click (TObject *Sender)

{i1=0;x0=StrToFloat (Editx0->Text);e=StrToFloat (Editeps->Text);x1;=x0;{++;=x1;=F1 (x0);}(fabs (x1-x0)>e);(«D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\Основная программа 2\\Sta.wav», 0, SND_ASYNC);->Visible=true;>ProcessMessages();(550);->Visible=true;->Visible=true;->Visible=true;->Visible=true;->Font->Color=clSilver; Label2->Font->Color=clSilver; Label3->Font->Color=clSilver;->Font->Color=clSilver;->Caption= «i=»; Label4->Caption= «e=»; Label1->Caption=i1;->Caption=SimpleRoundTo (x1, -5);>ProcessMessages();(750);->Font->Color=clBlack; Label2->Font->Color=clBlack; Label3->Font->Color=clBlack;->Font->Color=clBlack;->Caption= «i=»; Label4->Caption= «e=»; Label1->Caption=i1;->Caption=SimpleRoundTo (x1, -5);

// -__fastcall TForm2: BitBtn4Click (TObject *Sender)

{i1=0; float x1; float e=StrToFloat (Editeps->Text);x0;:x0=StrToFloat (Editx0->Text); if (F(x0)*F4 (x0)<0) {=x0;

{++;=x1;=x0 - (F(x0)/F3 (x0));}(fabs (x1-x0)>e);(«D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\Основная программа 2\\Sta.wav», 0, SND_ASYNC);->Visible=true;>ProcessMessages();(550);->Visible=true;->Visible=true;->Visible=true;->Visible=true;->Font->Color=clSilver; Label2->Font->Color=clSilver; Label3->Font->Color=clSilver;4->Font->Color=clSilver.

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

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

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

Похожие работы на - Временная функция

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!