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);

}

}

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

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

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


 

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

78755. ВОНИ ПЕРШИМИ РИНУЛИСЬ В БІЙ... 85 KB
  Мета: навчальна – закріпити знання студентів про чорнобильську трагедію, ознайомити з біографіями пожежників, ліквідаторів наслідків аварії на ЧАЕС, впроваджувати елементи екологічного виховання...
78756. Сражаюсь, верую, люблю! 100 KB
  На сцене в противоположних углах стоят стулья с участниками со стороны Э. Асадова и Б. Окуджавы, а так же два юноши и две девушки в стилизованых костюмах. На экране появляються первые слайды презентации Под музику «Как здорово, что все мы здесь сегодня собрались» выходят ведущие вечера.
78757. Я люблю Україну 144 KB
  Мета: навчальна – поглибити знання учнів про Україну, її символи, традиції, впроваджувати елементи естетичного виховання культури спілкування; розвивальна – розвивати українське мовлення учнів, культуру поведінки; уміння приймати рішення в нестандартних ситуаціях, колективну творчість...
78758. Сценарий выступления 11 класса на выпускном вечере 70.5 KB
  Есть за домами за лесами Маленькая страна. Маленькая страна Маленькая страна Каждый расскажет и покажет Вот она вот она На сцену поднимается ещё одна выпускница девочки берутся за руки и вместе поют вторую часть припева.
78759. ИЗ СВЕТЛЯНДИИ ПРИВЕТ – ЭТО СКАЗКА ПРО БЮДЖЕТ 38 KB
  Голос ребёнка: За горами, за лесами есть чудесная страна! И Светляндским королевством называется она. И живут в том королевстве человечки – светлячки: Дети, тётеньки и дяди, бабушки и старички! Во главе же государства стоит дяденька король. И зовут его Светлун, а фамилия Второй!
78760. Книга та комп’ютер – наші друзі 112 KB
  Адже це дійсно так. Особливо ці слова, сказані англійським прем’єр міністром у минулому столітті, є актуальними сьогодні. У наш час стрімкого розвитку інноваційних технологій дуже важливо володіти своєчасною та актуальною інформацією. З кожним роком обсяг інформації зростає, також скорочується час для пошуку інформації.
78761. Хай сонцю і квітам всміхаються діти 717.5 KB
  Організаційна робота. Прийом дітей в пришкільний табір. Знайомство з вожатими та дітьми Знайомство з вожатими. Хто запам’ятав, як звуть вожатих? Знайомство-жарт з дітьми. З нами ви вже познайомились. А тепер ми хочемо познайомитись з вами. Я рахую до трьох, на рахунок «три» кожний викрикує своє ім’я.
78762. У Марійки Підгірянки, мов із золота співанки 80 KB
  Однак незважаючи на її велике бажання вчитися батько - незаможний лісник не міг дати освіту всім дітям тому в сімейному колі вирішили що вчитися буде син а дівчатка займатимуться хатньою роботою. Допомагав дочці батько котрий досконало володів німецькою мовою добре знав математику біологію.
78763. ЛІТЕРАТУРНИЙ ВЕЧІР ЗА ТВОРАМИ ГРИЦЬКА БОЙКА 73 KB
  Добрий день, дорогі гості. Ми дуже раді, що ви прийшли на наше свято. Ми зможемо сьогодні розвеселити вас і зробити вам приємне, значит наша праця не буде марною. Як відомо, кожна людина ставить перед собою завдання і намагається його виконати.