3853

Обчислення означених інтегралів

Лабораторная работа

Информатика, кибернетика и программирование

Обчислення означених інтегралів Мета роботи: вивчити методи наближених обчислень і запрограмувати алгоритми обчислення означених інтегралів. Короткі теоретичні відомості Формули прямокутників. Нехай на відрізку задана неперервна функція . Потрібно о...

Украинкский

2012-11-09

79 KB

8 чел.

Обчислення означених інтегралів

Мета роботи: вивчити методи наближених обчислень і запрограмувати алгоритми обчислення означених інтегралів.

Короткі теоретичні відомості

Формули прямокутників.

Нехай на відрізку задана неперервна функція . Потрібно обчислити інтеграл

Розіб’ємо відрізок  на n  рівних частин точками , i=0,1,…n-1, довжина кожної з яких дорівнює  . Через  позначимо значення функції  в точках  і складемо суми

 або  

            Кожна з цих сум є інтегральною сумою для  на відрізку і тому наближено виражають означений інтеграл:

                                                       (1)

                                                                  (1/)

            Ці формули називаються формулами прямокутників.

2. Формула трапецій.

                                          (3)

            3. Формула парабол (Сімпсона).

4. Формула трьох восьмих:

  Якщо в формулі Ньютона-Котеса взяти n = 3, тобто функцію f(x) замінити інтерполяційним багаточленом третього степеня, побудованим за значення функції f(x) у точках x0=a, x1=a+h, x2=a+2h, x3=b, h=(b-a )/3. то одержимо таку квадратурну формулу:

де

Ця квадратурна формула називається малою квадратурною формулою трьох восьмих. Використовуючи цю формулу, легко записати велику квадратурну формулу трьох восьмих.

Варіант 17

Обчислити інтеграл методом прямокутників, трапецій, парабол, трьох восьмих, Монте-Карло.

Заданий інтеграл обчислити наближено та точно.

1.

2.

3.

Текст програми:

//---------------------------------------------------------------------------

#include <vcl.h>

#include <math.h>

#pragma hdrstop

#include "IntegralUn.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

 : TForm(Owner)

{  }

//---------------------------------------------------------------------------

float __fastcall TForm1::func(float arg1, float arg2=0)

{

 switch(RadioGroup1->ItemIndex)

 {

   case 0: return (sin(arg1/17))/(cos(arg1/17));

   case 1: return arg2*(sin(arg1/17))/(cos(arg1/17));

   case 2: return atan(17*sin(arg1));

 }

}

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)

{

 if ((Key < '0' || Key > '9') && Key != 8 && Key != ',' && Key != '-') Key= 0;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

 int i, part = StrToFloat(Edit5->Text);

 float xa = StrToFloat(Edit1->Text),

       xb = StrToFloat(Edit2->Text),

       ya = StrToFloat(Edit4->Text),

       yb = StrToFloat(Edit3->Text),

       S=0;

 int k1=0,k2=0;

 float xh;

if(RadioGroup1->ItemIndex!=1)

{

 //ліві

 xh=(xb-xa)/part;

 for (i=0;i<part;i++)

   S+=func(xa+i*xh)*xh;

 LabeledEdit1->Text=FloatToStrF(S,ffFixed,14,6);

 //праві

 S=0;

 for (i=1;i<=part;i++)

   S+=func(xa+i*xh)*xh;

 LabeledEdit2->Text=FloatToStrF(S,ffFixed,14,6);

 //середні

 S=0;

 for (i=0;i<part;i++)

   S+=func(((xa+(i+1)*xh)+(xa+i*xh))/2)*xh;

 LabeledEdit3->Text=FloatToStrF(S,ffFixed,14,6);

 //трапеції

 S=0;

 for (i=1;i<part;i++)

   S+=func(xa+i*xh);

 S+=(func(xa)+func(xb))/2;

 S*=(xb-xa)/part;

 LabeledEdit4->Text=FloatToStrF(S,ffFixed,14,6);

 //парабола

 S=0;

 xh=(xb-xa)/(2*part);

 for (i=1;i<2*part;i++)

 {

   if (i%2) S+=4*func(xa+i*xh);

   else S+=2*func(xa+i*xh);

 }

 S+=func(xa)+func(xb);

 S*=xh/3;

 LabeledEdit5->Text=FloatToStrF(S,ffFixed,14,6);

 //три-восьмих

 S=0;

 xh=(xb-xa)/(3*part);

 for (i=1;i<3*part;i++)

 {

   if (i%3) S+=3*func(xa+i*xh);

   else S+=2*func(xa+i*xh);

 }

 S+=func(xa)+func(xb);

 S*=3/(float)8*xh;

 LabeledEdit6->Text=FloatToStrF(S,ffFixed,14,6);

 //Монте-Карло

   srand(time(NULL));

   rand();

 S=0;

 part=1000000;

 xh=(xb-xa)/(3*part);

 for (i=0;i<part;i++)

 {

   float x = (float)rand()/(float)RAND_MAX*xb+xa,

         y = (float)rand()/(float)RAND_MAX*100-50;

   if ((func(x)>=0) && (y>=0) && (y<=func(x))) k1++;

   if ((func(x)<0)  && (y<0) && (y>func(x))) k2++;

 }

 S=(xb-xa)*100*k1/part-(xb-xa)*100*k2/part;

 LabeledEdit7->Text=FloatToStrF(S,ffFixed,14,6);

}

else

{

 //Монте-Карло

   srand(time(NULL));

   rand();

 S=0;

 part=1000000;

 k1=0,k2=0;

 xh=(xb-xa)/(3*part);

 for (i=0;i<part;i++)

 {

   float x = (float)rand()/(float)RAND_MAX*xb+xa,

         y = (float)rand()/(float)RAND_MAX*yb+ya,

         z = (float)rand()/(float)RAND_MAX*100-50;

   if ((func(x,y)>=0) && (z>=0) && (z<=func(x,y))) k1++;

   if ((func(x,y)<0)  && (z<0) && (z>func(x,y))) k2++;

 }

 S=(xb-xa)*(yb-ya)*100*k1/part-(xb-xa)*(yb-ya)*100*k2/part;

 LabeledEdit7->Text=FloatToStrF(S,ffFixed,14,6);

}

}

//---------------------------------------------------------------------------

Результат виконання програми:

Висновок: На цій лабораторній роботі я вивчив методи наближених обчислень і запрограмувати алгоритми обчислення означених інтегралів.


 

А также другие работы, которые могут Вас заинтересовать

73605. Основи побудови комп’ютерних мереж 121 KB
  Основні поняття про комп’ютерні мережі, їх призначення, історія розвитку. Концепції побудови та класифікація комп’ютерних мереж. Архітектура комп’ютерних мереж: топологія, апаратне та програмне забезпечення. Базові топології локальних комп’ютерних мереж: шина, зірка, кільце. Призначення, коротка характеристика та принципи функціонування. Організація передачі даних.
73606. Програмне забезпечення комп’ютерних мереж 285 KB
  Поняття та призначення операційної системи. Концепції побудови програмного забезпечення комп’ютерних мереж. Використання вбудованих мережевих засобів Windows 9x. Характеристика та функції мережевих компонентів операційних систем.
73607. Системне програмне забезпечення 170.5 KB
  Основні поняття файлової системи Windows та сучасних операційних систем: логічні диски та їх імена; файли типи файлів імена файлів розширення імен файлів та їх призначення шаблони імен файлів; каталоги та дерево каталогів. Перевірка системних файлів дозволяє відслідковувати найбільш важливі файли що забезпечують роботу компютера. Якщо ці файли пошкоджені чи переміщені програма перевірки системних файлів їх відновлює. Файли з жорсткого диска можна резервувати на дискетах чи на іншому компютері в мережі.
73608. РАССКАЗ В ЭКСКУРСИИ 134 KB
  Экскурсия представляет собой органическое сочетание средств предметной и изобразительной наглядности и важного дополнения к этому уникальному в своем роде сочетанию слова. Важно в процессе проведения экскурсии обеспечить органическое единство между тем что получает человек при наблюдении объектов и пояснениями экскурсовода. Что такое экскурсионный рассказ Рассказ условно принятое в экскурсионном деле название устной части экскурсии т..
73609. Загальне діагностування і технічне обслуговування системи живлення карбюраторного двигуна 51.5 KB
  При виконані лабораторної роботи були виявлені наступні несправності: негерметичність системи живлення (пошкоджені мембрана і прокладка бензонасоса), неправильно відрегульована частота обертання колінчастого вала на холостом ходу і збільшена токсичність відпрацьованих газів при роботі двигуна на холостом ходу.
73610. Технічне обслуговування елементів системи живлення карбюраторного двигуна 49.5 KB
  Мета роботи: Придбати практичні навички в визначенні технічного стану елементів системи живлення карбюраторного двигуна. Перевірити технічний стан фільтра грубої очистки палива. Перевірити технічний стан фільтра тонкої очистки палива. Перевірити технічний стан повітряного фільтра.