Автор: Пользователь скрыл имя, 02 Мая 2012 в 10:01, лабораторная работа
Построить каркас приближенного решения интегрального уравнения Фредгольма на сетке точек отрезка с шагом h1, пользуясь какой-либо квадратурной формулой. На основе полученного каркаса записать приближенное решение в виде непрерывной функции (используя интерполяционные формулы) и с ее помощью вычислить приближенные значения x(c1) и x(d1).
Теоретическая часть
.
1. Построить каркас приближенного решения интегрального уравнения Фредгольма на сетке точек отрезка с шагом h1, пользуясь какой-либо квадратурной формулой. На основе полученного каркаса записать приближенное решение в виде непрерывной функции (используя интерполяционные формулы) и с ее помощью вычислить приближенные значения x(c1) и x(d1).
K(t,s)=, f(t) =, = , , , .
Создаем файл Q10.m, содержащий описание функции, возвращающей значения функции K (t,s).
function z=Q10(t,s)
z=sqrt(s)+t;
Создаем файл F10.m, содержащий описание функции, возвращающей значения функции f(t).
function z=F10(t)
z=t.^2-t+1;
Создаем файл Solve_Q10.m, содержащий описание функции, возвращающей решение интегрального уравнения Фредгольма.
function [X,Y]=Solve_Q10(a1,b1,N,
% задание временной сетки
h=(b1-a1)/(N-1);
i=1:N;
t(i)=a1+h*(i-1);
s=t;
% задание коэффициентов квадратурной формулы методом трапеций
A(1)=0.5;
m=2:N-1;
A(m)=1;
A(N)=0.5;
% вычисление значений функции Q(t,s) в узлах сетки
for i=1:N
for j=1:N
q(i,j)=Q10(t(i),s(j));
end;
end;
% вычисление значений функции f(t) в узлах временной сетки
F=F10(t);
for i=1:N
for j=1:N
if i==j
M(i,j)=1-Lambda*A(i)*q(i,j)*h;
else
M(i,j)=-Lambda*A(i)*q(i,j)*h;
end;
end;
end;
% нахождение решения интегрального уравнения
X=t;
Y=M^-1*F';
Выполняем следующую последовательность команд:
>>a1=1;
>> b1=4;
>> N=5;
>> Lambda=1;
>> [X,Y]=Solve_Q10(a1,b1,N,
>> X
X =
1.0000 1.7500 2.5000 3.2500 4.0000
>> Y
Y =
-1.0601
-3.8800
-3.5148
-2.0246
6.7953
>> Y=Y.'
Y =
-1.0601 -3.8800 -3.5148 -2.0246 6.7953
>> polyfit(X,Y,4)
ans =
1.0884 -10.0650 35.0613 -53.8350 26.6902
>> xi=1/exp(1);
>> yi=spline(X,Y,xi)
yi =
6.8267
>> xi=pi/2;
>> yi=spline(x,y,xi)
yi =
-3.6507
2. Применяя квадратурную формулу прямоугольников на отрезке [a2; b2] с шагом h2, найти каркас приближенного решения интегрального уравнения Вольтерра . Представить полученное дискретное решение интерполяционным многочленом третьей степени, построенным по первым четырем узлам заданной сетки, и вычислить приближенно x(c2) и x(d2).
, , , , ,
.
Создаем файл Q10_2.m, содержащий описание функции, возвращающей значения функции Q (t,s).
function z=Q10_2(t,s)
z=2*log((1+2*s)/(1+t.^2));
Создаем файл F 10_2.m, содержащий описание функции, возвращающей значения функции f(t).
function z=F10_2(t)
z=2*t.^(3/2)-3*t-1;
Создаем файл Solve2_Q10.m, содержащий описание функции, возвращающей решение интегрального уравнения Вольтерра.
function [T,Y]=Solve2_Q10(t1,t2,N)
% задание временной сетки
h=(t2-t1)/(N-1);
i=1:N;
t(i)=t1+h*(i-1);
s=t;
% задание коэффициентов квадратурной формулы методом трапеций
A(1)=0.5;
m=2:N-1;
A(m)=1;
A(N)=0.5;
% вычисление значений функции Q(t,s) в узлах сетки
for i=1:N
for j=1:N
q(i,j)=Q10_2(t(i),s(j));
end;
end;
% вычисление значений функции f(t) в узлах временной сетки
F=F10_2(t);
% нахождение решения интегрального уравнения
x(1)=F(1)./(1-A(1)*q(1,1));
for m=2:N
S=0;
for j=1:m-1
S=S+h.*A(j).*q(m,j).*x(j);
end;
x(m)=F(m)+S./(1-h.*A(m)*q(m,m)
end;
T=t;
Y=x;
Выполняем следующую последовательность команд:
>> t1=1;
>> t2=3;
>> N=6;
>> [X,Y]=Solve2_Q10(t1,t2,N);
X =
1.0000 1.4000 1.8000 2.2000 2.6000 3.0000
>> Y
Y =
-3.3640 -1.9096 -0.8931 0.5480 1.7756 2.7586
>> polyfit(X,Y,3)
ans =
-0.1371 0.6537 2.2202 -6.0605
>> xi=exp(2)/5;
>> yi=spline(X,Y,xi)
yi =
-1.7182
>> xi=((pi)^2)/9;
>> yi=spline(X,Y,xi)
yi =
-2.9026
3. Задаем уравнение Фредгольма и строим соответствующий график функции решения.
>> a1=1;
>> b1=4;
>> N=300;
>> Lambda=1;
>> [X,Y]=Solve_Q10(a1,b1,N,
>> plot(X,Y)
>> title('Reshenie Uravneniya Fredgolma');
>> xlabel('X'),ylabel('Y');
>> grid on
Рис.1 Решение уравнения Фредгольма
4. Задаем уравнение Вольтерра и строим соответствующий график функции решения.
>> a1=1;
>> t1=1;
>> t2=3;
>> N=300;
>> [X,Y]=Solve2_Q10(t1,t2,N);
>> plot(X,Y)
>> title('Reshenie uravneniya Volterra');
>> xlabel('X'),ylabel('Y');
>> grid on;
Рис.1 Решение уравнения Вольтерра
Информация о работе Решения уравнения Фредгольма и Вольтерра в среде Matlab