\(\displaystyle{ u(x) = f(x) + \int_{a}^{x} k(x,t)u(t) dt \ \ (1) }\)
Równanie \(\displaystyle{ (1) }\) możemy zredukować do równania Fredholma, jeśli rozszerzymy jego jądro, dokonując podstawienia:
\(\displaystyle{ K(x,t)= \begin{cases} k(x,t), \ \ \mbox{jeśli} \ \ a < t \leq x \\ 0, \ \ \mbox{jeśli} \ \ x < t \leq b, \end{cases} }\)
wtedy
\(\displaystyle{ u(x) = f(x) + \int_{a}^{b} K(x,t)u(t) dt. }\)
Wybieramy długość kroku \(\displaystyle{ h>0 }\) i dokonujemy dyskretyzacji przedziału całkowania \(\displaystyle{ x, \ \ x_{j} = a + ih, \ \ i = 0,1,2,... }\)
Metoda Eulera-Volterry polega na konstrukcji ciągu aproksymującego wartość \(\displaystyle{ u: }\)
\(\displaystyle{ u_{n} = f(x_{n}) + \sum_{j=0}^{n-1}hk(x_{n}, x_{j})u_{j}, \ \ j=0,1,2,...}\)
Przykład
\(\displaystyle{ u(x) = x + \int_{0}^{x} xtu(t)dt,}\)
z \(\displaystyle{ h = 0,2 }\)
Program w MATLAB
Kod: Zaznacz cały
function Euler_Volterra(k,f,a,b,n)
% Rozwiązanie równania Volterry metodą Eulera
% k(x,t)=jądro, f=f(x) dana funkcja.
fprintf('\n')
disp(' Rozwiązanie Metodą Eulera równania całkowego Volterry drugiego rodzaju')
disp('_______________________________')
disp(' xi ui ')
disp('_______________________________')
h=(b-a)/n;
u(1)=feval(f,a);
for i=2:n+1
% Współrzędne wektora f
x=a+(i-1)*h;
F=feval(f,x);
S=0;
for j=1:i-1
t=a+(j-1)*h;
S=S+u(j)*h*feval(k,x,t);
end
u(i)=F+S;
end
y=[a:h:b]';
for i=1:n+1
fprintf(' %9.4f %12.6f \n',y(i),u(i))
end
Kod: Zaznacz cały
function k=k1(x,t)
k=x*t;
function f=f1(x)
f=x;
Rozwiązanie Metodą Eulera równania całkowego Volterry drugiego rodzaju
_______________________________
xi ui
_______________________________
0.0000 0.000000
0.2000 0.200000
0.4000 0.403200
0.6000 0.624154
0.8000 0.892124
1.0000 1.257894
1.2000 1.811368
1.4000 2.721882
1.6000 4.330125
1.8000 7.365543
2.0000 13.487127