Реферат Расчет корней уравнения по методу Лобачевского
Работа добавлена на сайт bukvasha.net: 2015-10-28Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
Оглавление
Введение………………………………………………………………………….3
Назначение и область применения……………………………………………..4
Технические характеристики…………………………………………………...4
Разработка программы…………………………………………………………..5
Текст программы………………………………………………………………...9
Описание программы…………………………………………………………..13
Тестирование программы……………………………………………………...14
Список литературы……………………………………………………………..16
2. Назначение и область применения.
Приложение разработано для учебных целей.
3.Технические характеристики.
Написать программу, выполняющую следующие действия:
• Нахождение корней алгебраического уравнения методом Лобачевского - Греффе: для случая действительных корней;
• если таких корней нет, выдать на дисплей соответствующее сообщение.
Описание алгоритма.
Ввод данных:
коэффициентов уравнения, заданной точности
Квадрирование методом Лобачевского - Греффе
Расчет корней уравнения,
проверка знаков
нет
да
Организация входных и выходных данных.
Ввод при помощи мыши и клавиатуры;
Вывод результатов расчета на дисплей.
Выбор состава технических и программных средств.
Программа разработана в програмной среде C++Builder 2009 .
Запуск программы возможен в среде ОС семейства Windows
4. Разработка программы.
О
1
сновное окно программы
2
4
5
6
3
Номер | Компонент | Название и назначение | Событие |
1 | TForm | Расчёт корней алгебраического уравнения по методу Лобачевского Основное окно программы | |
2 | TStringGrid | Таблица ввода коэффициентов уравнения ввод коэффициентов уравнения | StringGridSetEditText |
3 | TButton | Кнопка «Расчёт корней алгебраического уравнения по методу Лобачевского» Вычисление корней уравнения | Button2Click |
4 | TEdit | Округлить до Поле ввода округления результата | Edit3Change |
5 | TEdit | Наибольшая степень уравнения Определение количества полей ввода коэффициентов в TStringGrid | Edit2Change |
6 | TMemo | Поле вывода результатов Вывод корней уравнения | |
Спецификация программы.
Обозначение | Наименование | Примечание |
sdiapp.bdsproj | Файл опций проекта | Связывает все файлы приложения |
sdiapp.cbproj | Файл проекта | Реализация программы |
sdiapp.cbproj.local | Файл ресурсов | Двоичный файл |
sdiapp.cpp | Файл проекта | Объектный код проекта |
SDIAPP.ICO | Файл проекта | Файл иконки |
SDIMAIN.h | Файл модуля 1 проекта | Заголовочный файл |
SDIMAIN.CPP | Файл модуля 1 проекта | Реализация программы |
SDIMAIN.dfm | Файл формы модуля 1 проекта | Графическая часть модулей |
ABOUT.H | Файл модуля 2 проекта | Заголовочный файл |
ABOUT.DFM | Файл формы модуля 2 проекта | Объектный код модуля |
ABOUT.CPP | Файл модуля 2 проекта | По умолчанию |
sdiapp.exe | Исполняемый скомпилированый файл | Файл запуска приложения |
Function.h | Файл модуля проекта | Реализация программы |
5. Текст программы.
SDIMAIN.cpp
//---------------------------------------------------------------------
#include
#pragma hdrstop
#include "SDIMain.h"
#include "About.h"
#include
#include
//#include
#define M 15
//double *A = new double;
//double *X = new double;
double A[M], X[M];
#include "Function.h"
int N = 0; //количество аргументов
double epsilon = 0; //приближение
int round = -15;
//---------------------------------------------------------------------
#pragma resource "*.dfm"
TSDIAppForm *SDIAppForm;
//---------------------------------------------------------------------
__fastcall TSDIAppForm::TSDIAppForm(TComponent *AOwner)
: TForm(AOwner)
{
}
//---------------------------------------------------------------------
void __fastcall TSDIAppForm::FileNew1Execute(TObject *Sender)
{
// Do nothing
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::FileOpen1Execute(TObject *Sender)
{
OpenDialog->Execute();
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::FileSave1Execute(TObject *Sender)
{
SaveDialog->Execute();
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::FileExit1Execute(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::HelpAbout1Execute(TObject *Sender)
{
AboutBox->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::Button1Click(TObject *Sender)
{
if (N !=0) {
int iter=1;
while (Lobochevsky_Root(N,iter,Memo1,StringGrid1)){
iter++;
}
if (Сheck_Marks(N, epsilon, StringGrid1,Memo1)) Print_Result(N, round,Memo1);
else { Memo1->Clear(); Memo1->Lines->Add("Корней нет");}
}
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::Edit3Change(TObject *Sender)
{
try{
if (Edit3->Text != "") epsilon = StrToFloat(Edit3->Text);
else epsilon = 0;
}
catch (...){
ShowMessage("Не верный ввод");
epsilon = 0;
Edit3->SetFocus();
}
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::CheckBox1Click(TObject *Sender)
{
if (Edit4->Visible){
Edit4->Visible = false;
round = -15;
}
else Edit4->Visible = true;
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::Edit4Change(TObject *Sender)
{
try{
if (Edit4->Text != ""){
round = StrToFloat(Edit4->Text);
round = -round;
Print_Result(N, round,Memo1);
}
else round = 15;
}
catch (...){
ShowMessage("Не верный ввод");
round = 15;
Edit4->SetFocus();
}
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::CheckBox2Click(TObject *Sender)
{
if (Edit3->Visible) {
Edit3->Visible = false;
epsilon = 0;
}
else Edit3->Visible = true;
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::MaskEdit1Change(TObject *Sender)
{
try{
if (MaskEdit1->Text != "") N = StrToInt(MaskEdit1->Text);
else N = 0;
//*A = N;
//*X = N;
N++;
if (N < 16){
StringGrid1->ColCount=N;
for (int i = 0; i < N; i++) {
StringGrid1->Cells[i][0]="A"+IntToStr(i);
}
}
}
catch (...){
ShowMessage("Не верный ввод");
N = 0;
MaskEdit1->SetFocus();
}
}
//---------------------------------------------------------------------------
Function.h
//---------------------------------------------------------------------
#include
#pragma hdrstop
#include "SDIMain.h"
#include "About.h"
#include
#include
//#include
#define M 15
//double *A = new double;
//double *X = new double;
double A[M], X[M];
#include "Function.h"
int N = 0; //количество аргументов
double epsilon = 0; //приближение
int round = -15;
//---------------------------------------------------------------------
#pragma resource "*.dfm"
TSDIAppForm *SDIAppForm;
//---------------------------------------------------------------------
__fastcall TSDIAppForm::TSDIAppForm(TComponent *AOwner)
: TForm(AOwner)
{
}
//---------------------------------------------------------------------
void __fastcall TSDIAppForm::FileNew1Execute(TObject *Sender)
{
// Do nothing
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::FileOpen1Execute(TObject *Sender)
{
OpenDialog->Execute();
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::FileSave1Execute(TObject *Sender)
{
SaveDialog->Execute();
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::FileExit1Execute(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::HelpAbout1Execute(TObject *Sender)
{
AboutBox->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::Button1Click(TObject *Sender)
{
if (N !=0) {
int iter=1;
while (Lobochevsky_Root(N,iter,Memo1,StringGrid1)){
iter++;
}
if (Сheck_Marks(N, epsilon, StringGrid1,Memo1)) Print_Result(N, round,Memo1);
else { Memo1->Clear(); Memo1->Lines->Add("Корней нет");}
}
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::Edit3Change(TObject *Sender)
{
try{
if (Edit3->Text != "") epsilon = StrToFloat(Edit3->Text);
else epsilon = 0;
}
catch (...){
ShowMessage("Не верный ввод");
epsilon = 0;
Edit3->SetFocus();
}
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::CheckBox1Click(TObject *Sender)
{
if (Edit4->Visible){
Edit4->Visible = false;
round = -15;
}
else Edit4->Visible = true;
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::Edit4Change(TObject *Sender)
{
try{
if (Edit4->Text != ""){
round = StrToFloat(Edit4->Text);
round = -round;
Print_Result(N, round,Memo1);
}
else round = 15;
}
catch (...){
ShowMessage("Не верный ввод");
round = 15;
Edit4->SetFocus();
}
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::CheckBox2Click(TObject *Sender)
{
if (Edit3->Visible) {
Edit3->Visible = false;
epsilon = 0;
}
else Edit3->Visible = true;
}
//---------------------------------------------------------------------------
void __fastcall TSDIAppForm::MaskEdit1Change(TObject *Sender)
{
try{
if (MaskEdit1->Text != "") N = StrToInt(MaskEdit1->Text);
else N = 0;
//*A = N;
//*X = N;
N++;
if (N < 16){
StringGrid1->ColCount=N;
for (int i = 0; i < N; i++) {
StringGrid1->Cells[i][0]="A"+IntToStr(i);
}
}
}
catch (...){
ShowMessage("Не верный ввод");
N = 0;
MaskEdit1->SetFocus();
}
}
//---------------------------------------------------------------------------
6.Описание программы.
Общие сведения:
1. Написана программа, выполняющая следующие действия:
• Находит корни алгебраического уравнения методом Лобачевского-Греффе: для случая действительных корней
• если таких корней нет, выдаётся на дисплей соответствующее сообщение.
Функциональное назначение:
Приложение разработано для учебных целей.
Описание логической структуры:
На вход процедуры расчета корней уравнения по методу Лобачевского подаются данные из формы ввода в виде таблицы. Процедура производит квадрирование с количеством итераций пока не происходит переполнения стека слишком большим числом. Затем происходит растет корней с количеством итераций меньших на шаг. Далее идет проверка знаков методом подстановки получившихся корней уравнения в исходное и сравнение результата с приближением (по умолчанию это ноль). При не возможности достигнуть заданного приближения выдается сообщение о не возможности найти корни уравнения.
Используемые технические средства:
Программа разработана в программной среде C++Builder 2009 ;
Запуск программы возможен в среде ОС семейства Windows.
Вызов и загрузка:
Программа запускается выполнением файла Qadrirovanie.exe
Входные данные:
Ввод данных при помощи мыши и клавиатуры;
Выходные данные:
Вывод результатов расчета на дисплей.
7
.Тестирование программы.
1. Пример расчета уравнения в среде MathCad 14.
2. Пример расчета уравнения в среде в данном проекте.
8
.Список литературы.
Павловская Т.А. С/С++. Программирование на языке высокого уровня. Учебник. – СПб: Питер, 2001 -464с
Павловская Т.А., Щупак Ю.А. С/С++. Программирование на языке высокого уровня. Структурное программирование. Практикум. – СПб: Питер, 2002
Павловская Т.А., Щупак Ю.А. С++. Объектно-ориентированное программирование. Практикум. – СПб: Питер, 2004
P. Лафоре. Объектно-ориентированное программирование в С++. 4-е издание. – СПб: Питер, 2004
Демидович Б.П., Марон Н.А. Основы вычислительной математики. - М.: Наука, 1970. – 660 с.