close

Вход

Забыли?

вход по аккаунту

?

Записка (3)

код для вставкиСкачать
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ
ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра "ТЭС"
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
К КУРСОВОЙ РАБОТЕ
ПО ДИСЦИПЛИНЕ "Информатика"
на тему: "Временная функция"
Выполнил: студент гр. 106411
Трубачёв А.А.
Руководитель: доцент
Тарасевич Л.А.
Минск 2012
Содержание
Введение......................................................................................3
1 Постановка задачи........................................................................4
2 Выбор и обоснование методов расчета...............................................4
3 Разработка основной программы......................................................5
3.1 Таблица идентификаторов ....................................................5
3.2 Блок-схемы алгоритмов .......................................................6
3.3 Распечатка листинга программы............................................11
4 Результат расчета.......................................................................25
4.1 Распечатка исходных величин...............................................25
4.2Распечатка вычисленных величин..........................................26
4.3 Распечатка диаграммы итераций............................................26
4.4 Распечатка графика функции................................................27
Список использованной литературы..................................................28
Введение
Название "C++" происходит от названия языка C, в котором унарный оператор ++ обозначает инкремент переменной.
Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр). Существует множество реализаций языка C++ для различных платформ. Например, на платформе x86 это GCC, Visual C++, Intel C++ Compiler, Embarcadero (Borland) C++ Builder и другие. C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.
Синтаксис C++ унаследован от языка C. Одним из принципов разработки было сохранение совместимости с C. Тем не менее, C++ не является в строгом смысле надмножеством C; множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико, но не включает все возможные программы на C.
C++ Builder - одна из самых мощных систем, позволяющих на самом современном уровне создавать как отдельные прикладные программы Windows, так и разветвленные комплексы, предназначенные для работы в корпоративных сетях и в Интернет. C++ Builder - это прекрасная система визуального объектно-ориентированного программирования, одинаково радующая и новичков, и ассов. Новичку она позволяет с небольшими затратами сил и времени создавать прикладные программы, которые внешне неотличимы от программ, созданных профессионалами, и удовлетворяют всем требованиям Windows.
В библиотеке визуальных компонентов C++Builder существует множество компонентов, позволяющих отображать, вводить и редактировать текстовую информацию.
В своей курсовой работе я использовал следующие компоненты :
КомпонентСтраницаОписаниеLabel (метка)StandardОтображение текста, который не изменяется пользователем. Никакого оформления текста не предусмотрено, кроме цвета метки и текста. Основное свойство - Caption.Edit (окно редактирования)StandardОтображение, ввод и редактирование однострочных текстов. Основное свойство - TextMaskEdit
(окно маскированного редактирования )
AdditionalИспользуется для форматирования данных или для ввода символов. Основные свойства - Text и EditText.LabelEdit (окно редактирования с привязанной к нему меткой)AdditionalКомбинация Edit и Label. Image (изображение)AdditionalИспользуется для отображения графикиChart (диаграммы и графики)AdditionalКомпонент, который используется для построения диаграмм и графиковButton (командная кнопка)StandardИспользуется для создания кнопок, которыми пользователь выполняет команды в приложенииBitBtn
(кнопка с графикой)Additional Используется для создания кнопок, на которых располагается битовая графика TimerWin32Используется для запуска процедур, функций и событий в указанные интервалы времениGauge (отображение хода процесса)SamplesПример компонента, используемого для создания индикатора хода процесса в виде линейки, текста или секторной диаграммыMainMenu
(главное меню)StandardИспользуется для конструирования меню
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 - сумма корней системы уравнений:
{█(a_1 v+b_1 z=d_1@a_2 v+b_2 z=d_2 )┤
при 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 - Процедура решения нелинейного уравнения методом деления отрезка пополам (биссекции)
Процедура решения нелинейного уравнения методом деления отрезка пополам (биссекции) заключается в последовательном выполнении следующих операций:
задать интервал[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 - Процедура решения нелинейного уравнения методом Ньютона
Процедура решения нелинейного уравнения методом Ньютона заключается в последовательном выполнении следующих операций:
выбрать приближенное значение корня x0и точность вычисленияe;
проверить выполнение условия сходимости|φ'(xn)|<1;
найти значение корня уравнения путем последовательного приближения по формуле xn+1=xn-f(xn)/f'(xn).
На рисунке 3.5 представлена процедура решения нелинейного уравнения методом простой итерации.
Рисунок 3.5 - Процедура решения нелинейного уравнения методом простой итерации
Процедура решения нелинейного уравнения методом простой итерации заключается в последовательном выполнении следующих операций:
выбрать приближенное значение корня x0 и точность вычисленияe;
проверить выполнение условия сходимости, гдеφ (х) - функция, выраженная из данного нелинейного уравнения;
найти значение корня уравнения путем последовательного приближения по формуле xn+1=φ(xn).
3.3 Распечатка листинга программы
// Форма 1;
#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; }
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Форма 2;
#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;
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); }
else ShowMessage("Введите другое x0!");;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::N5Click(TObject *Sender)
{
Form3->Show();
Form2->Hide();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormHide(TObject *Sender)
{
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=false; Edita1->Visible=false; Editx0->Visible=false;
Editb1->Visible=false; Editeps->Visible=false; Imagea->Visible=false; Imageb->Visible=false;
Imageeps->Visible=false; Imagex0->Visible=false; BitBtn1->Visible=false;
BitBtn2->Visible=false; BitBtn3->Visible=false; BitBtn4->Visible=false;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Форма 3;
#include <vcl.h>
#pragma hdrstop
#include "Unit3.h"
#include "Unit2.h"
#include "Unit1.h"
#include "mmsystem.h"
#include <Math.hpp>
#include <math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
: TForm(Owner)
{
float ak,aik;
int k,k1,n,n1,l,j,i;
float x[2];
float A[2][2]={5,3,3,5};
float B[2]={-4,7};
n=2;
n1=n-1;
for (k=0;k<n1;k++)
{
ak=A[k][k]; Edit1->Text=ak;
for (j=k;j<n;j++) {A[k][j]=A[k][j]/ak; Edit2->Text=A[k][j],-1;}
B[k]=B[k]/ak; k1=k+1; Edit2->Text=B[k]; Edit3->Text=k1;
for (i=k1;i<n;i++) { if (A[i][k]<0 || A[i][k]>0) { aik=A[i][k]; Edit1->Text=aik;} else continue;
B[i]=B[i]-B[k]*aik; Edit2->Text=B[i];
for (l=k;l<n;l++) {
A[i][l]=A[i][l]-A[k][l]*aik; Edit2->Text=A[i][l];}}}
k=n-1; Edit3->Text=k;
L1: x[k]=B[k]/A[k][k];
for (j=0;j<n1;j++) {
i=n-j-2; Edit1->Text=i;
B[i]=B[i]-A[i][k]*x[k];Edit2->Text=B[i];}
k=k-1; Edit2->Text=k;
if (k-1>=-1) goto L1;
n=x[0]+x[1];
}
//---------------------------------------------------------------------------
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));
}
//----------------------------------------------------------------------------
float Y(float a,float t,float m,float n,float g)
{
return t*(a*t+m)+n-e;
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Button1Click(TObject *Sender)
{ Series1->Clear();
Series2->Clear();
float z;
float m,n,e,t;
float x0,x1;
float a2=1
float b2=2
float e=0.001
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);
g=x1;
float Tn=StrToFloat(LabeledEdit1->Text);
float Tk=StrToFloat(LabeledEdit2->Text);
float T=StrToFloat(LabeledEdit3->Text);
a=0.5,m=0.866;
for (t=Tn;t<=Tk;t=t+Shag) {
z=fabs(Y(a,t,m,n,g));
Series1->AddXY(t,z);
PlaySound("D:\\Programs\\Borland C++ Builder 6.0 Enterprise\\Курсовой проект\\Трубачев А.А\\ 3.wav",0,SND_ASYNC);
Series2->AddXY(t,z);
Chart1->Refresh ();
Application->ProcessMessages();
Sleep (500);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Button2Click(TObject *Sender)
{
Series1->Clear();
Series2->Clear();
float z;
float m,n,e,t;
float x0,x1;
float a2=1
float b2=2
float e=0.001
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);
g=x1;
float Tn=StrToFloat(LabeledEdit1->Text);
float Tk=StrToFloat(LabeledEdit2->Text);
float T=StrToFloat(LabeledEdit3->Text);
a=0.5,m=0,866;
for (t=Tn;t<=Tk;t=t+Shag) {
z=fabs(Y(a,t,m,n,g));
Series1->AddXY(t,z);
Series2->AddXY(t,z);
Chart1->Refresh ();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm3::FormClose(TObject *Sender, TCloseAction &Action)
{
Form2->Show();
}
//---------------------------------------------------------------------------
4 Результат расчета
4.1 Распечатка исходных величин
Заданная точность e=10-3.
Коэффициенты системы уравнений:
a1=5; b1=3; d1= - 4; a2=3; b2=5; d2=7; Время (начальное, конечное, квантования):
t0=0 с;
tкон =10 с;
Tк=0,5с.
Коэффициенты временной функции:
a=0,5; m=0.866;
n=z+v=0,375;
4.2 Распечатка вычисленных величин
Результаты вычислений в узлах функции приведены в таблице 4.1.
Таблица 4.1
Значение tЗначение Y(t)0,000,920,500,7951,000,421,500,2052,001,082,502,2053,003,583,505,2054,007,084,509,2055,0011,585,5014,2056,0017,086,5020,2057,0023,587,5027,2058,0031,088,5035,2059,0039,589,5044,20510,0049,08
4.3 Распечатка диаграммы итераций
Результаты количества итераций, использованных в каждом методе для нахождения корня нелинейного уравнения, представлены на диаграмме (см. рисунок 4.1).
Рисунок 4.1-Количество итераций, использованных в методах
4.4 Распечатка графика функции
График функции времени, полученный в разработанной программе, изображен на рисунке 4.2.
Рисунок 4.2-График функции Y(t)
Вывод: в результате выполнения курсовой работы была построена таблица результатов и график заданной функции, найдены значения коэффициентов n и g.
Список использованной литературы
А.Я.Архангельский. Программирование в C++ Builder 6 М: "Издательство БИНОМ", 2003
1. Архангельский А. Я. C++ Builder 6. Справочное пособие. - М: "Издательство БИНОМ", 2002
2
Документ
Категория
Рефераты
Просмотров
110
Размер файла
963 Кб
Теги
записка
1/--страниц
Пожаловаться на содержимое документа