Jak łatwo ze wzoru odczytać minimum to min_y=-a, natomiast maksimum to max_y=a. Funkcje rysujesz dla argumentów od min_x=ilestam do max_x=3.14*16 (użyj stałej M_PI zamiast 3.14).
Dowolną funkcję y=f(x) ograniczoną przez min_y, max_y, min_x, max_x narysujesz wyskalowaną w prostokącie o współrzędnych (L, T) i wymiarach (W, H) takim algorytmem:
double dx = max_x - min_x;
double dy = max_y - min_y;
//pierwszy punkt, to co w pętli poniżej dla i = 0 oraz zamiast LineTo jest MoveTo:
Form1->Image1->Canvas->MoveTo(L, T + floor((H - 1) * ((max_y - f(min_x)) / dy) + 0.5));
for (int i = 1; i < W; i++) //'i' to numer kolejnego rysowanego punktu (rysujemy co jeden piksel)
{
int ix = i + L; //współrzędna x na obrazku
double x = min_x + dx * i / (W - 1); //współrzędna x w układzie współrzędnych
double y = f(x); //współrzędna y w układzie współrzędnych
int iy = T + floor((H - 1) * ((max_y - y) / dy) + 0.5); //współrzędna y na obrazku
Form1->Image1->Canvas->LineTo(ix, iy);
//bez rozpisywania:
//Form1->Image1->Canvas->LineTo(i + L, T + floor((H - 1) * ((max_y - f(min_x + dx * i / (W - 1))) / dy) + 0.5));
}