Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- double h = 0.1, eps = 0.01; //krok poczatkowy i wymagana dokladnosc
- double f(double x, double y) //funkcja z rownania - zad.2 dy/dx = 0.5*x*y dla x=1;
- { //y(0)=1; eps=0.01; Poczatkowy krok h = 0.1
- return 0.5*x*y;
- }
- double dokladna(double x) //dokladne rozwiazanie matematyczne rownania
- { // jest 5 zadan z dysku H - trzeba znalezc
- return exp(x*x / 4); // dla nich matematyczne rozwiazania rownan
- }
- int main()
- {
- double x, y, y1, y2;
- int i;
- x = 0; //wartosci poczatkowe x i y y(0)=1
- y = 1;
- printf("\ny(%lf) = %lf\tdokladna: %lf\tblad: %lf\th = %lf", x, y, dokladna(x), fabs(y - dokladna(x)), h);
- do{ //algorytm metody Eulera
- h = h * 2;
- do{
- h = h / 2;
- y1 = y + h*f(x, y);
- y2 = y + 2 * h*f(x, y);
- } while (fabs(y1 - y2)>eps); // rob dopoki roznica y1-y2>wymaganej dokladnosci
- y = y1;
- x = x + h;
- printf("\ny(%lf) = %lf\tdokladna: %lf\tblad: %lf\th = %lf", x, y, dokladna(x), fabs(y - dokladna(x)), h);
- } while (x<1); // rob dopoki x<1 - dla x=1
- // dla tego x mamy znalezc rozwiazanie - patrz zadanie u gory
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement