Расчет корней уравнения по методу Лобачевского

Автор: Пользователь скрыл имя, 26 Марта 2011 в 18:13, курсовая работа

Краткое описание

Написать программу, выполняющую следующие действия:
• Нахождение корней алгебраического уравнения методом Лобачевского - Греффе: для случая действительных корней;
• если таких корней нет, выдать на дисплей соответствующее сообщение.

Оглавление

1. Введение………………………………………………………………………….3
2. Назначение и область применения……………………………………………..4
3. Технические характеристики…………………………………………………...4
4. Разработка программы…………………………………………………………..5
5. Текст программы………………………………………………………………...9
6. Описание программы…………………………………………………………..13
7. Тестирование программы……………………………………………………...14
8. Список литературы……………………………………………………………..16

Файлы: 1 файл

Квадрирование.doc

— 2.85 Мб (Скачать)

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 <vcl.h>

#pragma hdrstop 

#include "SDIMain.h"

#include "About.h"

#include <math.h>

#include <math.hpp>

//#include <conio.h>

#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.Список литературы. 

  1. Павловская  Т.А. С/С++. Программирование на языке  высокого уровня. Учебник. – СПб: Питер, 2001 -464с
  2. Павловская Т.А., Щупак Ю.А.  С/С++. Программирование на языке высокого уровня. Структурное программирование. Практикум. – СПб: Питер, 2002
  3. Павловская Т.А., Щупак Ю.А.  С++. Объектно-ориентированное программирование. Практикум. – СПб: Питер, 2004
  4. P. Лафоре. Объектно-ориентированное программирование в С++. 4-е издание. – СПб: Питер, 2004
  5. Демидович Б.П., Марон Н.А. Основы вычислительной математики. -  М.: Наука, 1970. – 660 с.

Информация о работе Расчет корней уравнения по методу Лобачевского