Lista 2 -- Wstęp do informatyki, W. Hebisch
Wypróbować poniższy program:
/* Program oblicza sumę częściową szergu zadającego funkcję wykładniczą. Kompilacja gcc -o expsum expsum.c -lm */ #include <stdio.h> #include <math.h> int main(void) { double suma = 1.0; double wyraz = 1.0; double x = -2.0; int n = 10; int i; for(i=1; i<=n; i=i+1) { wyraz = wyraz * x/i; suma = suma + wyraz; } printf("Suma dla n=%d wynosi %20.16f, błąd %20.16f\n", n, suma, suma - exp(x)); return 0; }Zmodyfikować program tak by:
Wiadomo że jeśli f jest funkcją ciągłą na odcinku [0,1] to suma (f(0)+f(1/n)+...+f((n-1)/n)+f(1))/(n+1) dąży do całki z f gdy n dąży do nieskończoności. Oznacza to że powyższa suma może być użyta to przybliżonego obliczania całki. Napisać program który w obliczy przybliżoną wartość całki (tzn. powyższą sumę) dla f(x)=x oraz dla f(x)=x*x. Obliczyć analitycznie dokładne wartości tych całek i wstawiając dokładną wartość do programu obliczyć błąd przybliżenia dla kilku różnych n.
Zastąpić powyższą sumę przez (f(1/n)+...+f((n-1)/n)+f(1))/n oraz przez (f(0)/2+f(1/n)+...+f((n-1)/n)+f(1)/2)/n, porównać błędy przybliżenia dla f(x)=x oraz dla f(x)=x*x.
#include <stdio.h> int main(void) { char tab[21][21]; int i,j; /* Inicjujemy tabelę spacjami */ for(i=0; i<21; i=i+1) { for(j=0; j<21; j=j+1) { tab[i][j]=' '; } } /* Wpisujemy dużego X-a do tabeli */ for(i=0; i<21; i=i+1) { tab[i][i] = '*'; tab[i][21-i-1] = '*'; } /* Wypisujemy tabelę na ekranie */ for(i=0; i<21; i=i+1) { for(j=0; j<21; j=j+1) { putchar(tab[i][j]); } putchar('\n'); } return 0; }Zmodyfikować program by: