Advertisement
Guest User

Untitled

a guest
Jan 21st, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. clear;
  2. clc;
  3. Kw = [1000 2000 1000];
  4. Kz = [1 10 1];
  5. Kz1 = 1; Kz2 = 10; Kz3 = 1;
  6. Kw1 = 1000; Kw2 = 2000; Kw3 = 1000;
  7. T0 = 20;
  8. T1 = 10;
  9. T2 = 70;
  10. T3 = 30;
  11. global A B U;
  12. U = [T1 T2 T3]';
  13. C = 5e4;
  14. l = 15;
  15. dx = 0.1;
  16. dS = dx^2;
  17. n = l/dx;
  18. dC = C/n;
  19. A = sparse(n,n);
  20. B = sparse(n,3);
  21. Xstart = T0*ones(n,1);
  22. for i=1:n
  23. A_ = sparse(1,n);
  24. B_ = sparse(1,3);
  25. if i<=50
  26. A_(i) = A_(i) - 4*Kz1*dS/dC;
  27. B_(3) = B_(3) + 4*Kz1*dS/dC;
  28. if i ==1
  29. A_(i) = A_(i) - (Kw1*dS/dC);
  30. B_(1) = B_(1) + (Kw1*dS/dC);
  31. else
  32. A_(i) = A_(i) - (Kw1*dS/dC);
  33. A_(i-1) = A_(i-1) + (Kw1*dS/dC);
  34. end
  35. if i == 50
  36. A_(i) = A_(i) - (((Kw1+Kw2)/2)*dS/dC);
  37. A_(i+1) = A_(i+1) + (((Kw1+Kw2)/2)*dS/dC);
  38. else
  39. A_(i) = A_(i) - (Kw1*dS/dC);
  40. A_(i+1) = A_(i+1) + (Kw1*dS/dC);
  41. end
  42. elseif i>50
  43. if i<=100
  44. A_(i) = A_(i) - (4*Kz2*dS/dC);
  45. B_(3) = B_(3) + (4*Kz2*dS/dC);
  46. if i == 50
  47. A_(i) = A_(i) - (((Kw1+Kw2)/2)*dS/dC);
  48. A_(i-1) = A_(i-1) + (((Kw1+Kw2)/2)*dS/dC);
  49. else
  50. A_(i) = A_(i) - (Kw2*dS/dC);
  51. A_(i-1) = A_(i-1) + (Kw2*dS/dC);
  52. end
  53. if i == 100
  54. A_(i) = A_(i) - (((Kw3+Kw2)/2)*dS/dC);
  55. A_(i+1) = A_(i+1) + (((Kw3+Kw2)/2)*dS/dC);
  56. else
  57. A_(i) = A_(i) - (Kw2*dS/dC);
  58. A_(i+1) = A_(i+1) + (Kw2*dS/dC);
  59. end
  60. else
  61. A_(i) = A_(i) - (4*Kz3*dS/dC);
  62. B_(3) = B_(3) + (4*Kz3*dS/dC);
  63. if i == 100
  64. A_(i) = A_(i) - (((Kw3+Kw2)/2)*dS/dC);
  65. A_(i-1) = A_(i-1) + (((Kw3+Kw2)/2)*dS/dC);
  66. else
  67. A_(i) = A_(i) - (Kw3*dS/dC);
  68. A_(i-1) = A_(i-1) + (Kw3*dS/dC);
  69. end
  70. if i == 150
  71. A_(i) = A_(i) - (Kw3*dS/dC);
  72. B_(2) = B_(2) + (Kw3*dS/dC);
  73. else
  74. A_(i) = A_(i) - (Kw3*dS/dC);
  75. A_(i+1) = A_(i+1) + (Kw3*dS/dC);
  76. end
  77. end
  78. end
  79. A(i,:) = A_;
  80. B(i,:) = B_;
  81. end
  82. Tsym = 50000;
  83. [t,X] = ode45('grzanie_preta2', [0 Tsym], Xstart);
  84. h = line(1:length(X(1,:)), X(1,:),'erasemode', 'xor');
  85. axis([0 n 0 max(U)]);
  86. pause;
  87. for i=2:10:length(t);
  88. set(h, 'ydata', X(i,:));
  89. drawnow;
  90. pause(0.015);
  91. end;
  92.  
  93. function Xdot = grzanie_preta2(t,X);
  94. global A B U;
  95. Xdot = A*X + B*U;
  96. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement