Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function euler_T
- % y' = (-y+x*sin(x))/x; y(1) = 0.3011687, x = [1, 2]
- X = [1, 2];
- y0 = 0.3011687;
- h1 = 0.1;
- h2 = 0.01;
- y_me1 = euler_method(X, y0, h1);
- y_me2 = euler_method(X, y0, h2);
- y_mi1 = euler_midpoint(X, y0, h1);
- y_mi2 = euler_midpoint(X, y0, h2);
- i = 1;
- printf('\n I \n\n h1 = 0.1 \n\n X Y');
- for j = X(1):h1:X(2)
- printf('\n %i %i', j, y_me1(i));
- i += 1;
- endfor
- i = 1;
- printf('\n\n h2 = 0.01 \n');
- for j = X(1):h2:X(2)
- printf('\n %i %i', j, y_me2(i));
- i += 1;
- endfor
- i = 1;
- printf('\n\n\n II \n\n h1 = 0.1 \n\n');
- for j = X(1):h1:X(2)
- printf('\n %i %i', j, y_mi1(i));
- i += 1;
- endfor
- i = 1;
- printf('\n\n h2 = 0.01 \n');
- for j = X(1):h2:X(2)
- printf('\n %i %i', j, y_mi2(i));
- i += 1;
- endfor
- plot(X(1):h1:X(2), y_me1(1:end-1), 'r', X(1):h2:X(2), y_me2(1:end-1), 'b', X(1):h1:X(2), y_mi1, 'g', X(1):h2:X(2), y_mi2, 'y');
- title(' red - h1; blue - h2, green - h1 & pereschet, yellow - h2 & pereschet '), grid on
- end
- function y = euler_method(X, y_i, h)
- y = [y_i];
- i = 1;
- for x = X(1):h:X(2)
- y(i+1) = y(i) + h*f(x, y(i));
- i += 1;
- endfor
- endfunction
- function y = euler_midpoint(X, y_i, h)
- y = [y_i];
- i = 1;
- for x = X(1):h:X(2)-h
- y(i+1) = y(i) + h/2*( f(x, y(i)) + f(x+h, y(i) + h*f(x, y(i))) );
- i += 1;
- endfor
- endfunction
- function f = f(x, y)
- f = (-y + x*sin(x)) / x;
- endfunction
Advertisement
Add Comment
Please, Sign In to add comment