1 / 2

Esercizio n.3

Esercizio n.3. Scrivere un programma per calcolatore (in FORTRAN o C) che valuti l’integrale definito di una funzione data (e scritta nel programma stesso), dati gli estremi d’integrazione e il numero di intervalli da usare, mediante i tre metodi visti finora. Leggi n, a, b

shelley
Download Presentation

Esercizio n.3

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Esercizio n.3 Scrivere un programma per calcolatore (in FORTRAN o C) che valuti l’integrale definito di una funzione data (e scritta nel programma stesso), dati gli estremi d’integrazione e il numero di intervalli da usare, mediante i tre metodi visti finora. Leggi n, a, b poni h= (b-a)/n; ret = 0; trap = 0; simps = 0; Esegui loop per i = 1,2,3...,n poni xret(i)=a + h*(i-0.5) Fine loop Esegui loop per i = 1,2,3...,n-1 poni x(i)=a + h*i Fine loop Esegui loop per i = 1,2,3...,n poni ret = ret + funz(xret(i)) Fine loop poni ret = ret * h Esegui loop per i = 1,3,5,...,n-1 poni trap = trap + 2*funz(x(i)) poni simps = simps + 4*funz(x(i)) Fine loop Esegui loop per i = 2,4,6,...,n-2 poni trap = trap + 2*funz(x(i)) poni simps = simps + 2*funz(x(i)) Fine loop poni trap = (trap + funz(a) + funz(b)) * h/2 poni simps = (simps + funz(a) + funz(b)) * h/3 Scrivi ret, trap, simps

  2. for(i=1 ; i<n ; i=++i) { x[i]=a+h*(double)i; } for(i=1 ; i<=n ; i=++i) { ret=ret + f(xret[i]); } ret = ret * h; for(i=1 ; i<=n-1 ; i=i+2) { trap=trap + 2*f(x[i]); simps=simps + 4*f(x[i]); } for(i=2 ; i<=n-2 ; i=i+2) { trap=trap + 2*f(x[i]); simps=simps + 2*f(x[i]); } trap = (trap + f(a) + f(b)) * h/2; simps = (simps + f(a) + f(b)) * h/3; printf ("ret = %lf, trap = %lf, simps = %lf \n", ret,trap,simps); } double f ( double x) { double funz ; funz = pow(x,2); return funz; } Soluzione n.3 /* Programma per il calcolo numerico dell'int., tra gli estremi a e b, di una funzione data usando i metodi rettangolare, trapezoidale e di simpson con n intervalli. La funzione è specificata in f *** compilare con l'opzione -lm */ #include <stdio.h> #include <math.h> #define nmax 100 main() { /* dichiarazione variabili */ int n,i; double a,b,h; double ret,trap,simps; double xret[nmax],x[nmax]; double f( double ); /*-------------------------*/ printf ("introdurre a, b: "); fflush (stdin); scanf ("%lf,%lf", &a,&b); printf ("introdurre n: "); fflush (stdin); scanf ("%d", &n); h = (b-a)/(double)n; ret=0 ; trap=0 ; simps=0; for(i=1 ; i<=n ; i=++i) { xret[i]=a+h*((double)i-0.5); }

More Related