Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. close all
  2. clear all
  3. clc
  4.  
  5. %% data
  6. l = 3;
  7. T = 3;
  8. nx = 100;
  9. nt = 150;
  10. hx = l/(nx-1);
  11. ht = T/nt;
  12.  
  13.  
  14. %% equation's data
  15. k = @(u) u.^2;
  16. m = @(t) 1 + t^0.5;
  17. c = @(u) 1 + 0.1 * u;
  18. r = @(u) 1 + 0.05 * u.^3;
  19. f = @(u) 2 * u;
  20.  
  21.  
  22. Y0 = zeros(nx, 1);
  23. RES = zeros(nx, nt);
  24. RES(:,1) = Y0;
  25. %% solver
  26. eps = 1e-3;
  27. ax = axes;
  28. count = 1;
  29. x = linspace(0, l, nx);
  30. for j = 2:nt
  31. Yt = Y0;
  32. while 1
  33. Ys = Y0;
  34. K = k(Ys);
  35. C = c(Ys);
  36. R = r(Ys);
  37. F = f(Ys);
  38. Y0 = makeData(hx, ht, nx, F, K, C, R, m(ht * (j - 1)), Yt);
  39. if max(abs(Y0 - Ys)) / max(abs(Ys)) <= eps
  40. break;
  41. end
  42. end
  43. RES(:, j) = Y0;
  44. if mod(j, 0.2*T/ht + 1) == 0
  45. axi = subplot(2,2,count)
  46. plot(axi,x,Y0,'b')
  47. title(['T = ', num2str(ht*(j - 1))])
  48. % plot(x, Y0)
  49. xlim(axi, [0 (T + 0.5)]);
  50. ylim(axi, [0 (T + 0.5)]);
  51. drawnow;
  52. count = count + 1;
  53. end
  54. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement