Новый текстовый документ

Посмотреть архив целиком
clc
echo off
format long
display('Истинное значение IR = 5.497100094233240')
IntegralResult= log(10)+ exp(2)/2 - 0.5 %Вывод истинного значения интеграла
a=0; b=1; %Пределы интегрирования
pr=0.0001; %Требуемая точность
y=@(x) exp(2*x)+log(10); %Подынтегральная функция
der2=@(t) exp(t); antider2=@(t) -exp(t);%Вторая производная
der4=@(t) exp(t); antider4=@(t) -exp(t); %Четвертая производная
[xmin,ymin]=fminbnd(der2,a,b); %Поиск экстремальных значений
[xmax,ymax]=fminbnd(antider2,a,b);
ar=[abs(ymin) abs(ymax)]; %Избавляемся от знака
M2=max(ar); %Выбираем максимальное по модулю значение
[xmin,ymin]=fminbnd(der4,a,b); %Поиск экстремальных значений
[xmax,ymax]=fminbnd(antider4,a,b);
ar=[abs(ymin) abs(ymax)]; %Избавляемся от знака
M4=max(ar); %Выбираем максимальное по модулю значение
display('Формула средних прямоугольников:')
h=(b-a)/(fix((b-a)/sqrt(pr))+1); %Начальный шаг разбиения
d=1; %Произвольное начальное значение невязки
while d>pr
x=(a+h/2):h:(b); %Задание массива узлов (согласно специфике формулы)
I0=h*sum(y(x)); %Приближенное вычисление интеграла
h=h/2; %Изменение шага разбиения
x=(a+h/2):h:(b); %Задание массива узлов с новым шагом
Im=h*sum(y(x)); %Более точное вычисление интеграла
d=abs(Im-I0)/3; %Невязка результатов вычислений (см. условие цикла)

Im %Вывод результата приближенных вычислений
R=IntegralResult-Im %Погрешность вычислений
Rn=h^2*(b-a)*M2/24 %Максимальная погрешность при применении метода
display('Формула трапеций:')
h=(b-a)/(fix((b-a)/sqrt(pr))+1); %Начальный шаг разбиения
d=1; %Произвольное начальное значение невязки
while d>pr
x=a:h:b; %Задание массива узлов (согласно специфике формулы)
n=length(x);
I0=h*(sum(y(x))-(y(x(1))+y(x(n)))/2); %Приближенное вычисление интеграла
h=h/2; %Изменение шага разбиения
x=a:h:b; %Задание массива узлов с новым шагом
n=length(x);
Im=h*(sum(y(x))-(y(x(1))+y(x(n)))/2); %Более точное вычисление интеграла
d=abs(Im-I0)/3; %Невязка результатов вычислений (см. условие цикла)
end;
Im %Вывод результата приближенных вычислений
R=IntegralResult-Im %Погрешность вычислений
Rn=h^2*(b-a)*M2/12 %Максимальная погрешность при применении метода
display('Формула Симпсона:')
h=(b-a)/(2*(fix((b-a)/(2*pr^(1/4)))+1)); %Начальный шаг разбиения
d=1; %Произвольное начальное значение невязкиwhile d>pr
x=a:h:b; %Задание массива узлов (согласно специфике формулы)
n=(b-a)/(2*h); %Количество участков, на которое разбит отрезок
sum1=0;
sum2=0; %Очистка промежуточных сумм от старого содержания
for k=1:n %Вычисление промежуточных сумм
sum1=sum1+y(x(2*k));
end;
for k=1:(n-1)
sum2=sum2+y(x(2*k+1));
end;
I0=(h/3)*(y(x(1))+y(x(2*n+1))+4*sum1+2*sum2); %Приближенное вычисление интеграла
h=h/2; %Изменение шага разбиения
x=a:h:b; %Задание массива узлов с новым шагом
n=(b-a)/(2*h); %Новое количество участков
sum1=0; sum2=0; %Очистка промежуточных сумм от старого содержания
for k=1:n %Вычисление промежуточных сумм
sum1=sum1+y(x(2*k));
end;
for k=1:(n-1)
sum2=sum2+y(x(2*k+1));
end;
Im=(h/3)*(y(x(1))+y(x(2*n+1))+4*sum1+2*sum2); %Более точное вычисление
d=abs(Im-I0)/15;
end;
Im %Вывод результата приближенных вычислений
R=IntegralResult-Im %Погрешность вычислений
Rn=h^4*(b-a)*M4/180 %Максимальная погрешность при применении метода





Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.