#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; }