Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.60 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4. #include <fstream>
  5.  
  6. template<typename T>
  7. void exercise1() {
  8.   constexpr int lambda =  -1;
  9.   constexpr T y_0 = 1.0, t_min = 0.0, t_max = 5.0;
  10.   std::vector<std::ofstream> files;
  11.   files.emplace_back(std::ofstream {"zad1skok1.dat"});
  12.   files.emplace_back(std::ofstream {"zad1skok2.dat"});
  13.   files.emplace_back(std::ofstream {"zad1skok3.dat"});
  14.   const std::vector<T> deltas_t = {0.01, 0.1, 1.0};
  15.  
  16.   for (int i {}; i < 3; ++i) {
  17.     T y = y_0, y1;
  18.     for (T t = t_min; t <= t_max; t += deltas_t[i]){
  19.       y1 = y + deltas_t[i] * lambda * y;
  20.       files[i] << t << " " << y1 << " " << exp(lambda * t) << " " << (y1 - exp(lambda * t)) << std::endl;
  21.       y = y1;
  22.     }
  23.   }
  24. }
  25.  
  26. template<typename T>
  27. void exercise2() {
  28.   constexpr int lambda =  -1;
  29.   constexpr T y_0 = 1.0, t_min = 0.0, t_max = 5.0;
  30.   std::vector<std::ofstream> files;
  31.   files.emplace_back(std::ofstream {"zad2skok1.dat"});
  32.   files.emplace_back(std::ofstream {"zad2skok2.dat"});
  33.   files.emplace_back(std::ofstream {"zad2skok3.dat"});
  34.   const std::vector<T> deltas_t = {0.01, 0.1, 1.0};
  35.  
  36.   for (int i {}; i < 3; ++i) {
  37.     T y = y_0, y1;
  38.     for (T t = t_min; t <= t_max; t += deltas_t[i]){
  39.       T k1 = lambda * y;
  40.       T k2 = lambda * (y + deltas_t[i] * k1);
  41.       y1 = y + (k1 + k2) * (deltas_t[i] / 2.0);
  42.       files[i] << t << " " << y1 << " " << exp(lambda * t) << " " << (y1 - exp(lambda * t)) << std::endl;
  43.       y = y1;
  44.     }
  45.   }
  46. }
  47.  
  48. template<typename T>
  49. void exercise3() {
  50.   constexpr int lambda =  -1;
  51.   constexpr T y_0 = 1.0, t_min = 0.0, t_max = 5.0;
  52.   std::vector<std::ofstream> files;
  53.   files.emplace_back(std::ofstream {"zad3skok1.dat"});
  54.   files.emplace_back(std::ofstream {"zad3skok2.dat"});
  55.   files.emplace_back(std::ofstream {"zad3skok3.dat"});
  56.   const std::vector<T> deltas_t = {0.01, 0.1, 1.0};
  57.  
  58.   for (int i {}; i < 3; ++i) {
  59.     T y = y_0, y1;
  60.     for (T t = t_min; t <= t_max; t += deltas_t[i]){
  61.       T k1 = lambda * y;
  62.       T k2 = lambda * (y + k1 * deltas_t[i] / 2.0);
  63.       T k3 = lambda * (y + k2 * deltas_t[i] / 2.0);
  64.       T k4 = lambda * (y + deltas_t[i] * k3);
  65.       y1 = y + (k1 + 2 * k2 + 2 * k3 + k4) * (deltas_t[i] / 6.0);
  66.       files[i] << t << " " << y1 << " " << exp(lambda * t) << " " << (y1 - exp(lambda * t)) << std::endl;
  67.       y = y1;
  68.     }
  69.   }
  70. }
  71.  
  72. template<typename T>
  73. void exercise4() {
  74.   constexpr T  delta_t = 0.0001, t_min = 0;
  75.  
  76. }
  77.  
  78. int main()
  79. {
  80.   exercise1<double>();
  81.   exercise2<double>();
  82.   exercise3<double>();
  83.  
  84.   return 0;
  85. }
  86.  
  87.  
  88. // #include <stdio.h>
  89. // #include <math.h>
  90.  
  91. // float fun (float x){
  92. //  return exp(-x);
  93. // }
  94.  
  95. // float V (float t, float omega){
  96. //  return 10.*sin(omega*t);
  97. // }
  98.  
  99. // int main (void){
  100.  
  101.  
  102.  
  103.  
  104. //  //drugiego rzedu
  105.  
  106. //  fp1 = fopen("dane41.dat", "w");
  107. //  fp2 = fopen("dane42.dat", "w");
  108. //  fp3 = fopen("dane43.dat", "w");
  109. //  FILE *fp4 = fopen("dane44.dat", "w");
  110.  
  111. //  float dt = pow(10, -4), R=100., L=0.1, C = 0.001, omega0 =1./sqrt(L*C), T0 = 2*M_PI/omega0;
  112. //  //float t, tmin, tmax;
  113. //  tmin = 0;
  114. //  tmax = 4*T0;
  115.  
  116. //  float Q0 = 0, Q = Q0, I0 = 0, I = 0, omegaV;
  117. //  float k1Q, k1I, k2Q, k2I, k3Q, k3I, k4Q, k4I;
  118.  
  119. //  omegaV = 0.5*omega0;
  120.  
  121. //  for (t = tmin; t <= tmax; t+=dt){
  122. //      k1Q = I;
  123. //      k1I = V(t, omegaV)/L - Q/(L*C) - R*I/L;
  124. //      k2Q = I + dt*k1I/2.;
  125. //      k2I = V(t + 0.5*dt, omegaV)/L + - (Q + dt*k1Q/2.)/(L*C) - R*(I + dt*k1I/2.)/L;
  126. //      k3Q = I + dt*k2I/2.;
  127. //      k3I = V(t + 0.5*dt, omegaV)/L + - (Q + dt*k2Q/2.)/(L*C) - R*(I + dt*k2I/2.)/L;
  128. //      k4Q = I + dt*k3I;
  129. //      k4I = V(t + dt, omegaV)/L + - (Q + dt*k3Q)/(L*C) - R*(I + dt*k3I)/L;
  130. //      Q = Q + dt/6.*(k1Q + 2*k2Q + 2*k3Q + k4Q);
  131. //      I = I + dt/6.*(k1I + 2*k2I + 2*k3I + k4I);
  132. //      fprintf(fp1, "%f %f %f\n", t, Q, I);
  133. //  }
  134.  
  135. //  omegaV = 0.8*omega0;
  136.    
  137. //  for (t = tmin; t <= tmax; t+=dt){
  138. //      k1Q = I;
  139. //      k1I = V(t, omegaV)/L - Q/(L*C) - R*I/L;
  140. //      k2Q = I + dt*k1I/2.;
  141. //      k2I = V(t + 0.5*dt, omegaV)/L + - (Q + dt*k1Q/2.)/(L*C) - R*(I + dt*k1I/2.)/L;
  142. //      k3Q = I + dt*k2I/2.;
  143. //      k3I = V(t + 0.5*dt, omegaV)/L + - (Q + dt*k2Q/2.)/(L*C) - R*(I + dt*k2I/2.)/L;
  144. //      k4Q = I + dt*k3I;
  145. //      k4I = V(t + dt, omegaV)/L + - (Q + dt*k3Q)/(L*C) - R*(I + dt*k3I)/L;
  146. //      Q = Q + dt/6.*(k1Q + 2*k2Q + 2*k3Q + k4Q);
  147. //      I = I + dt/6.*(k1I + 2*k2I + 2*k3I + k4I);
  148. //      fprintf(fp2, "%f %f %f\n", t, Q, I);
  149. //  }
  150.  
  151. //  omegaV = 1.0*omega0;
  152.  
  153. //  for (t = tmin; t <= tmax; t+=dt){
  154. //      k1Q = I;
  155. //      k1I = V(t, omegaV)/L - Q/(L*C) - R*I/L;
  156. //      k2Q = I + dt*k1I/2.;
  157. //      k2I = V(t + 0.5*dt, omegaV)/L + - (Q + dt*k1Q/2.)/(L*C) - R*(I + dt*k1I/2.)/L;
  158. //      k3Q = I + dt*k2I/2.;
  159. //      k3I = V(t + 0.5*dt, omegaV)/L + - (Q + dt*k2Q/2.)/(L*C) - R*(I + dt*k2I/2.)/L;
  160. //      k4Q = I + dt*k3I;
  161. //      k4I = V(t + dt, omegaV)/L + - (Q + dt*k3Q)/(L*C) - R*(I + dt*k3I)/L;
  162. //      Q = Q + dt/6.*(k1Q + 2*k2Q + 2*k3Q + k4Q);
  163. //      I = I + dt/6.*(k1I + 2*k2I + 2*k3I + k4I);
  164. //      fprintf(fp3, "%f %f %f\n", t, Q, I);
  165. //  }
  166.  
  167. //  omegaV = 1.2*omega0;
  168.    
  169. //  for (t = tmin; t <= tmax; t+=dt){
  170. //      k1Q = I;
  171. //      k1I = V(t, omegaV)/L - Q/(L*C) - R*I/L;
  172. //      k2Q = I + dt*k1I/2.;
  173. //      k2I = V(t + 0.5*dt, omegaV)/L + - (Q + dt*k1Q/2.)/(L*C) - R*(I + dt*k1I/2.)/L;
  174. //      k3Q = I + dt*k2I/2.;
  175. //      k3I = V(t + 0.5*dt, omegaV)/L + - (Q + dt*k2Q/2.)/(L*C) - R*(I + dt*k2I/2.)/L;
  176. //      k4Q = I + dt*k3I;
  177. //      k4I = V(t + dt, omegaV)/L + - (Q + dt*k3Q)/(L*C) - R*(I + dt*k3I)/L;
  178. //      Q = Q + dt/6.*(k1Q + 2*k2Q + 2*k3Q + k4Q);
  179. //      I = I + dt/6.*(k1I + 2*k2I + 2*k3I + k4I);
  180. //      fprintf(fp4, "%f %f %f\n", t, Q, I);
  181. //  }
  182. //  fclose(fp1);
  183. //  fclose(fp2);
  184. //  fclose(fp3);
  185. //  fclose(fp4);
  186.  
  187. //  return 0;
  188. // }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement