Advertisement
RybaSG

Olek

Jan 3rd, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. double h = 0.1, eps = 0.01; //krok poczatkowy i wymagana dokladnosc
  5.  
  6. double f(double x, double y) //funkcja z rownania - zad.2 dy/dx = 0.5*x*y dla x=1;
  7. { //y(0)=1; eps=0.01; Poczatkowy krok h = 0.1
  8. return 0.5*x*y;
  9. }
  10.  
  11. double dokladna(double x) //dokladne rozwiazanie matematyczne rownania
  12. { // jest 5 zadan z dysku H - trzeba znalezc
  13. return exp(x*x / 4); // dla nich matematyczne rozwiazania rownan
  14. }
  15.  
  16. int main()
  17. {
  18. double x, y, y1, y2;
  19. int i;
  20.  
  21. x = 0; //wartosci poczatkowe x i y y(0)=1
  22. y = 1;
  23.  
  24. printf("\ny(%lf) = %lf\tdokladna: %lf\tblad: %lf\th = %lf", x, y, dokladna(x), fabs(y - dokladna(x)), h);
  25.  
  26. do{ //algorytm metody Eulera
  27. h = h * 2;
  28.  
  29. do{
  30. h = h / 2;
  31. y1 = y + h*f(x, y);
  32. y2 = y + 2 * h*f(x, y);
  33. } while (fabs(y1 - y2)>eps); // rob dopoki roznica y1-y2>wymaganej dokladnosci
  34.  
  35. y = y1;
  36. x = x + h;
  37. printf("\ny(%lf) = %lf\tdokladna: %lf\tblad: %lf\th = %lf", x, y, dokladna(x), fabs(y - dokladna(x)), h);
  38. } while (x<1); // rob dopoki x<1 - dla x=1
  39. // dla tego x mamy znalezc rozwiazanie - patrz zadanie u gory
  40. getchar();
  41. return 0;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement