Решения уравнения Фредгольма и Вольтерра в среде Matlab

Автор: Пользователь скрыл имя, 02 Мая 2012 в 10:01, лабораторная работа

Описание работы

Построить каркас приближенного решения интегрального уравнения Фредгольма на сетке точек отрезка с шагом h1, пользуясь какой-либо квадратурной формулой. На основе полученного каркаса записать приближенное решение в виде непрерывной функции (используя интерполяционные формулы) и с ее помощью вычислить приближенные значения x(c1) и x(d1).

Работа содержит 1 файл

Л.р. 10.docx

— 47.32 Кб (Скачать)

Теоретическая часть

  • Интегральное уравнение Фредгольма первого рода имеет вид: .
  • Уравнение Фредгольма второго рода записывается так: , где φ(x) - искомая функция; К(х, t) - ядро уравнения - непрерывная функция в прямоугольнике а≤х, t≤b; λ - постоянный параметр; а, b - постоянные пределы интегрирования.
  • Интегральное уравнение Вольтерра первого рода имеет вид: .
  • Уравнение Вольтерра второго рода записывается так:

.

  • Уравнения Вольтерра можно рассматривать, как частный случай уравнений Фредгольма, если преопределить ядро: .

 

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,Lambda)

% задание временной сетки

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,Lambda);

>> 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,Lambda);

>> 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