Помощь в написании студенческих работ
Антистрессовый сервис

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

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Существуют различные методы решения полиномов. Один из них — разложение полинома по схеме Горнера2. PlaySound («D:\Programs\Borland C++ Builder 6.0 Enterprise\Курсовой проект\Трубачев А. А\Основная программа 2\Sta.wav», 0, SND_ASYNC); PlaySound («D:\Programs\Borland C++ Builder 6.0 Enterprise\Курсовой проект\Трубачев А. А\Основная программа 2\Sta.wav», 0, SND_ASYNC); PlaySound… Читать ещё >

Временная функция (реферат, курсовая, диплом, контрольная)

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

#pragma hdrstop

#include

#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=123 456;

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

#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

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

Показать весь текст
Заполнить форму текущей работой