2024(e)ko martxoaren 1(a), ostirala

7. astea | Taylor azpiprogramaz (edozein angelurako)








7. astea | Taylor (angelu txikiekin) blog-artikuluan ikusi dugu Taylor metodoa nola aplikatzen zaion 0 eta Π/2 artean dagoen sarrerako x angelu bati. Baina eta edozein angelu sartuko bagenu? Ikusitako programak ondo ibiliko lirateke? Kalkulu ahulena zein izan daiteke?

7. astea | Taylor (angelu txikiekin) artikuluko programa aldatzen baduzu sarrerako datua 0.0 gradu eta 360.0 gradu artekoa izan dadin; ikusiko duzu nola 160 graduko angelu batekin ondo dabilela, baina 160.9 graduko angeluarekin programa ez dabilela. Arazoa faktorialaren kalkulu honetan dago:
function fnliFaktoriala(iZbk:integer): longint;
var
   j: integer;
   liMetatua: longint;
begin
   liMetatua := 1;
   for j:=1 to iZbk do
   begin
      liMetatua := liMetatua*j;
      //writeln('j=', j, ' ---faktoriala-> ', liMetatua);   (* agindu hau indarrean jarri programa ulertzeko *)
   end;
   fnliFaktoriala := liMetatua;
end;
Faktorialaren kalkulua ondo dago. Baina iZbk datua handia bada, gerta daiteke liMetatua handiegia izatea longint datu-motarako eta orduan funtzioaren emaitza desegokia izango litzateke.

Izan ere, goiko funtzio horretan, faktoriala lortzean emaitza longint datu-motako aldagai batean gordetzen da, eta angelu handiekin faktorialaren balioak longint datu-motak duen muga gainditzen du. Horregatik, 0.0 gradu eta 360.0 gradu arteko angeluekin lan egin ahal izateko, faktorialaren funtzioa aldatuko dugu bere emaitza real datu-motakoa izan dadin.
function fnrFaktoriala(iZbk:integer): real;
var
   j: integer;
   rMetatua: real;
begin
   rMetatua := 1.0;
   for j:=1 to iZbk do
   begin
      rMetatua := rMetatua*j;
      //writeln('j=', j, ' ---faktoriala--> ', rMetatua:0:10);   (* agindu hau indarrean jarri programa ulertzeko *)
   end;
   fnrFaktoriala := rMetatua;
end;

Sarrerako angelua oso handia bada, esate baterako 98765.9 graduko angelua sartuko bagenu, hurrengo moldaketa aplikatuko genioke:
Datua den 98765.9 gradu zati 360 egin ondoren, 98765.9/360 eta zatiketaren hondarrarekin geratuko ginateke bere kosinua kalkulatzeko. Zatiketa horren zatidurak adierazten du 98765.9 graduko angeluak zirkuluari zenbat bira ematen dizkion eta kosinuaren kalkulurako garrantzirik ez du. Ez-osoa den zenbaki baten atalak nola lortzen diren gogoratu 2. astea | zenbaki erreal baten atalak artikulua birpasatuz.


 Emaitza laster... 

 

iruzkinik ez:

Argitaratu iruzkina

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