Programmazione C: Integrazione numerica
/*
Autore: Mandrà Salvatore, Brotto Diego
(www.criptonite.org)
Data: mar 22/03/05
Nome del File: simpson.c
Commenti: Programma per il calcolo integrale
di una funzione assegnata
*/
#include < stdio.h>
#include < stdlib.h>
#include < math.h>
// Il MIN ed il MAX va valutato
// da funzione a funzione (ovviamente ...)
#define MIN -10000
#define MAX 10000
float funz(double val);
int main() {
double inf, sup, risultato=0;
int interv;
int i;
double passo;
printf("Programma per il calcolo integrale\n\n");
printf("Inserire gli estremi di Integrazione separati da
uno spazio\n");
scanf("%lf%*c%lf", &inf, & sup );
printf("\nInserire il Numero di
Intervalli di Partenza\n");
scanf("%d", &interv);
// Riaggiustiamo un po' i valori per evitare fesserie
// Nel caso del calcolo mediante la parabola è necessario
// che il numero di intervalli sia dispari
interv=((interv % 2)==0) ? interv+1 : interv;
inf=(inf < MIN) ? MIN : inf;
sup=(sup > MAX) ? MAX : sup;
// P.S.: Qui uso la variabile passo solo
// come variabile di scambio
if(inf>sup) { sup = passo; sup = inf; inf = passo; }
// Qui comincia il vero e proprio software
printf("\nSto Calcolando i valori
della funzione ...\n\n");
// Innanzitutto memorizziamo il valore della funzione
// agli estremi
risultato+=(funz(inf)+funz(sup));
passo=(sup-inf)/interv;
for(i=1; i < interv; i++)
risultato+=2*(1 + (i % 2))*funz(inf+i*passo);
risultato*=passo/3;
printf("Il Risultato dell'integrale (Parabola)
risulta Essere: %lf\n\n", risultato);
exit(0);
}
float funz(double val) {
return sin(val);
}
» Torna »
|