Mercurial > repos > public > sbplib
comparison +time/+rk/rk4_stability.m @ 846:c6fcee3fcf1b feature/burgers1d
Add generalized RungeKutta and RungeKuttaRV class which extracts its coefficients from a butcher tableau, specified on the scheme.
| author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
|---|---|
| date | Thu, 20 Sep 2018 17:51:19 +0200 |
| parents | +time/+rk4/rk4_stability.m@48b6fb693025 |
| children |
comparison
equal
deleted
inserted
replaced
| 845:1e057b0f2fed | 846:c6fcee3fcf1b |
|---|---|
| 1 function rk_stability() | |
| 2 ruku4 = @(z)(abs(1 + z +(1/2)*z.^2 + (1/6)*z.^3 + (1/24)*z.^4)); | |
| 3 circ = @(z)(abs(z)); | |
| 4 | |
| 5 | |
| 6 % contour(X,Y,z) | |
| 7 ax = [-4 2 -3 3]; | |
| 8 % hold on | |
| 9 fcontour(ruku4,[1,1],[-3, 0.6],[-3.2, 3.2]) | |
| 10 hold on | |
| 11 r = 2.6; | |
| 12 fcontour(circ,[r,r],[-3, 0.6],[-3.2, 3.2],'r') | |
| 13 hold off | |
| 14 % contour(X,Y,z,[1,1],'b') | |
| 15 axis(ax) | |
| 16 title('4th order Runge-Kutta stability region') | |
| 17 xlabel('Re') | |
| 18 ylabel('Im') | |
| 19 axis equal | |
| 20 grid on | |
| 21 box on | |
| 22 hold off | |
| 23 % surf(X,Y,z) | |
| 24 | |
| 25 | |
| 26 rk4roots() | |
| 27 end | |
| 28 | |
| 29 function fcontour(f,levels,x_lim,y_lim,opt) | |
| 30 default_arg('opt','b') | |
| 31 x = linspace(x_lim(1),x_lim(2)); | |
| 32 y = linspace(y_lim(1),y_lim(2)); | |
| 33 [X,Y] = meshgrid(x,y); | |
| 34 mu = X+ 1i*Y; | |
| 35 | |
| 36 z = f(mu); | |
| 37 | |
| 38 contour(X,Y,z,levels,opt) | |
| 39 | |
| 40 end | |
| 41 | |
| 42 | |
| 43 function rk4roots() | |
| 44 ruku4 = @(z)(abs(1 + z +(1/2)*z.^2 + (1/6)*z.^3 + (1/24)*z.^4)); | |
| 45 % Roots for real evalues: | |
| 46 F = @(x)(abs(ruku4(x))-1); | |
| 47 real_x = fzero(F,-3); | |
| 48 | |
| 49 % Roots for imaginary evalues: | |
| 50 F = @(x)(abs(ruku4(1i*x))-1); | |
| 51 imag_x1 = fzero(F,-3); | |
| 52 imag_x2 = fzero(F,3); | |
| 53 | |
| 54 | |
| 55 fprintf('Real x = %f\n',real_x) | |
| 56 fprintf('Imag x = %f\n',imag_x1) | |
| 57 fprintf('Imag x = %f\n',imag_x2) | |
| 58 end |
