#include<stdio.h>
#include<stdlib.h>
#include<math.h>
struct punkt{
double x1,x2;
};
struct punkt pochodna(double t, struct punkt y){
struct punkt tymcz;
tymcz.x1=y.x2;
tymcz.x2=-sin(y.x1);
return tymcz;
}
int main(){
struct punkt y,tymcz;
double czas_biezacy, czas_koncowy,krok;
int ilosc_krokow;
printf("Program służy do numerycznego rozwiązywania równań różniczkowych\n");
printf("zwyczajnych metodą Eulera.\n\n");
printf("Czas startowy przyjmujemy jako 0.\n");
printf("Proszę wychylenie początkowe w radianach y(0)= ");
scanf("%lf",&(y.x1));
printf("\nTeraz proszę początkową prędkość kątową w radianach na sekundę y'(0)= ");
scanf("%lf",&(y.x2));
printf("\nProszę podać czas koncowy obliczeń T= ");
scanf("%lf",&czas_koncowy);
printf("\nProszę podać liczbę kroków N= ");
scanf("%d",&ilosc_krokow);
krok=czas_koncowy/ilosc_krokow;
czas_biezacy=0;
for(;ilosc_krokow>=0;--ilosc_krokow){
printf("| %2.6lf | %2.6lf |\n",czas_biezacy,y.x1);
tymcz=pochodna(czas_biezacy,y);
y.x1=y.x1+krok*tymcz.x1;
y.x2=y.x2+krok*tymcz.x2;
czas_biezacy=czas_biezacy+krok;
};
return EXIT_SUCCESS;
}