Calcolo della radice quadrata Parte I: Metodo

LABORATORIO DI CALCOLO, CANALE Q-Z
ESERCITAZIONE 4, 5 NOVEMBRE 2015
Calcolodellaradicequadrata
Cisonodiversialgoritmiitera0viperilcalcolodellaradicequadratadiunnumeroposi0voa.
Inquestaesercitazioneimplementeremoduediques0metodi.
ParteI:MetodoBabilonese
Laradicequadratar = √adiunnumeroposi0voasipuòcalcolareconunmetodo
itera0vocomeillimitedellasuccessione
1
a
rn+1 = (rn + )
2
rn
Ilvaloredelprimoterminer0e`ininfluenteepuòesseresceltoapiacere.Infa=potete
verificarechecambiandotalevaloreinizialeilrisultatononcambia!Ilcicloterminaquando
ladifferenza|rn+1-rn|tradueterminisuccessivièminoredellaprecisioneεdesiderata.
Scrivereunprogrammaesercitazione04.cpereseguireiseguen0passi
1.Scriveresulloschermounmessaggioinforma0voriguardoilprogramma
2.Acquisiredall’utenteilvaloredellaprecisioneepsiloncompresatra[1.E-6,0.1]
everificarnelacorreMezza.Incasodierroreripeterel’operazione.
3.Acquisiredall’utenteilvaloredelterminer0
4.Acquisiredall’utenteilvalorediaeverificarechesiaposi0vo.Incasodierroreripetere
l’operazione.
5.Implementareilmetododibabiloneseu0lizzandounopportunociclo.
1.inciascunaiterazionescriveresulloschermoilnumerodiiterazionieffeMuatee
las0maaMualedelrisultatoconilformato%4.20lf
6.Alterminedelciclo,scriveresulloschermoilnumerodiiterazioniNtoteseguite
7.ScriveresulloschermoladifferenzatrailvaloreoMenutodavoiesqrt(a)u0lizzando
ilformato%2.2Eperscrivereilrisultatoconlanotazionescien0ficaperapprezzare
ancheledifferenzemoltopiccole
8.Poteteeseguireilprogrammaperlostessovalorediamavariandolaprecisione
epsilonpervederecomecambiaNtotalvariarediepsilon.
LABORATORIO DI CALCOLO, CANALE Q-Z
ESERCITAZIONE 4, 5 NOVEMBRE 2015
ParteII:MetodoAlterna7vo
L’inverso1/√adellaradicequadratadiunnumeroposi0voasio=enecomeillimitedella
successione
3
a 3
yn+1 =
2
yn
2
yn
Ancheselasceltadelterminey0e`arbitraria,tuMaviailmetodoe`piùsensibilealvalore
sceltoepuòfacilmentedivergere(provarepercredere!).Occorrequindiavereunas0ma
inizialedi
y0 ~ 1/√aconilmetodobabilonese.Scrivereunprogramma
esercitazione04bis.c:
1.Acquisiredall’utenteilvaloredellaprecisioneepsiloncompresatra[1.E-6,0.1]
everificarnelacorreMezza.Incasodierroreripeterel’operazione.
2.Acquisiredall’utenteilvalorediaeverificarechesiaposi0vo.Incasodierroreripetere
l’operazione.
3.U0lizzandounvaloreapiaceredir0,fare2iterazioniconilmetodobabiloneseper
calcolarer2
4.Implementareilnuovometodoitera0voconlasuccessioneynconunopportunociclo
cheu0lizzicomevaloreinizialey0 = 1/r2
5.ScriveresulloschermoilnumerodiiterazioniNtoteseguiteprimadiinterrompereil
cicloquando| 1/yn+1 - 1/yn |<epsilon
6.Scriveresulloschermoladifferenzatrailvaloredi1/y esqrt(a)u0lizzandola
notazionescien0fica.
Suggerimen7
•U0lizzarevalorino0diaperverificarelacorreMezzadell’algoritmo
•Commentarebrevementeipassipiu`importan0nelcodiceu0lizzandoicommen0del
linguaggioCconlasintassi/* commento */
•Includeregliopportuniheaderfilenecessariperlacompilazioneecorreggerei
warning
•Percompilareecrearel’eseguibiledovetefare
gcc -Wall -o app.exe programma.c -lm