RK2 Shooting Method Error
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Hi there,
I'm having some issues getting my RK2 algorithm to work for a certain second-order linear differential equation. I have posted my current code (with the provided parameters) below. For some reason, the value of y1 deviates from the true value by a wider margin each iteration. Any input would be greatly appreciated. Thanks!
Code:
f = @(x,y1,y2)  [y2; (1+y2)/x];
a = 1;
b = 2;
alpha = 0;
beta = 1;
n = 21;
h = (b-a)/(n-1);
yexact = @(x) 2*log(x)/log(2) - x +1;
ye = yexact((a:h:b)');
s = (beta - alpha)/(b - a);
y0 = [alpha;s];
[y1, y2] = RungeKuttaTwo2D(f, a, b, h, y0);
error = abs(ye - y1);
function [y1, y2] = RungeKuttaTwo2D(f, a, b, h, y0)
    n = floor((b-a)/h);  
    y1 = zeros(n+1,1); y2 = y1;
    y1(1) = y0(1); y2(1) = y0(2);
    for i=1:n-1
        ti = a+(i-1)*h;
        fvalue1 = f(ti,y1(i),y2(i));
        k1 = h*fvalue1;
        fvalue2 = f(ti+h/2,y1(i)+k1(1)/2,y2(i)+k1(2)/2);
        k2 = h*fvalue2;
        y1(i+1) = y1(i) + k2(1);
        y2(i+1) = y2(i) + k2(2);
    end
end
1 comentario
Respuestas (0)
Ver también
Categorías
				Más información sobre Numerical Integration and Differential Equations en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

