La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Prof. Paolo Lotti Dr. Matteo Melani Dr. Antonio Ceseracciu

Presentazioni simili


Presentazione sul tema: "Prof. Paolo Lotti Dr. Matteo Melani Dr. Antonio Ceseracciu"— Transcript della presentazione:

1 Introduzione all’Uso dei Calcolatori (1) Uso dei Calcolatori in Fisica (3)
Prof. Paolo Lotti Dr. Matteo Melani Dr. Antonio Ceseracciu Dr. Paolo Lotti Istituto Nazionale di Fisica Nucleare (INFN) Sezione di Padova Via F. Mar zolo, 8 I Padova tel.: stanza 315 Mercoledì ore 15 Laboratori didattici del Dipartimento Sig. G. Bettella Sig. P. Parisotto

2 Programma dei corsi Introduzione all’uso dei calcolatori
0) Il calcolatore 1) Presentazione dell’aula informatica 2) Sistemi operativi presenti 3) Il più conosciuto: Microsoft Windows 4) Sicurezza?! 5) Interazione utente-macchina 6) Presentazione di alcuni programmi

3 Memoria RAM (Random Access Memory):
Il calcolatore Memoria RAM (Random Access Memory): è realizzata mediante circuiti integrati, costituiti da un insieme di Flip-Flop (circuiti di memoria a due stati stabili); Processore Centrale CPU (Central Processing Unit): legge le istruzioni dalla -memoria, le interpreta e le esegue; Unità di Input e Output: tastiera e mouse, principalmente, sono I dispositivi di INPUT usati dall’utente per trasmettere istruzioni/informazioni al calcolatore; Monitor e stampante sono invece i più comuni dispositivi di OUTPUT.

4 Sistema Operativo Il sistema operativo è un programma che costituisce l’interfaccia utente-macchina. Controlla quindi l’hardware che costituisce la macchina e gestisce l’utilizzo di queste componenti da parte dell’utente mediante opportune istruzioni. Una differenza importante tra sistemi operativi diversi è quella di permettere l’utilizzo delle risorse del calcolatore da uno o più utenti, ciascuno dei quali eventualmente esegue una o più istruzioni: DOS - Windows 95/98 - Windows XP, Linux

5 Reti di calcolatori ---- …... ---- Le apparecchiature per mettere in comunicazione i calcolatori fra loro sono evolute moltissimo nel corso degli ultimi dieci anni

6 Dipartimento di Fisica “G. Galilei”
Polo Didattico - Aula Informatica L’Aula Informatica del Dipartimento di Fisica esiste dall’Anno Accademico 1991/92 Hanno contribuito, in forma differente, le seguenti persone: Prof. E. Calimani Dr. P. Lotti Sig. V. Chiochia Prof. L. Peruzzo Sig. C. Venier Sig. A. Simion Prof. M. Nigro Sig. M. Gravino Prof. C. Voci Sig. A. Dorigo Prof. G. Busetto Sig. M. Menguzzato

7 Si è iniziato con 10 PC IBM 286 Successivamente, 3-4 Macintosh PC di generazione successiva. 1 vecchio microvax digital alcuni terminali alfanumerici OGGI 32 postazioni di lavoro PC Pentium III con 256 Mbyte di RAM Su queste macchine sono installati i sistemi operativi Windows NT 4.0 (tutte) e Linux distribuzione RedHat (20 macchine)

8 Il sistema operativo Linux, un sistema Unix per Personal
Computers. Il sistema operativo Unix esiste da più di 30 anni ed è considerato tuttora il sistema operativo più ver- satile e potente. La caratteristica più conosciuta di Unix è la non “amichevolezza”. Esempio: il comando copy si chiama cp! Distingue le maiuscole dalle minuscole: CP non funziona! Nel corso degli ultimi 10 anni, Unix l’ha vinta costringen- do gli utenti e le imprese prodruttrici di software ad ade- guarsi. Microsoft per il momento resiste ...

9 Aula informatica del Dipartimento di Fisica
Sono presenti I due sistemi operativi attualmente più utilizzati, Linux e Microsoft Windows NT, ed in parti- colare Windows NT è un programma di Linux. Questo software permette la coesistenza dei due sistemi operativi. Ogni calcolatore ospita entrambe I sistemi che convivono, Vediamo prima a grandi linee I due sistemi e succes- sivamente come I due comunicano tra loro. Obs: I sistemi sono due ma il calcolatore è uno solo!

10 Uso di Windows 95/98/me/2000/XP
L’obbiettivo principale è che l’utilizzo sia il più “amichevole” possibile; interfaccia utente-macchina molto intuitiva e mouse. Clicca qui, clicca lì clicca su, clicca giù Programmi utili, video scrittura, analisi di dati … tutto al giusto prezzo!

11 … e se si blocca tutto?

12 Linux è un sistema operativo gratuito creato da Linus
Torvalds e di cui esistono varie distribuzioni, la più conosciuta oggi è la RedHat In aula informatica è installata al momento la distri- buzione 6.2 assieme a Windows NT 4.0 Entrambi I sistemi richiedono il possesso di un “account” ovvero una “username” ed una “password” L’uso di Linux richiede più pazienza in media, ma il sistema gestisce meglio le risorse del calcolatore e molto raramente si “blocca”

13 L’addizione, la sottrazione, la moltiplicazione e la
Aritmetica binaria L’addizione, la sottrazione, la moltiplicazione e la divisione tra numeri binari si eseguono esattamente nello stesso modo che nel sistema decimale, con la differenza che il sistema decimale ha dieci cifre mentre quello binario soltanto due, 0 e 1. 1 Esempi di conversione decimale-binario: 1 26 ==> 2x x10 10 I coefficienti delle potenze di 10, base del sistema numerico utilizzato, variano da 0 a 9. Nel sistema binario, da 0 a 1 1 26 ==> 1x2 + 1x2 +0x2 +1x2 +0x2 ==> 11010 2

14 Consideriamo per esempio l’addizione tra due numeri in codice binario:
11010 ==> 54 10 In generale, valgono le seguenti regole: +1

15 Analogamente per la sottrazione:
e riporto 1 Esempio: 11100 -11010 00010 ==> 2 10

16 La moltiplicazione è facile:
x x x x1 Esempio: 11010 x11100 00000 11010 ==> 728 10

17 Divisione: si procede come nel sistema decimale con
la semplificazione che le cifre nel quoziente possono assumere soltanto il valore 0 o 1 11100:11010=1 -11010 28:26=1 -26 ---- 00010 2 Altro esempio: :101=1111 -101 1001 1000 111 10 77:5=15 -5 27 -25 2 --- ----

18 Linux è un sistema operativo gratuito creato da Linus
Torvalds e di cui esistono varie distribuzioni, la più conosciuta oggi è la RedHat In aula informatica è installata al momento la distri- buzione 6.2 assieme a Windows NT 4.0 Entrambi I sistemi richiedono il possesso di un “account” ovvero una “username” ed una “password” L’uso di Linux richiede più pazienza in media, ma il sistema gestisce meglio le risorse del calcolatore e molto raramente si “blocca”

19 Il sistema operativo permette l’utilizzo del computer in
un modo molto più confortabile per l’utente medio le cui esigenze sono di utilizzare varie applicazioni. Nell’ambito di un corso di studi scientifico, le applicazioni più comuni sono: - programmi per la gestione di documenti; - scrittura di testi, per esempio, relazioni di laboratorio; - analisi di dati di laboratorio; - programmi di grafica; - consultazione di pagine internet; - programmi di manipolazione algebrica: - scrittura di programmi per calcoli numerici.

20 Una differenza importante tra il sistema operativo Microsoft
Windows e Linux: quando si usa Windows, l’utente interagisce con programma che ne mette a disposizione molti altri; quando si usa Linux, l’utente interagisce direttamente con il calcolatore e le periferiche a disposizione attraverso un programma molto semplice che è un’emulatore di terminale; il comando più utile usando un terminale Linux: # apropos copy (per esempio) # man cp (man, il manuale on-line del sistema) (in questo caso, #, è il “prompt” che il sistema operativo uti- lizza quando in attesa di un comando)

21 Dal punto di vista della facilità d’uso, il sistema operativo
Microsoft Windows è molto più pratico, basta “smanettare” un po’ fino a raggiungere l’obbiettivo proposto. esempio Per quanto riguarda la gestione dei documenti, Microsoft Windows è semplice da usare ed è soddisfacente. Programmi di scrittura di testi, come Microsoft Word, sono stati adottati come standard per la scittura di libri o articoli di giornale (case editrici). In ambiente scientifico-universitario, per contenere i costi e per riuscire a realizzare progetti specifici, per esempio il controllo di apparecchiature di misura, Windows non ser- ve.

22 Linux ha lo svantaggio di non “presentarsi” molto bene,
ma molte applicazioni si sono adeguate, xmgrace, kile. esempio Un vantaggio molto importante è che esiste una comunità molto grande di programmatori molto bravi ma non pro- fessionisti che sviluppa software che vengono messi gratui- tamente a disposizione a livello internazionale (l’installazio- ne non è sempre banale). Per esempio, in ambito scientifico, a livello di scrittura di articoli e successivamente di pubblicazione di questi arti- coli in riviste scientifiche, si è manifestata l’esigenza di di- sporre di un linguaggio di scrittura di testi che permettes- se di scrivere le formule matematiche in maniera elegante.

23 Donald Knuth ha sviluppato un linguaggio di scrittura
di testi, TeX, che è diventato lo standard internazionale. In realtà, un’evoluzione di TeX, LaTeX (Leslie Lamport), è stato adottato da tutte le riviste internazionali per la pubblicazione di articoli scientifici (TeX e LaTeX esisto- no ovviamente anche per Microsoft Windows). Consiglio utile: imparare LaTeX Per l’analisi dei dati di laboratorio, esistono molte appli- cazioni e la scelta è prof-dependent!

24 Per la consultazione delle pagine Internet esistono diversi
programmi (Browser) in circolazione: Internet explorer, Mozilla, Netscape. Molti siti internet sono ottimizzati per l’uso di uno di que- sti programmi e la scelta viene fatta principalmente per motivi di politica commerciale. Una risorsa sicuramente molto utile, sono i cosiddetti “mo- tori di ricerca”:

25 Normalmente si procede nel seguente modo:
1) si cerca in internet un sito che metta a disposizione il programma cercato, possibilmente gratuito o di cui esista una versione dimostrativa, valida per un pe riodo limitato di tempo (tipicamente un mese); 2) si “scarica” il software e si procede (o se ne richiede) all’installazione; 3) l’obbiettivo è quello di installare nel calcolatore i programmi di maggior utilità;

26 Il sistema operativo Linux è nato dopo Microsoft Windows
e la sfida era quella di inserirsi in un mercato di software con- trollato da Microsoft. Proprio perchè intenzionato ad inserirsi in un mondo già esi- stente da tempo, la prima preoccupazione di Linux è stata di essere permettere la comunicazione con il mondo Microsoft. Esempio: le applicazioni mtools (mdir, mcopy, mtype, …) che permettono di usare il floppy disk utilizzando una formattazione perfettamente compatibile con Windows. Ovvio che il floppy disk è una periferica del calcolatore che può essere gestita da Linux senza preoccuparsi di qualsiasi compatibilità con altri sistemi operativi.

27 Nei calcolatori dell’aula informatica sono stati installati vari
programmi, in entrambe le piattaforme, per tentare di sod- disfare tutte le esigenze didattiche presentate. In particolare, è stata installata una licenza di Mathematica professional che ne permette l’uso su 10 calcolatori contem- poraneamente. Un altro programma per Windows NT, gratuito, permette il collegamento ad altri calcolatori in modalità grafica. Un calcolatore si distingue tra tutti: spiro.fisica.unipd.it spiro accetta collegamenti da altri calcolatori per mezzo di un programma che emula un terminale grafico, ssh, che è molto più evoluto del semplice collegamento via “telnet”.

28 Quando non si riesce a risolvere un problema algebricamente
o mediante un programma di manipulazione algebrica (per vari motivi) e si vuole avere pieno controllo della soluzione in- contrata, si utilizza il calcolo numerico. Esistono vari trattati “sacri” di calcolo numerico ed l’analisi numerica di un problema si divide in tre tappe fondamentali: a) identificazione del metodo numerico da applicare; b) scrittura e “debuggaggio” del programma che risolve il problema; c) analisi ed interpretazione dei risultati. I primi linguaggi di programmazione (compilatori) sviluppati in ambiente scientifico sono stati il Basic, Pascal, ForTran, C, C++.

29 Linux: 1) la procedura di login da una finestra alfanumerica: CTRL+ALT+F1 2) cambiare la password: il comando passwd 3) gestore di finestre, il file .xinitrc exec wmaker exec AnotherLevel exec startkde 4) il comando ls con i suoi parametri, -a per esempio; 5) modificare questo file con un editor di testo, pico per esempio 6) prima applicazione: pine 7) il .forward per reindirizzare la posta elettronica

30 Windows NT: 1) cambiare password 2) collegamento a con ssh

31 Comandi principali: DOS Linux dir ls, ls -l, ls -a, ls -al type | more more del, erase rm mkdir mkdir rmdir rmdir rename mv copy cp help man … cd cd mstools # mcopy a:\file.ext .

32 Importante Tipico esempio del file .forward Se si usa, come da me erroneamente detto, il sistema operativo si accorge dell’errore, loop, e non spedisce il messaggio!

33 Un programma per calcolare per punti il valore di una
funzione: /* Funzione per punti */ float fun(float x); int main(void) { int ip,ipmin,ipmax,idp; float x,xmin,dx; float y; ipmin=0; ipmax=50; idp=1; xmin=-5.; dx=0.2;

34 ip=ipmin; while(ip<=ipmax) { x=xmin+dx*ip; y=fun(x); printf("%6.1f %9.5f\n",x,y); ip=ip+idp; } float fun(float g) float p=0.; p= *(g-2.)*(g-2.)+0.1*(g-0.5)*(g-0.5)*(g-0.5); return p;

35 # gcc -o fun fun.c # ./fun # ./fun > fig.dat # export DISPLAY= n:0.0 # gnuplot gnuplot> p “fig.dat” u 1:2 w p gnuplot> exit File grafico (Encapsulated PostScript): gnuplot> set term post Terminal type set to ‘postscript’ Options are ‘landscape noenhanced monocrome …’ gnuplot> set output “fig.eps” gnuplot> replot gnuplot> set term X11 Options are ‘0’ gnuplot>exit

36 Sviluppo in serie di Taylor
considerando p=0 e x=+h, x=-h sottraendo la seconda equazione dalla prima, si ottiene:

37 Altre espressioni sono:
Sommando invece queste due equazioni:

38 Mathcad ...

39 /* Paolo Lotti 182668 - taylor.c /*
#include <stdlib.h> #include <stdio.h> #include <math.h> #define pi float fun(float x); float fun1(float x1); int main(void) { int ip,ipmin,ipmax,idp; float x,xmin,dx; float x1,x1min,dx1; float y,y1; ipmin=0; ipmax=50; idp=1;

40 xmin=0.; dx=pi/25.; x1min=pi/2.; dx1=pi/50.; ip=ipmin; while(ip<=ipmax) { x=xmin+dx*ip; y=fun(x); x1=x1min+dx1*ip; y1=fun1(x1); printf("%6.2f %9.5f %6.2f %9.5f\n",x,y,x1,y1); ip=ip+idp; } return 0;

41 float fun(float g) { float p=0.; p=cos(g); return p; } float fun1(float g) p= *g+0.5*g*g; -- fisica teorica -- nuclear physics -- P. Lotti

42 #gcc -o taylor -lm taylor.c
#./taylor >taylor.dat # export DISPLAY= n (soltanto gli utenti Windows) # gnuplot gnuplot> p “taylor.dat” u 1:2 w l,”taylor.dat” u 3:4 w p

43 Vi presento double int main(void) { float a; double b; a=1./3.; b=1./3.; printf(" a=%17.15f\n b=%32.30lf\n",a,b); return 0; } a= b=

44 #include <math.h>
float fun(float x); int main(void) { float x,h; float xminus,xplus,der1,der2,der,exa; printf(" Enter x:\n"); scanf("%f",&x); printf(" Enter h:\n"); scanf("%f",&h); xplus=x+h; xminus=x-h; der=(fun(xplus)-fun(xminus))/2./h; der1=(fun(xplus)-fun(x))/h; der2=(fun(x)-fun(xminus))/h; exa=cos(x); printf(" h x p p p exact\n"); printf("%10.6f %6.3f %10.6f %10.6f %10.6f %10.6f\n",h,x,der1,der2,der,exa); return 0; } float fun(float g) float p=0.; p=sin(g); return p;

45 #include <math.h>
double fun(double x); int main(void) { double x,h; double xminus,xplus,der1,der2,der,exa; printf(" Enter x:\n"); scanf("%lf",&x); printf(" Enter h:\n"); scanf("%lf",&h); xplus=x+h; xminus=x-h; der=(fun(xplus)-fun(xminus))/2./h; der1=(fun(xplus)-fun(x))/h; der2=(fun(x)-fun(xminus))/h; exa=cos(x); printf(" h x p p p exact\n"); printf("%10.6lf %6.3lf %10.6lf %10.6lf %10.6lf %10.6lf\n",h,x,der1,der2,der,exa); return 0; } double fun(double g) double p=0.; p=sin(g); return p;

46 h x p p p exact float double

47 Referenze bibliografiche
Brian W. Kernighan, Dennis M. Ritchie, “Linguaggio C”, Gruppo Editoriale Jackson Kenneth A. Barclay, “C problem solving and programming”, Prentice Hall International Ltd. Steven E. Koonin Professor of Theoretical Physics, “Computational physics”, The Benjamin Cummings Publishing Company, Inc.

48 William H. Press Harvard-Smithsonian Center for Astrophysics,
Brian P. Flannery Exxson Research and Engineering Company, Saul A. Teukolosky Department of Physics, Cornell University and William T. Vetterling Polaroid Corporation “Numerical recipes in C”, Cambridge University Press

49 #gnuplot gnuplot> p “fig.dat” u 1:2 w p,”zero.dat” u 1:2 w l zero.dat

50 Derive Mathcad ...

51 /* Paolo Lotti 182668 - bisez.c */
# include <stdlib.h> # include <stdio.h> # define tol double fun(double x); int main(void) { double x,dx,fold,y; int iter; printf(" Enter x,dx:\n"); scanf("%lf,%lf",&x,&dx); fold=fun(x); iter=1; printf(" iter=%2d x=%10.8f y=%10.8f\n",iter,x,fold);

52 printf(" iter=%2d x=%10.8f y=%10.8f\n",iter,x,y); if(y*fold<0.) {
a: x=x+dx; y=fun(x); iter=iter+1; printf(" iter=%2d x=%10.8f y=%10.8f\n",iter,x,y); if(y*fold<0.) { x=x-dx; dx=dx/2.; } if(dx>tol) goto a; return 0; double fun(double g) double p; p=8.*g*g*g+28.*g*g-154.*g+79.; return p;

53 #gcc -o bisez bisez.c #./bisez Enter x: 2.5 iter= 1 x= y= iter= 2 x= y= iter= 3 x= y= iter= 4 x= y= iter= 5 x= y= iter= 6 x= y= iter= 7 x= y= iter= 8 x= y= iter= 9 x= y= iter=10 x= y=

54 iter=11 x= y= iter=12 x= y= iter=13 x= y= iter=14 x= y= iter=15 x= y= iter=16 x= y= iter=17 x= y= iter=18 x= y= iter=19 x= y= iter=20 x= y= iter=21 x= y= iter=22 x= y= iter=23 x= y= iter=24 x= y= iter=25 x= y= iter=26 x= y=

55 Si può procedere in un altro modo sfruttando la possibilità
di ri-direzionare l’output (input) del sistema operativo Unix: #./bisez < bisez.in >bisez.out dove il file bisez.in è un file di una sola linea che contiene l’input del programma zero: 2.5, 0.1 l’output del programma viene scritto nel file bisez.out che può essere successivamente stampato od utilizzato per altri scopi.

56 Metodo di Newton--Raphson
Dalla definizione di derivata prima Supponendo che sia uno ‘zero’ della funzione f(x) Si ottiene:

57 /* Paolo Lotti 182668 - newton.c */
# include <stdlib.h> # include <stdio.h> # define tol double fun(double z); double fun1(double z1); int main(void) { double x,x1,diff; int iter; printf(" Enter x:\n"); scanf("%lf",&x); iter=1; a: x1=x-fun(x)/fun1(x); diff=fabs(x-x1); printf(" iter=%2d x=%10.8lf x1=%10.8lf dx=%10.8lf\n", iter,x,x1,diff);

58 iter=iter+1; x=x1; if(diff>tol) goto a; return 0; } double fun(double g) { double p; p=g*g-5.; return p; double fun1(double g) p=2.*g;

59 Metodo della secante Se non si sa come calcolare analiticamente la derivata prima della funzione f(x), si può utilizzare il metodo della secante che calcola numericamente il valore della derivata prima di f: da cui:

60 /* Paolo Lotti 182668 - secante.c */
# include <stdlib.h> # include <stdio.h> # define tol double fun(double z); double fun1(double z,double z1); int main(void) { double x,x1,x2,diff; int iter; printf(" Enter x,x1:\n"); scanf("%lf,%lf",&x,&x1); iter=1; a: x2=x-fun(x)/fun1(x,x1); diff=fabs(x-x2); printf(" iter=%2d x=%10.8lf x1=%10.8lf dx=%10.8lf\n", iter,x,x2,diff);

61 iter=iter+1; x=x1; x1=x2; if(diff>tol) goto a; return 0; } double fun(double g) { double p; p=g*g-5.; return p; double fun1(double g,double h) p=(fun(g)-fun(h))/(g-h);

62 Newton-Raphson Enter x: 1. iter= 1 x= x1= dx= iter= 2 x= x1= dx= iter= 3 x= x1= dx= iter= 4 x= x1= dx= iter= 5 x= x1= dx= Secante Enter x,x1: 1.,1.3 iter= 1 x= x1= dx= iter= 2 x= x1= dx= iter= 3 x= x1= dx= iter= 4 x= x1= dx= iter= 5 x= x1= dx= iter= 6 x= x1= dx= iter= 7 x= x1= dx=

63 Bisezione Enter x: 1. iter= 1 x=1.00000000 y=-4.00000000

64 iter=18 x= y= iter=19 x= y= iter=20 x= y= iter=21 x= y= iter=22 x= y= iter=23 x= y= iter=24 x= y= iter=25 x= y= iter=26 x= y= iter=27 x= y= iter=28 x= y= iter=29 x= y= iter=30 x= y= iter=31 x= y= iter=32 x= y= iter=33 x= y= iter=34 x= y= iter=35 x= y= iter=36 x= y= iter=37 x= y= iter=38 x= y=

65 Calcolo di un integrale definito - quadratura
Introducendo un numero pari di intervalli nell’intervallo di integrazione [a,b] di larghezza h, l’integrale può essere riscritto nella forma seguente: In particolare sarà sufficiente sapere come calcolare approssimando la funzione mediante un’espressione che possa essere integrata esattamente in questo intervallo.

66 Definiamo, per alleggerire il formalismo,

67 Il caso più semplice, regola dei trapezi, è quello di
approssimare linearmente la funzione considerata nell’intervallo -h,0 e 0,+h: rispettivamente. Conseguentemente:

68 Un’approssimazione migliore si ottiene considerando
l’espanzione in serie di Taylor all’ordine successivo: da cui: Osserviamo che la precisione di questa espressione è migliore di quanto atteso dal momento che il termine successivo a quello considerato nello sviluppo in serie di Taylor non contribuisce al calcolo dell’integrale.

69 Utilizzando queste espressioni si ottengono rispettivamente
le espressioni complete per la regola dei trapezi e quella di Simpson: e

70 # include <stdlib.h>
# include <stdio.h> main() { int i,num[5]; for(i=1; i<=5; i=i++) num[i]=i*i; for(i=0; i<=5; i=i++) printf(" num[%2d]=%3d\n",i,num[i]); } Array (vettore) num[ 0]= num[ 1]= 1 num[ 2]= 4 num[ 3]= 9 num[ 4]= 16 num[ 5]= 25

71 /* Paolo Lotti 182668 - trape.c */
# include <stdlib.h> # include <stdio.h> # include <math.h> double fun(double z); int main(void) { double a,b,x,dx,integ,exa; int N,N1,i,coef[1000],rest; printf(" Enter a,b:\n"); scanf("%lf,%lf",&a,&b); exa=fun(b)-fun(a);

72 a: printf(" Enter N:\n");
scanf("%d",&N); rest=N%2; if(rest!=0) { printf("N must be an even number!\n"); goto a; } dx=(b-a)/N; printf("h=%lf\n\n",dx); N1=N+1; coef[1]=1; coef[N1]=coef[1]; for(i=2; i<=N; i=i+1) coef[i]=2;

73 integ=0.; for(i=1; i<=N1; i=i+1) { printf(" coef[%2d]=%1d\n",i,coef[i]); x=a+(i-1)*dx; integ=integ+coef[i]*fun(x); } integ=integ*dx/2.; printf("\n integ= %lf exact= %lf\n",integ,exa); return 0; double fun(double g) double p; p=exp(g); return p;

74 /* Paolo Lotti 182668 - simp.c */
# include <stdlib.h> # include <stdio.h> # include <math.h> double fun(double z); int main(void) { double a,b,x,dx,integ,exa; int N,N1,i,ifac,coef[1000],rest; printf(" Enter a,b:\n"); scanf("%lf,%lf",&a,&b); exa=fun(b)-fun(a);

75 a: printf(" Enter N:\n");
scanf("%d",&N); rest=N%2; if(rest!=0) { printf("N must be an even number!\n"); goto a; } dx=(b-a)/N; printf("h=%lf\n",dx); N1=N+1; coef[1]=1; coef[N1]=coef[1];

76 ifac=2; for(i=2; i<=N; i=i+1) { ifac=6-ifac; coef[i]=ifac; } integ=0.; for(i=1; i<=N1; i=i+1) printf(" coef[%2d]=%1d\n",i,coef[i]); x=a+(i-1)*dx; integ=integ+coef[i]*fun(x); integ=integ*dx/3.; printf("\n integ= %lf exact= %lf\n",integ,exa); return 0;

77 double fun(double g) { double p; p=exp(g); return p; }

78 N h trape simpson

79 N h trape simpson

80 Funzioni il cui argomento è di tipo double e restituiscono
un numero anch’esso di tipo double: acos(x) funzione trigonometrica inversa del coseno di x; il risultato è espresso in radianti ed è compreso tra 0 e asin(x) funzione trigonometrica inversa del seno di x; il risultato è espresso in radianti ed è compreso tra atan(x) funzione trigonometrica inversa della tangente di x; cos(x) funzione trigonometrica che calcola il coseno di x, espresso in radianti cosh(x) coseno iperbolico di x , ,

81 exp(x) funzione esponenziale di x
log(x) logaritmo naturale di x log10(x) logaritmo in base 10 di x sin(x) funzione trigonometrica che calcola il seno di x espresso in radianti sinh(x) seno iperbolico di x sqrt(x) funzione radice quadrata di x tan(x) funzione trigonometrica che calcola la tangente di x espresso in radianti tanh(x) tangente iperbolica di x


Scaricare ppt "Prof. Paolo Lotti Dr. Matteo Melani Dr. Antonio Ceseracciu"

Presentazioni simili


Annunci Google