Zadanie 3: prędkość rakiety

Writing /home/grochu/public_html/wiki/data/meta/zajecia/mn1_2023_2/sidebar.meta failed
Unable to save metadata file. Hint: disk full; file permissions; safe_mode setting.

Plik rocket.txt zawiera pomiary wysokości rakiety (w km) od momentu wystrzelenia t=0 s. do t=200 s wykonywane w stałych odstępach czasowych (co 20 sekund). Plik zawiera pomiary zapisane w następującym formacie:

0 0
20 9.170
40 23.835

Każda linia zwiera pomiar czasu $t_i$ oraz wysokość rakiety.

Napisz program, który wczyta dane z pliku a następnie wyznaczy numerycznie wartości prędkości (pierwsza pochodna) oraz przyśpieszenia (druga pochodna) w każdym punkcie czasu $t_i = 0, 20, 40, \ldots$

Do wyznaczenia pochodnej użyj wzorów o dokładności co najmniej $O(h^2)$ (np. trzypunktowe różnice). Pochodną dla początkowych wartości $t_i=0$ wyznacz z różnic zwykłych Wartości pochodnej dla ostatniego elementu ($t_i=200$ s.) wyznacz z różnic wstecznych. Pozostałe wartości wyznacz z różnic centralnych.

Rozwiązanie zadania w postaci kodu programu w języku C umieść w Moodle pod adresem https://moodle.umk.pl/WFAIIS/mod/assign/view.php?id=4572

Operacje na plikach w C

Przykład demonstrujący odczyt wartości numerycznych z pliku testowego o nazwie text.txt za pomocą funkcji fscanf().

read.c
#include <stdio.h>
#define MAX 100
 
int main()
{
  int i, k;
  float tab[MAX];
  FILE *plik;
 
  plik = fopen("text.txt", "r");
  if ( plik == NULL) 
  {
     printf("Blad otworzenia pliku.");
     return 1;
  }
 
  i = 0;
  while(!feof(plik) && i < MAX)
     if(fscanf(plik, "%f", tab+i) > 0) i++;
 
  for(k=0; k<i; k++) 
     printf("%i -> %f\n", k, tab[k]);
 
  fclose(plik);
 
  return 0;
}