2024(e)ko otsailaren 8(a), osteguna

7. Ariketa: zenbakien funtzio estandarrak

ZER DAKIDAN:
Funtzio batek sarreraren bat hartzen du eta emaitza bakar itzultzen du. Dagoeneko funtzio estandar hauek erabili ditut:
  • abs
  • arctan
  • arcsin (math unitatea beharrezkoa da)
  • arccos (math unitatea beharrezkoa da)
  • sin eta cos
  • sqrt
  • round, trunc, frac eta int



ZER IKASIKO DUDAN:
Funtzioekin jarraituz random funtzio estandarra ikasiko dut eta hori erabiltzeko randomize prozedura estandarra ikasiko dut. Funtzioekin jarraituz, ln eta exp funtzio estandarrak ikasiko ditut ere. Bide batez, datuak teklatuz emateko readln prozedura erabiliko dut.


Zerrenda honetan azpiprograma estandar batzuk deskribatzen dira:
FUNCTION    ABS    ( Zenbakia : Integer | Real ) : Integer | Real ;
FUNCTION    SQR    ( Zenbakia : Integer | Real ) : Integer | Real ;
FUNCTION    SQRT   ( Zenbakia : Integer | Real ) : Real ;
FUNCTION    EXP    ( Zenbakia : Real ) : Real ;
FUNCTION    LN     ( Zenbakia : Real ) : Real ;
FUNCTION    SIN    ( Angelua : Real ) : Real ;
FUNCTION    COS    ( Angelua : Real ) : Real ; 
FUNCTION    ARCSIN ( Zenbakia : Real ) : Real ;
FUNCTION    ARCCOS ( Zenbakia : Real ) : Real ;
FUNCTION    ARCTAN ( Tangentea : Real ) : Real ;
FUNCTION    ROUND  ( Zenbakia : Real ) : Integer ;
FUNCTION    TRUNC  ( Zenbakia : Real ) : Integer ;
FUNCTION    FRAC   ( Zenbakia : Real ) : Real ;
FUNCTION    INT    ( Zenbakia : Real ) : Real ;
FUNCTION    RANDOM ( Zenbakia : Integer ) : Integer ;
FUNCTION    RANDOM : Real ;
PROCEDURE   RANDOMIZE ;

Randomize eta Random(parametroa)

Dado bat 3 aldiz jaurti dela simulatuko dugu. Dadoak 6 posibilitate ditu: 1, 2, 3, 4, 5 eta 6. Gure programak 3 jaurtiketa aleatorien emaitzak batuko ditu eta baturaren arabera mezu hau pantailaratuko du:

  • 3 jaurtiketen baturak 15 edo gehiago balio badu, pantailaraketa Oso ondo izango da
  • 3 jaurtiketen batura 11 eta 14 artekoa bada, pantailaraketa Nahiko ondo izango da
  • 3 jaurtiketen batura 6 eta 10 artekoa bada, pantailaraketa Txarto izango da
  • 3 jaurtiketen baturak 5 edo gutxiago balio badu, pantailaraketa Oso txarto izango da


Randomize eta Random

Zenbaki errealekin lan eginez, balio aleatorioak lortzen dituen programa idatziko dugu.

Auto baten abiadura adierazten duen zenbaki erreal bat aleatorioki lortuko da, baina zenbaki aleatorio horren balioa bi mugen artekoa izan beharko da: behemuga 27.8 km/h eta goimuga 104.5 km/h.

Auto horren denbora adierazten duen zenbaki erreal bat aleatorioki lortuko da, eta bigarren zenbaki aleatorio horren balioa bi mugen artekoa izan beharko da ere: behemuga 0.8 segundo eta goimuga 2.0 segundo.

Eskatzen den programaren exekuzio-adibide bat jarraian erakusten da:



Ln eta Exp

5.2x=7.9  bezalako ekuazio esponentziala ebazteko logaritmoa erabil behar da, hots, logaritmo nepertarra kalkulatzen duen ln funtzio estandarra. Modu beretsuan, 7.13.4=x bezalako ekuazioak ebazteko exp funtzio estandarra aplika dezakegu.

Eskatzen den programaren exekuzio-adibide bat ikusi:








Ln eta beste oinarriko logaritmoak

Zenbaki errealekin lan eginez, balio positibo bat teklatuz irakurri eta programak zenbakiaren logaritmo hamartarra kalkula dezala. Logaritmo hamatarra edo bitarra eskuratzeko funtzio estandarrik ez dagoenez, logaritmo nepertarraren funtzioa aplikatu beharko da formula hauen arabera:

log10(x) = ln(x)/ln(10)
log2(x) = ln(x)/ln(2)



Exp eta beste oinarriko potentziak

Zenbaki errealekin lan eginez, balio positibo edo negatibo bat teklatuz irakurri (adibidez 7.1) eta programak zenbakiaren 10-eko potentzia kalkula dezala (emaitza x=107.1). Horrelako lana burutzeko funtzio estandarrik ez dagoenez, logaritmo nepertarraren funzioa eta e zenbakiari dagokion potentziaren funtzioa aplikatu beharko dira esleipen hau eginez:

ln(rEmaitza) := rZenbakia*ln(10);
rEmaitza := exp(rZenbakia*ln(10));

Goiko esleipenaren justifikazioa jarraian ematen da:
            Z datua den zenbaki erreala
            X lortu nahi den potentzia

            X = 10^Z   logaritmo hamartarrrak hartuz:
                       log(X) = log(10^Z)  --->  log(X) = Z·log(10) 
                       log(X) = Z·log(10)  --->  log(X) = Z·1
                       ln(X)/Ln(10) = Z·1  --->  ln(X) = Z·ln(10)
            ln(X) = Z·ln(10)   exp funtzioa aplikatuz:
                               ln(X) = Z·ln(10) 
                               exp(ln(X)) = exp(Z·ln(10))
                               X = exp(Z·ln(10))




ArcSin eta ArcCos

Zenbaki errealekin lan eginez, angelu baten sinua adierazten duen balio bat teklatuz irakurri (-1.0 eta +1.0 arteko balioa) eta programak angelua lortuko du radianetan:

rAngelua := arcsin(rSinuarenDatua);

Gauza bera egin daiteke datua angeluaren kosinua baldin bada arccos funtzioa aplikatuz. Edozein kasutan, arcsin eta arccos funtzio estandarrak erabil ahal izateko math unitatea kargatu beharko da (arctan funtzioak ez du math unitearen beharrik).

Hemen arcsin funtzioaren grafikoa (irudiaren gainean klik egin balioak emateko):



Hauxe izan daiteke eskatzen den programaren irteera:








 

iruzkinik ez:

Argitaratu iruzkina

Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.