Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. clc; % Clears the screen
  2. clear all;
  3.  
  4. h=0.1; % step size
  5. x = 0:h:10; % Calculates upto y(1)
  6. y = zeros(1,length(x));
  7. z = zeros(1,length(x));
  8. y(1) = 1; % initial condition
  9. z(1) = 1; % initial condition
  10. % F_xy = @(t,r) 3.*exp(-t)-0.4*r; % change the function as you desire
  11. F_xyz = @(x,y,z) z; % change the function as you desire
  12. G_xyz = @(x,y,z) -y ;
  13.  
  14. for i=1:(length(x)-1) % calculation loop
  15. k_1 = F_xyz(x(i),y(i),z(i));
  16. L_1 = G_xyz(x(i),y(i),z(i));
  17. k_2 = F_xyz(x(i)+0.5*h,y(i)+0.5*h*k_1,z(i)+0.5*h*L_1);
  18. L_2 = G_xyz(x(i)+0.5*h,y(i)+0.5*h*k_1,z(i)+0.5*h*L_1);
  19. k_3 = F_xyz((x(i)+0.5*h),(y(i)+0.5*h*k_2),(z(i)+0.5*h*L_2));
  20. L_3 = G_xyz((x(i)+0.5*h),(y(i)+0.5*h*k_2),(z(i)+0.5*h*L_2));
  21. k_4 = F_xyz((x(i)+h),(y(i)+k_3*h),(z(i)+L_3*h)); % Corrected
  22. L_4 = G_xyz((x(i)+h),(y(i)+k_3*h),(z(i)+L_3*h));
  23.  
  24. y(i+1) = y(i) + (1/6)*(k_1+2*k_2+2*k_3+k_4)*h; % main equation
  25. z(i+1) = z(i) + (1/6)*(L_1+2*L_2+2*L_3+L_4)*h; % main equation
  26. fprintf('%10d%+10.2f%+10.4f%+15.2fn', i, x(i+1), y(i+1), z(i+1));
  27. end
  28.  
  29. plot(x, y, 'b', "linewidth", 2);
  30.  
  31. syms y(x)
  32. Dy = diff(y);
  33.  
  34. ode = diff(y,x,2) == -y;
  35. cond1 = y(1) == 1;
  36. cond2 = Dy(1) == 1;
  37. conds = [cond1 cond2];
  38. ySol(x) = dsolve(ode,conds);
  39. ySol = simplify(ySol);
  40.  
  41. hold on
  42. fplot( ySol, [0, 10], "r", "linewidth", 2 )
  43. hold off
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement