Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. clear all
  2. close all
  3. clc
  4.  
  5. t0=0;
  6. tk=0.001;
  7. n=1000;
  8. h=(tk-t0)/n;
  9. t=t0:h:tk;
  10.  
  11. R1=1000;
  12. C1=3.2e-8;
  13. R2=1000;
  14. C2=3.2e-8;
  15. RL=1000;
  16.  
  17. for sym_no=1:7
  18.  
  19. fu1=@(t,u1,u2) ((1/C1)*((1/R1)*(fe(t,sym_no)-u1)-((1/R1)*(u1-u2))));
  20. fu2=@(t,u1,u2) ((1/C2)*(((1/R2)*(u1-u2)-(u2/RL))));
  21.  
  22. % zwykly euler
  23.  
  24. eu1=[];
  25. eu2=[];
  26. eil=[];
  27. eu1(1)=0;
  28. eu2(1)=0;
  29. eil(1)=0;
  30.  
  31. for i=1:n
  32. eu1(i+1)=eu1(i)+h*fu1(t(i),eu1(i),eu2(i));
  33. eu2(i+1)=eu2(i)+h*fu2(t(i),eu1(i),eu2(i));
  34. eil(i+1)=eu2(i+1)/RL;
  35. end
  36.  
  37. wplot(t, eu1, eu2, eil, sym_no, 1);
  38.  
  39. % ulepszony euler
  40.  
  41. tu1=[];
  42. tu2=[];
  43. til=[];
  44. tu1(1)=0;
  45. tu2(1)=0;
  46. til(1)=0
  47.  
  48. for i=2:n+1
  49. tu1(i)=tu1(i-1)+h*fu1((t(i-1)+(h/2)),(tu1(i-1)+(h/2)*fu1(t(i-1),tu1(i-1),tu2(i-1))),(tu2(i-1)+(h/2)*fu2(t(i-1),tu1(i-1),tu2(i-1))));
  50. tu2(i)=tu2(i-1)+h*fu2((t(i-1)+(h/2)),(tu1(i-1)+(h/2)*fu1(t(i-1),tu1(i-1),tu2(i-1))),(tu2(i-1)+(h/2)*fu2(t(i-1),tu1(i-1),tu2(i-1))));
  51. til(i)=tu2(i)/RL;
  52. end
  53.  
  54. wplot(t, tu1, tu2, til, sym_no, 2);
  55. end
  56.  
  57.  
  58. function [e]=fe(t,sym_no)
  59. switch sym_no
  60. case 1
  61. e=2;
  62. case 2
  63. e=sin(2*pi*50*t);
  64. case 3
  65. e=sin(2*pi*600*t);
  66. case 4
  67. e=sin(2*pi*1750*t);
  68. case 5
  69. e=sin(2*pi*12000*t);
  70. case 6
  71. e=sin(2*pi*21000*t);
  72. case 7
  73. if mod(1000*t,5)<(1/2)
  74. e=1;
  75. elseif mod(1000*t,5)>=(1/2)
  76. e=0;
  77. end
  78.  
  79. end
  80. end
  81.  
  82. function [title]=wtitle(sym_no, euler_type)
  83. switch sym_no
  84. case 1
  85. title = 'Wykres dla E=2';
  86. case 2
  87. title = 'Wykres dla E=sin(2*pi*f*t), dla f=50 Hz';
  88. case 3
  89. title = 'Wykres dla E=sin(2*pi*f*t), dla f=600 Hz';
  90. case 4
  91. title = 'Wykres dla E=sin(2*pi*f*t), dla f=1750 Hz';
  92. case 5
  93. title = 'Wykres dla E=sin(2*pi*f*t), dla f=12 kHz';
  94. case 6
  95. title = 'Wykres dla E=sin(2*pi*f*t), dla f=21 kHz';
  96. case 7
  97. title = 'Wykres dla E=1 przy t<T/2 oraz E=0 przy t>=T/2 dla okresu 0.5ms';
  98. end
  99.  
  100. if euler_type==1
  101. title = strcat(title, newline + "metoda Eulera");
  102. elseif euler_type==2
  103. title = strcat(title, newline + "metoda ulepszone Eulera");
  104. end
  105. end
  106.  
  107. function wplot(t, u1, u2, il, sym_no, euler_type)
  108. figure
  109. plot(t,[u1;u2;il]);
  110. title(wtitle(sym_no, euler_type));
  111. legend('U1','U2','IL');
  112. xlabel('t (ms)');
  113. ylabel('V');
  114. hold off
  115. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement