Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

%% Ejercicio 1: Runge-Kutta 4º orden

% Definir la ecuación diferencial


f = @(t,x, y) -.1*x;
g = @(t,x, y) -.1*x -.2*y ;
x0=5000;
y0=0;
a=0;
b=20;
h=.5;
xlim([0,20]);

[t, xN, yN] = RK4_sis2(f,g, x0, y0, a, b, h);

1.0e+03 *

-0.5000 -0.4875 -0.4878 -0.4756 -0.5000 -0.4625 -0.4647 -0.4291 4.7561 -0.2320

1.0e+03 *

-0.4756 -0.4637 -0.4640 -0.4524 -0.4292 -0.3959 -0.3978 -0.3662 4.5242 -0.4305

1.0e+03 *

-0.4524 -0.4411 -0.4414 -0.4303 -0.3663 -0.3367 -0.3385 -0.3104 4.3035 -0.5994

1.0e+03 *

-0.4304 -0.4196 -0.4199 -0.4094 -0.3105 -0.2842 -0.2858 -0.2609 4.0937 -0.7421

1.0e+03 *

-0.4094 -0.3991 -0.3994 -0.3894 -0.2610 -0.2377 -0.2391 -0.2171 3.8940 -0.8613

1.0e+03 *

-0.3894 -0.3797 -0.3799 -0.3704 -0.2171 -0.1965 -0.1978 -0.1784 3.7041 -0.9600

1.0e+03 *

-0.3704 -0.3611 -0.3614 -0.3523 -0.1784 -0.1602 -0.1614 -0.1442 3.5234 -1.0405

1.0e+03 *

-0.3523 -0.3435 -0.3438 -0.3352 -0.1442 -0.1282 -0.1292 -0.1141 3.3516 -1.1050

1.0e+03 *

-0.3352 -0.3268 -0.3270 -0.3188 -0.1142 -0.1001 -0.1010 -0.0877 3.1881 -1.1553

1.0e+03 *

-0.3188 -0.3108 -0.3110 -0.3033 -0.0878 -0.0754 -0.0762 -0.0646 3.0327 -1.1933

1.0e+03 *

-0.3033 -0.2957 -0.2959 -0.2885 -0.0646 -0.0538 -0.0545 -0.0444 2.8847 -1.2204

1.0e+03 *

-0.2885 -0.2813 -0.2814 -0.2744 -0.0444 -0.0350 -0.0356 -0.0268 2.7441 -1.2381

1
1.0e+03 *

-0.2744 -0.2675 -0.2677 -0.2610 -0.0268 -0.0186 -0.0192 -0.0115 2.6102 -1.2476

1.0e+03 *

-0.2610 -0.2545 -0.2547 -0.2483 -0.0115 -0.0044 -0.0049 0.0017 2.4829 -1.2499

1.0e+03 *

-0.2483 -0.2421 -0.2422 -0.2362 0.0017 0.0078 0.0074 0.0131 2.3618 -1.2462

1.0e+03 *

-0.2362 -0.2303 -0.2304 -0.2247 0.0131 0.0183 0.0179 0.0228 2.2466 -1.2372

1.0e+03 *

-0.2247 -0.2190 -0.2192 -0.2137 0.0228 0.0272 0.0269 0.0310 2.1371 -1.2237

1.0e+03 *

-0.2137 -0.2084 -0.2085 -0.2033 0.0310 0.0348 0.0345 0.0380 2.0328 -1.2064

1.0e+03 *

-0.2033 -0.1982 -0.1983 -0.1934 0.0380 0.0412 0.0409 0.0438 1.9337 -1.1859

1.0e+03 *

-0.1934 -0.1885 -0.1887 -0.1839 0.0438 0.0464 0.0462 0.0486 1.8394 -1.1627

1.0e+03 *

-0.1839 -0.1793 -0.1795 -0.1750 0.0486 0.0508 0.0505 0.0525 1.7497 -1.1374

1.0e+03 *

-0.1750 -0.1706 -0.1707 -0.1664 0.0525 0.0543 0.0541 0.0556 1.6644 -1.1103

1.0e+03 *

-0.1664 -0.1623 -0.1624 -0.1583 0.0556 0.0570 0.0568 0.0581 1.5832 -1.0819

1.0e+03 *

-0.1583 -0.1544 -0.1545 -0.1506 0.0581 0.0591 0.0590 0.0599 1.5060 -1.0524

1.0e+03 *

-0.1506 -0.1468 -0.1469 -0.1433 0.0599 0.0606 0.0605 0.0612 1.4325 -1.0221

1.0e+03 *

-0.1433 -0.1397 -0.1398 -0.1363 0.0612 0.0617 0.0616 0.0620 1.3627 -0.9913

1.0e+03 *

-0.1363 -0.1329 -0.1329 -0.1296 0.0620 0.0623 0.0622 0.0624 1.2962 -0.9602

1.0e+03 *

-0.1296 -0.1264 -0.1265 -0.1233 0.0624 0.0625 0.0624 0.0625 1.2330 -0.9289

2
1.0e+03 *

-0.1233 -0.1202 -0.1203 -0.1173 0.0625 0.0624 0.0624 0.0623 1.1729 -0.8977

1.0e+03 *

-0.1173 -0.1144 -0.1144 -0.1116 0.0623 0.0621 0.0620 0.0618 1.1157 -0.8667

1.0e+03 *

-0.1116 -0.1088 -0.1088 -0.1061 0.0618 0.0615 0.0614 0.0611 1.0612 -0.8360

1.0e+03 *

-0.1061 -0.1035 -0.1035 -0.1009 0.0611 0.0607 0.0606 0.0602 1.0095 -0.8057

-100.9483 -98.4246 -98.4877 -96.0239 60.1859 59.7004 59.6615 59.1442 960.2496 -775.8332

-96.0250 -93.6243 -93.6844 -91.3407 59.1417 58.5852 58.5530 57.9706 913.4177 -746.5508

-91.3418 -89.0582 -89.1153 -86.8860 57.9684 57.3535 57.3272 56.6914 868.8698 -717.8824

-86.8870 -84.7148 -84.7691 -82.6485 56.6895 56.0272 56.0060 55.3274 826.4945 -689.8755

-82.6495 -80.5832 -80.6349 -78.6177 55.3256 54.6256 54.6089 53.8965 786.1859 -662.5679

-78.6186 -76.6531 -76.7023 -74.7835 53.8950 53.1657 53.1530 52.4148 747.8432 -635.9889

-74.7843 -72.9147 -72.9614 -71.1362 52.4135 51.6624 51.6532 50.8962 711.3704 -610.1605

-71.1370 -69.3586 -69.4031 -67.6669 50.8951 50.1287 50.1226 49.3530 676.6765 -585.0980

hold on
plot(t,xN,'r*')
plot(t,yN,'b*')
grid on
title('Sistema de ecuaciones')
legend('xA','yA','xN','yN','Location','best')

Warning: Ignoring extra legend entries.

hold off
xlabel('t')

3
function [t, x, y] = RK4_sis2(f,g, x0, y0, a,b, h);
t=a:h:b;
n = length(t);
x= zeros(1, n);
y = zeros(1, n);
x(1)=x0;
y(1)=y0;

for i = 1:n-1
k1f = f(t(i), x(i), y(i));
k1g = g(t(i), x(i), y(i));
k2f = f(t(i) + h/2, x(i) + k1f * (h/2), y(i) + k1g * (h/2));
k2g = g(t(i) + h/2, x(i) + k1f * (h/2), y(i) + k1g * (h/2));
k3f = f(t(i) + h/2, x(i) + k2f * (h/2), y(i) + k2g * (h/2));
k3g = g(t(i) + h/2, x(i) + k2f * (h/2), y(i) + k2g * (h/2));
k4f = f(t(i) + h, x(i) + k3f * (h), y(i) + k3g * (h));
k4g = g(t(i) + h, x(i) + k3f * (h), y(i) + k3g * (h));
x(i+1) = x(i) + h/6 * (k1f + 2*k2f + 2*k3f + k4f);
y(i+1) = y(i) + h/6 * (k1g + 2*k2g + 2*k3g + k4g);
disp([k1f k2f k3f k4f k1g k2g k3g k4g x(i+1) y(i+1)])
end
end

You might also like