Сама функція представляеться собою деякий графік:
Відомо, що фізичний зміст інтеграла - це площа криволінійної трапеції. Будемо розглядати метод трапецій як найбільш точний при невеликій витраті процесорного часу на обчислення. Задамо сіточні функції і, будемо вважати параметром масиву, притому. Очевидно, що при великому значенні, а, отже, при більшій кількості вузлів, ми отримаємо більш точне рішення. Отже, як відомо, площа трапеції визначається за формулою:
де - сторони трапеції. У нашому випадку ми будемо мати наступну формулу:
Тепер можна записати остаточну формулу для:
У нашій програмі, відповідно, всі інтеграли будемо вважати за допомогою циклу.
Програма та її опис. Результати обчислень
Текст основної програми наведено нижче.
Програма 1.
# include «stdafx.h»
# include
# include // Необхідні заголовні файли
# include
# include namespace std; U (double t, double x, double u)
{u;
} fi (double x)
{pow (x, 2) / 2;// Функція, перше наближення
} _tmain (int argc, _TCHAR * argv [])
{T0=5;// Визначаємо фізичні обмеження по tint nt=25 ;/ / число значень t
double T [nt];// Масив значень t
double S [nt];// Масив значень s
double dt=T0 / (nt - 1) ;/ / крок по змінній t [0]=0 ;/ / початкове значення t, перший елемент масиву
S [0]=0; (int i=1; i
{[i]=T [i - 1] + dt ;/ / заповнення масиву значень за t [i]=S [i - 1] + dt;
} X0=20 ;/ / визначаємо обмеження по xint nx=20 ;/ / число значнеій x
double X [nx] ;/ / масив значень xdx;=X0 / (nx - 1) ;/ / крок по змінній x [0] =-X0 / 2 ;/ / перший елемент масиву ( int i=1; i
{[i]=X [i - 1] + dx;
}
/ * Масиви значень функцій (V1 і V - два сусідніх наближення) * /
double u [nt] [nx]; (* eta) [nt] [nx];=new double [nt] [nt] [nx]; (* eta1) [nt] [nx ];=new double [nt] [nt] [nx]; (* V) [nt] [nx];=new double [nt] [nt] [nx]; (* W) [nt] [nx]; =new double [nt] [nt] [nx]; (* V1) [nt] [nx];=new double [nt] [nt] [nx];
for (int i=0; i
{[0] [i]=fi (X [i]); [0] [0] [i]=X [i]; [0] [0] [i]=u [0] [i];
} (int i=0; i
{(int j=0; j
{(int k=0; k
{[i] [j] [k]=fi (X [k]);// Заповнення масиву
}
}
} (int j=0; j
{(int k=0; k
{[j] [k]=fi (X [k]);// Визначення функції
}