ЗАДАНИЕ:
- Методами численного интегрирования (таб. 4.1) найти значения эллиптического интеграла с точностями e =1E-2, 1E-3, 1E-5.
- Подынтегральная функция: f(x)=1/sgrt(1-sqr(sin(N))*sqr(sin(x))), где
N — порядковый номер студента в журнале;
Отрезок интегрирования [A,B]=[1,3].
N=16
Таблица 4.1
№ | Наименование методов |
1 | левых прямоугольников |
2 | правых прямоугольников |
3 | прямоугольников со средней точкой |
4 | трапеций |
5 | Симпсона |
6 | трех восьмых |
7 | Ньютона-Котеса пятого порядка |
8 | Ньютона-Котеса шестого порядка |
9 | Гаусса четвертого порядка |
10 | Гаусса пятого порядка |
11 | Гаусса шестого порядка |
ВЫБОР МЕТОДА:
Первый метод – (N mod 11) + 1.
Второй метод – 1 + ((номер первого метода + 6) mod 11).
Первый метод – (16 mod 11)+1=6 (трёх восьмых)
Второй метод – 1+((6+6) mod 11)=2 (правых прямоугольников)
АЛГОРИТМ ЧИСЛЕННОГО ИНТЕГРИРОВАНИЯ ФУНКЦИИ:
Процедура, вычисляющая значение функции при заданном значении x:
Процедура, осуществляющая вычисление одного шага методом правых прямоугольников:
Основной алгоритм, осуществляющий нахождение интеграла функции методом правых прямоугольников:
Алгоритм, осуществляющий один шаг вычисления методом трёх восьмых:
Алгоритм, осуществляющий метод трёх восьмых:
Тексты программ:
Файл «Data.m»:
1 2 3 4 5 6 |
A=1; B=3; meps=3; EPS=[1E-2, 1E-3, 1E-5] e=EPS(3); Y=0; |
Файл «func.m»:
1 2 3 4 5 |
function F=func(x) % fff=1/(1-((sin(16))^2)*(sin(x))^2)^0.5; fff=x; F=fff; |
Файл «Lab2.m»:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
%Laboratornay rabota number 2 % pause(on); Data % function f(x)=1/sgrt(1-sqr(sin(N))*sqr(sin(x))) % realizaziya metoda pravih pryamougolnikov % (Vtoroe zadanie) % cstep=1; % ce=e*2; % m=1; N=6; I=0;Y=0; X=0; % I=rightrect(A,B,N); % II=rightrect(A,B,N*2); % ce=abs(I-II) % CX=0; CY=0; % while ((ce>e)&&(cstep<10)) % I=II % N=N*2; % II=rightrect(A,B,N*2) % ce=abs(I-II) % CX(m)=N; CY(m)=ce;m=m+1; % cstep=cstep+1; % end; % I % % plot(CY,CX); % title('Graphic zavisimosti chisla iteraciy ot tochnosti'); % xlabel('tochnost'); % ylabel('kolichestvo iteraciy'); %realizaciya metoda 3/8 F=@func; % I=m38(A,B,F,1e-3) I=rightrect(A,B,F,1e-5) |
Файл «m38.m»:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
function RES=m38(A,B,F,e) number_of_iteration=1; ce=e*2; I=0;dx=B-A; x=A; I=m38step(x,x+dx,F); while (ce>e) x=A; dx=dx*0.5; II=0; while (x<B) II=II+m38step(x,x+dx,F); x=x+dx; end; ce= abs(I-II) I=II; % number_of_iteration=number_of_iteration+1; end; RES=I; |
Файл «m38step.m»:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
function RES=m38step(A,B,F) H=[1, 3, 3, 1]; N=8;m=1; x=A; n=3;dx=(B-A)/n; I=0; Y=0; % while (x<B) % Y=feval(F,x); % I=I+Y*H(m); % m=m+1; % x=x+dx; % end; I=I+feval(F,x); I=I+3*feval(F,x+dx); I=I+3*feval(F,x+2*dx); I=I+feval(F,x+3*dx); I=(I/N)*3*dx; RES=I; |
Файл «rightrect.m»:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
function RES=rightrect(A,B,F,e); ce=e*2; % cstep=1; m=1;I=0; x=A;dx=(B-A); I=rightrectstep(A,B,F); %CX=0; CY=0; while (ce>e) x=A; II=0; dx=dx*0.5; while(x<B) II=II+rightrectstep(x,x+dx,F); x=x+dx; end; ce=abs(I-II); I=II; % CX(m)=N; CY(m)=ce; % cstep=cstep+1; end; RES=I; |
Файл «rightrectstep.m»:
1 2 3 4 5 6 |
function RES=rightrectstep(A,B,F) I=0;dx=(B-A);X=0; I=feval(F,B); X=B; I=I*dx; RES=I; |
РЕЗУЛЬТАТЫ ЧИСЛЕННОГО ИНТЕГРИРОВАНИЯ:
Eps | Метод 1 | Метод 2 |
1e-2 | 1.9266 | 2.0526 |
1e-3 | 1.9266 | 2.0556 |
1e-5 | 1.92960867320958 | 2.05664334751894 |
ГРАФИК ЗАВИСИМОСТИ ЧИСЛА ИТЕРАЦИЙ ПО ПРАВИЛУ РУНГЕ ОТ ЗАДАННОЙ ТОЧНОСТИ:
Для метода трёх восьмых:
Для метода правых прямоугольников:
АНАЛИЗ РЕЗУЛЬТАТОВ ЧИСЛЕННОГО ИНТЕГРИРОВАНИЯ:
Из результатов численного интегрирования видно, что метод правых прямоугольников даёт более точный результат, чем метод трёх восьмых.
ВЫВОДЫ ПО РАБОТЕ:
Из результатов работы программ видно, что метод правых прямоугольников намного точнее метода трёх восьмых и даёт результат быстрее, чем метод трёх восьмых.