Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
37
Task/Runge-Kutta-method/MATLAB/runge-kutta-method.m
Normal file
37
Task/Runge-Kutta-method/MATLAB/runge-kutta-method.m
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
function testRK4Programs
|
||||
figure
|
||||
hold on
|
||||
t = 0:0.1:10;
|
||||
y = 0.0625.*(t.^2+4).^2;
|
||||
plot(t, y, '-k')
|
||||
[tode4, yode4] = testODE4(t);
|
||||
plot(tode4, yode4, '--b')
|
||||
[trk4, yrk4] = testRK4(t);
|
||||
plot(trk4, yrk4, ':r')
|
||||
legend('Exact', 'ODE4', 'RK4')
|
||||
hold off
|
||||
fprintf('Time\tExactVal\tODE4Val\tODE4Error\tRK4Val\tRK4Error\n')
|
||||
for k = 1:10:length(t)
|
||||
fprintf('%.f\t\t%7.3f\t\t%7.3f\t%7.3g\t%7.3f\t%7.3g\n', t(k), y(k), ...
|
||||
yode4(k), abs(y(k)-yode4(k)), yrk4(k), abs(y(k)-yrk4(k)))
|
||||
end
|
||||
end
|
||||
|
||||
function [t, y] = testODE4(t)
|
||||
y0 = 1;
|
||||
y = ode4(@(tVal,yVal)tVal*sqrt(yVal), t, y0);
|
||||
end
|
||||
|
||||
function [t, y] = testRK4(t)
|
||||
dydt = @(tVal,yVal)tVal*sqrt(yVal);
|
||||
y = zeros(size(t));
|
||||
y(1) = 1;
|
||||
for k = 1:length(t)-1
|
||||
dt = t(k+1)-t(k);
|
||||
dy1 = dt*dydt(t(k), y(k));
|
||||
dy2 = dt*dydt(t(k)+0.5*dt, y(k)+0.5*dy1);
|
||||
dy3 = dt*dydt(t(k)+0.5*dt, y(k)+0.5*dy2);
|
||||
dy4 = dt*dydt(t(k)+dt, y(k)+dy3);
|
||||
y(k+1) = y(k)+(dy1+2*dy2+2*dy3+dy4)/6;
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue