Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

О.О.П / lab_ 17 / 17 ind / Unit1

.cpp
Скачиваний:
1
Добавлен:
30.05.2020
Размер:
2.35 Кб
Скачать
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include "Unit1.h"
typedef double (*type_f)(double);
double fun(double);
double Simps(type_f, double, double, int);

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
//---------- Текст функции-обработчика кнопки РАСЧЕТ --------------------
double a, b, x, eps, h, Int1, Int2, pogr;
int n, n1;
a = StrToFloat(Edit1->Text);
b = StrToFloat(Edit2->Text);
eps = StrToFloat(Edit3->Text);
n = StrToFloat(Edit4->Text);
h = (b - a)/100; // Шаг вывода исходной функции
Chart1->Series[0]->Clear();
for(x = a-h; x< b+h; x+=h)
Chart1->Series[0]->AddXY(x,fun(x));
switch(RadioGroup1->ItemIndex)   {
	case 0:
Memo1->Lines->Add("Расчет по разбиению на n = " + IntToStr(n));
Int1 = Simps(fun,a,b,n);
break;
case 1:
n1=2;
Memo1->Lines->Add("Расчет по точности еps");
Int1 = Simps(fun,a,b,n1);
do {
n1*=2;
Int2 = Simps(fun,a,b,n1);
pogr = fabs(Int2-Int1);
Int1 = Int2;
} while(pogr > eps);
Memo1->Lines->Add("При n = " +IntToStr(n1));
break;
}
Memo1->Lines->Add("Значение интеграла = " + FloatToStrF(Int1,ffFixed,8,6));

}
//---------------------------------------------------------------------------
  //------------------------- Метод Симпсона -------------------------------
double Simps(type_f f, double a, double b, int n) {
double s=0,h,x;
h=(b-a)/n;
x=a;
for(int i=1; i<=n; i++)  {
s+=f(x)+4*f(x+h/2)+f(x+h);
x+=h;
}
return s*h/6;
}
//----------------- Подынтегральная функция f(x) ---------------------
double fun(double x) {
return x*x*x - 5*x*x; // На интервале [-2, 5] значение -617.42
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{ Memo1->Clear(); RadioGroup1->ItemIndex=0; 
Edit1->Text="-2"; Edit2->Text="5";Edit3->Text="0,2";Edit4->Text="1";
}
//---------------------------------------------------------------------------



















Соседние файлы в папке 17 ind
  • #
    30.05.20201.07 Кб1Project1.cpp
  • #
    30.05.2020422.96 Кб1Project1.obj
  • #
    30.05.2020876 б2Project1.res
  • #
    30.05.2020917.5 Кб1Project1.tds
  • #
    30.05.20203.64 Кб1Project1.~bpr
  • #
    30.05.20202.35 Кб1Unit1.cpp
  • #
    30.05.202051 б1Unit1.ddp
  • #
    30.05.20204.07 Кб1Unit1.dfm
  • #
    30.05.20201.34 Кб1Unit1.h