МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра БІТ
/
Звіт
до лабораторної роботи №4
з курсу: «Комп’ютерні методи дослідження інформаційних процесів та систем»
на тему: «Числове інтегрування функції однієї змінної»
Варіант №4
Мета роботи – ознайомлення з методами наближеного обчислення означених інтегралів.
Чисельне інтегрування функцій однієї змінної
Метод Гаусса
Формулу Гаусса називають формулою найвищої алгебраїчної точності, абсциси xi при інтерполяції (наближенні) функції вибираються з умови забезпечення мінімальної похибки інтерполяції. В методі Гауссса інтеграл
(23)
зводиться до вигляду
(24)
тобто точне значення заміняється на наближену квадратурну формулу.
Це зведення відбувається у наступній послідовності. У формулі (23) змінна x заміняється на
(25)
Тоді
(26)
І з врахуванням (24) можна записати, що:
. (27)
В формулі (24) коефіцієнти та абсциси (вузли) вибираються в залежності від числа вузлів. Значення невідомих є коренями поліномів Лежандра. Вузли розташовані на інтервалі (-1,1), завжди симетрично відносно нуля. Всі вагові коефіцієнти додатні, а їх сума дорівнює 2.
N
i
ti
Ai
1
1
0
2
2
1 ; 2
0,57735027
1
3
1 ; 3
2
0,77459667
0
5/9
8/9
4
1 ; 4
2 ; 3
0,86113631
0,33998104
0,34785484
0,65214516
5
1 ; 5
2 ; 4
3
0,906179846
0,538469310
0
0,236926885
0,478628670
0,568888889
Для достатньо гладкої підінтегральної функції формула Гаусса (27) забезпечує високу точність вже при невеликому числі вузлів . Для оцінки похибки обчислень за формулою Гаусса з вузлами користуються формулою:
,
Наприклад, при
;
.
ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ
№ вар.
Підінтегральна функція
Інтервал інтегрування
Метод
Абсолютна похибка
4
[1; 4]
Гаусса (n=4)
5
Блок-схема алгоритму програми
Текст програми
package lab_4_gauss;
import java.util.Arrays;
public class main {
public static void main(String[] args) {
final double[] t = {
-0.86113631,
-0.33998104,
0.86113631,
0.33998104,
};
System.out.println(">>> t = " + Arrays.toString(t));
final double[] A = {
0.34785484,
0.65214516,
0.34785484,
0.65214516,
};
final int n = 4;
int a = 1;
int b = 4;
System.out.println(">>> A = " + Arrays.toString(A));
String integrand = "log(x)^2 / x";
System.out.println("\n\t>>> a = " + a +
"\n\t>>> b = " + b +
"\n\t>>> integrand = " + integrand +
"\n");
System.out.println("\n\t>>> I = " + defineIntegral(A, t, a, b, n) + "\n");
}
static double f(double x) {
return (Math.pow((Math.log(x)), 2.0) / x);
}
static double defineIntegral(double[] A, double[] t, int a, int b, int n) {
double sum = 0;
for (int i = 0; i < n; i++) {
sum += A[i] * f((b - a) / 2.0 * t[i] + (b + a) / 2.0);
}
return (b - a) / 2.0 * sum;
}
}
Результат роботи програми
/
Перевірка результату виконання програми
/
Висновок: в даній лабораторній роботі я ознайомилась з методами наближеного обчислення означених інтегралів.