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

}

}

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

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

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


 

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

41255. Визначення концентрації іонів водню в розчинах кислот, основ і солей. Буферні розчини 95.5 KB
  Так для 003н розчинуHCl знаходимо pН= . Слабкі кислоти Для кислоти складу НА константа дисоціації дорівнює але Cкисл =[HА] і [H]= [А] тому Зручно користовуватися величиною рКкисл= lg Ккисл Приклад: Багатоосновні кислоти Розглядаємо константи ступінчатої дисоціації наприклад вугільної карбонатної кислоти: Н2СО3 Н НСО3 НСО3 Н СО32 рК1=65 рК2=102 Отже друга константа дисоціації в 5000 раз менша першої тому друга ступінь дисоціації не має практичного впливу на величину...
41256. Загальні положення обємного титриметричного аналізу. Сутність методу нейтралізації 121.5 KB
  Криві титрування кислот і основ. Вибір індикаторів кислотноосновного титрування. В останньому випадку титрування можливе тому що в результаті гідролізу у розчині є вільна кислота або основа. 2 наведенні інтервали переходу та відповідні кольори для деяких найбільш вживаних в аналізі індикаторів Таблиця 2 індикатор Інтервал переходу рТ Кольори Тимолсиній 13 2 червонийжовтий Метилоранжевий 35 4 червонийжовтий Метилчервоний 46 5 червонийжовтий Лакмус 68 7 червоний синій Фенолфталеїн 810 9 безбарвнийчервоний Тимолфталеїн 911 10...
41257. Приклади практичних визначень методом нейтралізації 331 KB
  Визначення кальцинованої харчової та каустичної соди та їх сумішей. Визначення карбонатної твердості води. Титриметричне визначення кислотності рідких вуглеводневих палив. Це пов'язано з тим що така кислота летка і визначення її концентрації за густиною є неточним.
41258. Криві титрування та індикатори редоксометрії 102 KB
  Криві титрування та індикатори редоксометрії. План Криві титрування. Індикатори редоксометрії Криві титрування.
41259. Встановлення нормальності перманганату калію за вихідними речовинами 83.5 KB
  З рівняння видно що окиснювальний потенціал сильно залежить від рН розчину. В іншому випадку можливий перебіг побічних процесів наприклад: Для підкислення розчину застосовуеться звичайно сірчана кмслота оскільки HCl відновлюється перманганатом а азотна кислота сама здатна виступати як окисник що зрозуміло у кількісному аналізі неприпустимо. Приготування робочого розчину Як видно з рівняння реакції еквівалентна маса KMnO4 дорівнює Ми ділемо молярну масу на 5 у даному випадку тому що молярні маси еквівалентів в окисновідновних реакціях...
41260. Приготування та встановлення нормальності робочих розчинів йодометрії 92.5 KB
  Загальна характеристика методу Методи які базуються на виділенні або поглинанні йоду називаються йодометрією і займають особливе місце серед інших методів редоксометрії. Сильні відновники SnCl2 N3SO3 та інші визначають прямим титруванням робочим розчином йоду подібно перманганатометрії дихроматометрії тощо. До розчину окисника додають спочатку надлишок йодиду калію при цьому виділяється еквівалентна кількість йоду який відтиттровують тіосульфатом натрію. Деякою перепоною для широкого впровадження йодометрії при масових аналізах є...
41261. Комплексна функція електричного кола і частотні характеристики лінійних електричних кіл 247 KB
  Аналіз ланцюгів синусоїдального струму показує що амплітуди і початкові фази струмів у гілках і напруг на елементах ланцюга в загальному випадку залежать не тільки від схеми і параметрів її елементів не тільки від амплітуди і початкової фази коливань джерел що діють у ланцюзі але і від частоти цих коливань. Іншими словами характеристики процесів у ланцюгах істотно залежать від частоти. Визначаючи реакції одного і того ж ланцюга на гармонійні впливи з однаковими амплітудною і початковою фазою але різною частотою і порівнюючи них легко...
41262. ЗАГАЛЬНІ ВІДОМОСТІ ПРО ПЕРЕХІДНІ ПРОЦЕСИ В ЕЛЕКТРИЧНИХ ЛАНЦЮГАХ 255.5 KB
  Розрізняють два режими роботи ланцюга: сталий стаціонарний і несталий перехідний нестаціонарний. Несталим режимом або перехідним процесом у електричного ланцюга називають элекромагнитный процес що виникає у ланцюзі при переході від одного сталого режиму до іншого. Цей процес виникає в електричних ланцюгах при підключенні до них або відключенні від них джерел елект...
41263. Перехідні процеси в нерозгалужених колах першого порядку 190 KB
  Перехідні процеси у нерозгалужених ланцюгах першого порядку с джерелом постійної напруги Перехідні процеси в ланцюгах першого порядку з джерелом постійної напруги можуть виникнути як при підключенні джерела до ланцюга так і при стрибкоподібній зміні її чи схеми параметрів її елементів. Методику аналізу перехідних процесів що виникають у нерозгалуженому ланцюзі першого порядку при підключенні до неї джерела постійної напруги при нульових початкових умовах розглянемо на прикладі ланцюга r мал. На підставі другого закону...