errepikakorrak etiketadun mezuak erakusten. Erakutsi mezu guztiak
errepikakorrak etiketadun mezuak erakusten. Erakutsi mezu guztiak

2023(e)ko otsailaren 21(a), asteartea

5. astea | ASCII taularen zati bat

ASCII_Taula.pas programa honek ASCII taularen zati bat erakusten du. ASCII taulako aurreneko karaktereak kontrol karaktereak dira eta horregatik, gure programan 30 kodea duen karakterearekin hasi eta 219 kodea duen karaktearekin bukatu dugu.



Karaktereak pantailan aurkezterakoan, hamarnaka hartu ditugu. Horrela karaktere jakin bati dagokion kodea ezagutzeko, W karakterea adibidez, bere lerroko zenbakia hartuko dugu 8 eta bere zutabeko zenbakia 7,  eta biak konposatuz 87 lortuko dugu, W karaktereari dagokion ASCII kodea.









Ord() funtzioak karaktere bati dagokion ordinala, zenbakia, eskaintzen digu, datua W karakterea bada, funtzio horrek 87 emango du. Alderantziz, gure datua karaktere bati dagokion ASCII kodea bada, adibidez 113, karakterea eskuratzeko Chr() funtzioaren bitartez egin daiteke q lortuz.



Programaren gakoa kontagailu bat erabiltzean dago, 30-tik 219-ra doan kontagailua, eta prozesu errepikakor bat antolatu karaktereak pantailaratuko dituena.





Aurrekoa baino errazagoak diren antzeko programak:



{ ASCII_Zifrak.pas izeneko programa honek  }
{ 0-tik 9-ra hamar digituak erakusten ditu }
program ASCII_Zifrak ;
uses
crt ;
var
cZifra : char ;
begin
writeln ;
writeln ;

writeln(' Karakterea Kodea') ;
writeln(' ---------- -----') ;

for cZifra:='0' to '9' do
begin
writeln(cZifra:15, ' -----> ', ord(cZifra)) ;
end ;

writeln(' ---------- -----') ;
writeln(' Karakterea Kodea') ;

repeat until keypressed ;
end.






5. astea | zenbaki edo letra sorta baten maximoa

Zenbaki osoen multzo batean zein da zenbakirik handiena?  


Hainbat zenbaki teklatuaren bitartez irakurri eta guztien artean maximoa zehaztu. Hona hemen algoritmoa:











  1. Zenbakien sorta batekin lan egingo dugu, zenbakien kopurua zehaztu

  2. Sortaren lehen zenbakia irakurri

  3. Lehen zenbaki hori maximoa da

  4. Errepikatu zenbakien sorta amaitu arte:


    • Zenbaki berria irakurri

    • Zenbaki berria orain arteko maximoa baino handiagoa bada maximoaren balioa berritu


  5. Maximoa erakutsi






Demagun iZenbakienKopurua kopuru osoa eta positiboa teklatuaren bitartez irakurriko dela, adibidez 5. Prozesu errepikakor batean 5-1=4 itzuli eman eta itzuliak kontrolatzeko k kontagailua erabili, 5-1=4 itzuliak amaitzean maximoaren balioa pantailaratu. Hau da algoritmotik eratorren taula:








































    k        iZbk   
   iMaximoa   
8 8
2 11
11
3 4 11
4 23 23
5 17 23


23




Algoritmotik programara jauzi egitean programazio-lengoaiaren elementuak aintzat hartuko dira eta jarraian baliokidean diren bi programa eskaintzen ditugu. Baliokideak izan arren bigarrena hobea da, lehen programak ez baitu algoritmoa zehatz-mehatz jarraitzen.








ZenbakiSortaBatenMaximoa_1.pas



Programa honek ez du goiko algoritmoa jarraitzen, zenbakiaren irakurketa guztiak prozesu errepikakorraren barruan egiten direlako. Horregatik iMaximoa aldagaiak hasieraketa berezi bat behar du derrigorrez:


{ Maximoaren hasieraketa berezia prozesu errepikakorra baino lehen }

program ZenbakiSortaBatenMaximoa_1 ;

uses
crt ;
var
iZenbakiKopurua, iZbk, iZenbatgarrena, iMaximoa, k : integer ;

begin
clrscr ;
writeln('Zenbaki positibo osoen sorta batean sartutako maximoa zehaztu') ;
writeln('-------------------------------------------------------------') ;
writeln ;

repeat
write('Zenbaki osoen kopuru eman: ') ;
readln(iZenbakiKopurua) ;
until iZenbakiKopurua > 0 ;

iMaximoa := 0 ; { maximoa bilatzen digulako, hasieraketa baliorik txikiena izan dadila; }
{ hori dela eta, iMaximoa 0 delako, lehen itzulian iMaximoa aldatuko da }
for k:=1 to iZenbakiKopurua do
begin
repeat
write(k, '. zenbaki positiboa eman: ') ;
readln(iZbk) ;
until iZbk > 0 ;

if iZbk > iMaximoa then { oraintxe sartutakoa handiagoa denean }
begin
iMaximoa := iZbk ;
iZenbatgarrena := k ;
writeln('Une honetan, iMaximoa=', iMaximoa, ' eta iZenbatgarrena=', iZenbatgarrena) ;
end ;
end ;

writeln ;
writeln('Maximoa ', iMaximoa, ' izan da eta sortako ', iZenbatgarrena, '. izan da') ;

repeat until keypressed ;
end.






ZenbakiSortaBatenMaximoa_2.pas



Goiko algoritmoa jarraituz, zenbakiaren lehen irakurketa prozesu errepikakorra baino lehen egiten delako iMaximoa aldagaiak hasieraketa berezerik ez du behar, iMaximoa hasiera iZbk izango delako:


{ Prozesu errepikakorra baino lehen maximoaren hasieraketa: iMaximoa:=iZbk; }

program ZenbakiSortaBatenMaximoa_2 ;

uses
crt ;
var
iZenbakiKopurua, iZbk, iZenbatgarrena, iMaximoa, k : integer ;

begin
clrscr ;
writeln('Zenbaki positibo osoen sorta batean sartutako maximoa zehaztu') ;
writeln('-------------------------------------------------------------') ;
writeln ;

repeat
write('Zenbaki osoen kopuru eman: ') ;
readln(iZenbakiKopurua) ;
until iZenbakiKopurua > 0 ;

repeat
write('Lehen zenbaki positiboa eman: ') ;
readln(iZbk) ;
until iZbk > 0 ;

iMaximoa := iZbk ; { lehen zenbakia iMaximoa da }
iZenbatgarrena := 1 ; { maximoaren posizioa 1 da }
for k:=2 to iZenbakiKopurua do
begin
repeat
write(k, '. zenbaki positiboa eman: ') ;
readln(iZbk) ;
until iZbk > 0 ;

if iZbk > iMaximoa then { oraintxe sartutakoa handiagoa denean }
begin
iMaximoa := iZbk ;
iZenbatgarrena := k ;
writeln('Une honetan, iMaximoa=', iMaximoa, ' eta iZenbatgarrena=', iZenbatgarrena) ;
end ;
end ;

writeln ;
writeln('Maximoa ', iMaximoa, ' izan da eta sortako ', iZenbatgarrena, '. izan da') ;

repeat until keypressed ;
end.






LetraSortaBatenMinimoa.pas



Zenbakiekin lan egin ordez karakterekin lan egingo bagenu, goiko algoritmoak berdin-berdin balio du. Jarraian ematen den programan ikusi larrien alfabetoko minimoa nola lortzen den:


{ Prozesu errepikakorra baino lehen minimoaren hasieraketa: cMinimoa:=cLetra; }

program LetraSortaBatenMinimoa ;

uses
crt ;
var
iLetraKopurua, iZenbatgarrena, k : integer ;
cLetra, cMinimoa : char ;

begin
clrscr ;
writeln('Larrien alfabetoko letra sorta batean sartutako minimoa zehaztu') ;
writeln('---------------------------------------------------------------') ;
writeln ;

repeat
write('Zenbat letra sartuko duzu? kopuru osoa eta positiboa eman: ') ;
readln(iLetraKopurua) ;
until iLetraKopurua > 0 ;

repeat
write('Lehen letra eman: ') ;
readln(cLetra) ;
cLetra := upcase(cLetra) ;
until (cLetra >= 'A') and (cLetra <= 'Z') ;

cMinimoa := cLetra ; { lehen letra cMinimoa da }
iZenbatgarrena := 1 ; { minimoaren posizioa 1 da }
for k:=2 to iLetraKopurua do
begin
repeat
write(k, '. letra eman: ') ;
readln(cLetra) ;
cLetra := upcase(cLetra) ;
until (cLetra >= 'A') and (cLetra <= 'Z') ;

if cLetra < cMinimoa then { oraintxe sartutakoa txikiagoa denean }
begin
cMinimoa := cLetra ;
iZenbatgarrena := k ;
writeln('Une honetan, cMinimoa=', cMinimoa, ' eta iZenbatgarrena=', iZenbatgarrena) ;
end ;
end ;

writeln ;
writeln('Minimoa ', cMinimoa, ' izan da eta sortako ', iZenbatgarrena, '. izan da') ;

repeat until keypressed ;
end.




Hauxe da programa horren balizko irteera bat:










Programaren aurreko irteeraren taula hauxe da:













































   k       cLetra   
   cMinimoa   
W W
2 K K
3 P K
4 G G
5 H G
6 M G


G



 



2023(e)ko otsailaren 17(a), ostirala

5. astea | biderkari bat kalkulatzen

Bigarren kontrola prestatze aldera egin ariketa bi hauek, baina aurretik 5. astea | batukari bat kalkulatzen ariketak egitea komeni zaizu:







Biderkaria1.pas




Teklatuaren bitartez N zenbaki osoa eta positiboa irakurriz ondoko biderkariaren emaitza lortu:



Hau da, biderkagaien kopurua ezaguna denez FOR-DO agindua erabili ahal izango da, sarrerako datua 5 denean biderkaria hau delarik:




        (1 - 1/4) * (1 + 1/9) * (1 - 1/16) * (1 + 1/25)





Hementxe daukazu ariketaren ... Biderkaria1.pas ... iturburu-programa.









Biderkaria2.pas




Bigarren biderkari hau kalkulatzerakoan ez digute ematen biderkagaien kopurua. Horren ordez erabiltzaileak hauta dezake bi biderkarien (bi emaitzen) arteko aldea zein txikia izango den, hots, zenbat eta biderkagai gehiago aintzat hartu biderkaria zehatzagoa da baina gero eta garrantzi txikiago du beste biderkagai berri bat biderkatzeak. Hortaz, biderkagaiak joan biderkatzen jarraian erakusten den baldintza bete arte Abs(rAzkenEmaitza - rAurrekoEmaitza) < rDiferentzia non rDiferentzia teklatuaren bitartez irakurritako zenbaki erreala eta positiboa den, eta rAzkenEmaitza zein rAurrekoEmaitza programan kalkulatutako balioak diren.





Hementxe daukazu ariketaren ... Biderkaria2.pas ... iturburu-programa.





5. astea | batukari bat kalkulatzen

Bigarren kontrola prestatze aldera, egin itzazue ariketa bi hauek:







Batukaria1.pas




Teklatuaren bitartez S zenbaki osoa eta positiboa irakurriz ondoko batukariaren emaitza lortu:



Hau da, batugaien kopurua ezaguna denez FOR-DO agindua erabili ahal izango da, sarrerako datua 7 denean batukaria hau delarik:




    -1/1    +1/4    -1/9    +1/16    -1/25    +1/36    -1/49




Hementxe daukazu ariketa honen ... Batukaria1.pas ... iturburu-programa.








Batukaria2.pas







Batukari hau kalkulatzerakoan ez digute ematen batugaien kopurua. Horren ordez, bi batukarien arteko aldea zein txikia izango den erabiltzaileak hautatuko du, hots, zenbat eta batugai gehiago gehitu batukaria zehatzagoa da, baina beste batugai berri bat gehitzeak gero eta garrantzi txikiago du. Hortaz, baldintza honelako zerbait izango da: batugaiak joan gehitzen ondokoa bete arte Abs(rAzkenEmaitza - rAurrekoEmaitza) < rDiferentzia non rDiferentzia teklatuaren bitartez irakurritako zenbaki erreala eta positiboa den, eta rAzkenEmaitza zein rAurrekoEmaitza programan kalkulatutako balioak diren.





Hementxe daukazu ariketa honen ... Batukaria2.pas ... iturburu-programa.





5. astea | Newton-en metodoa funtzio esponentzialekin

Newton-Raphson hurbilketa-metodoa ex-x3=0 ekuazioaren erro bat kalkulatzeko





Newton–Raphson metodoa (Newton-en metodo gisa ere ezagutzen dena) zenbakizko analisi-metodo bat da. Metodo honek funtzioen erro gero eta hobeak lortzen ditu, hau da, funtzioa zero egiten duen x balioa bilatzen du. Beste modu batez esanik, funtzioak OX ardatza mozten duen balioa (funtzioaren erroa) ematen du Newton–Raphson metodoak. Algoritmoa erroaren hurbilketa batekin hasten da eta urrats bakoitzean erroaren hurbilketa hobea lortzen du.



Aldagai bakarreko funtzio errealen kasuan honakoa da metodoa:



Izan bedi ƒ funtzioa x errealentzat definitua, eta izan bedi ƒ' bere deribatua. Erroaren hasierako hurbilketa bat behar dugu, x0. Erroaren hurbilketa horretan oinarrituz hurbilketa hobea izango den x1 honelaxe lortzen da:




Iterazioak eginez, n+1 hurbilketa n hurbilketan oinarritzen da formula honen arabera:




Formula horren zergatia geometrikoki adieraz daiteke. Hurrengo irudiko lerro urdina  f(x) funtzioa da, eta lerro zuzen gorria f(x) funtzioaren tangentea (xn, f(xn)) puntuan:






Berde koloreko distantziari hobekuntza deitzen badiogu, orduan alfa angeluaren tangentea f(xn)/hobekuntza litzateke, baina tangente hori f(x) funtzioaren deribatua (xn, f(xn))puntuan da, lerro zuzen gorriaren malda alfa angeluaren tangentea da. Horregatik:




tag(alfa)= f(xn)/hobekuntza   eta aldi berean   tag(alfa)=malda= f'(xn)

beraz    f'(xn)= f(xn)/hobekuntza     (non  hobekuntza=xn-xn+1)





f'(xn)= f(xn)/(xn-xn+1)    nondik    xn-xn+1= f(xn)/f'(xn)





xn+1 = xn f(xn)/f'(xn)







ex-x3=0 ekuazioaren erro bat kalkula dezagun Newton–Raphson metodoa aplikatuz:


f(x)=ex-x3


f'(x)=ex-3x2




Hurrengo irudian ex-x3 funtzioaren itxura ikus daiteke:









Irudiaren gainean klik egin ex-x3 funtzioa aztertzeko



Hau da ariketaren NewtonEsponentzialak.exe programa exekutagarria. Hurbilketa desberdinen araberako programaren bi irteera hauek erakusten dira jarraian:







Nahiz eta hasierako hurbilketa 0.98 izan, emaitza eskumako erroa 4.5364 da








Hasierako hurbilketa 1.2 bada, emaitza ezkerreko erroa 1.85718 da




5. astea | Newton-en metodoa funtzio trigonometrikoekin

Newton-Raphson hurbilketa-metodoa cos(x)-0.5x-2=0 ekuazioaren erro bat kalkulatzeko




Newton–Raphson metodoa (Newton-en metodo gisa ere ezagutzen dena) zenbakizko analisi-metodo bat da. Metodo honek funtzioen erro gero eta hobeak lortzen ditu, hau da, funtzioa zero egiten duen x balioa bilatzen du. Beste modu batez esanik, funtzioak OX ardatza mozten duen balioa (funtzioaren erroa) ematen du Newton–Raphson metodoak. Algoritmoa erroaren hurbilketa batekin hasten da eta urrats bakoitzean erroaren hurbilketa hobea lortzen du.




Aldagai bakarreko funtzio errealen kasuan honakoa da metodoa:


Izan bedi ƒ funtzioa x errealentzat definitua, eta izan bedi ƒ' bere deribatua. Erroaren hasierako hurbilketa bat behar dugu, x0. Erroaren hurbilketa horretan oinarrituz hurbilketa hobea izango den x1 honelaxe lortzen da:




Iterazioak eginez, n+1 hurbilketa n hurbilketan oinarritzen da formula honen arabera:





Formula horren zergatia geometrikoki adieraz daiteke. Hurrengo irudiko lerro urdina  f(x) funtzioa da, eta lerro zuzen gorria f(x) funtzioaren tangentea (xn, f(xn)) puntuan:





Berde koloreko distantziari hobekuntza deitzen badiogu, orduan alfa angeluaren tangentea f(xn)/hobekuntza litzateke, baina tangente hori f(x) funtzioaren deribatua (xn, f(xn))puntuan da, lerro zuzen gorriaren malda alfa angeluaren tangentea da. Horregatik:




tag(alfa)= f(xn)/hobekuntza   eta aldi berean   tag(alfa)=malda= f'(xn)

beraz    f'(xn)= f(xn)/hobekuntza     (non  hobekuntza=xn-xn+1)





f'(xn)= f(xn)/(xn-xn+1)    nondik    xn-xn+1= f(xn)/f'(xn)





xn+1 = xn f(xn)/f'(xn)







cos(x)+0.5x-2=0 ekuazioaren erro bat kalkula dezagun Newton–Raphson metodoa aplikatuz:


f(x)=cos(x)+0.5x-2


f'(x)=-sin(x)+0.5





Hurrengo irudian cos(x)+0.5x-2 funtzioaren itxura ikus daiteke:








Irudiaren gainean klik egin cos(x)+0.5x-2 funtzioa aztertzeko




Hau da ariketaren NewtonTrigonometrikoak.exe programa exekutagarria. Hurbilketa desberdinen araberako programaren bi irteera hauek erakusten dira jarraian:








Hasierako hurbilketa 3.9 bada, emaitza 4.4734 erroa da









Hasierako hurbilketa 5.7 bada, emaitza 4.4734 erroa da




5. astea | Newton-en metodoa hirugarren graduko polinomioekin














Newton-Raphson hurbilketa-metodoa ax3+bx2+cx+d=0 ekuazioaren erro bat kalkulatzeko




Matematikan funtzio kubikoa funtzio polinomiko mota bat da, itxura kanonikoan honela definitua:






Non a, b, c eta d (a ≠ 0) zenbaki errealak diren.


Funtzio kubikoaren deribatua funtzio koadratikoa da eta bere integrala funtzio koartikoa da.








Newton–Raphson metodoa (Newton-en metodo gisa ere ezagutzen dena) zenbakizko analisi-metodo bat da. Metodo honek funtzioen erro gero eta hobeak lortzen ditu, hau da, funtzioa zero egiten duen x balioa bilatzen du. Beste modu batez esanik, funtzioak OX ardatza mozten duen balioa (funtzioaren erroa) ematen du Newton–Raphson metodoak. Algoritmoa erroaren hurbilketa batekin hasten da eta urrats bakoitzean erroaren hurbilketa hobea lortzen du.



Aldagai bakarreko funtzio errealen kasuan honakoa da metodoa:


Izan bedi ƒ funtzioa x errealentzat definitua, eta izan bedi ƒ' bere deribatua. Erroaren hasierako hurbilketa bat behar dugu, x0. Erroaren hurbilketa horretan oinarrituz hurbilketa hobea izango den x1 honelaxe lortzen da:





Iterazioak eginez, n+1 hurbilketa n hurbilketan oinarritzen da formula honen arabera:





Formula horren zergatia geometrikoki adieraz daiteke. Hurrengo irudiko lerro urdina  f(x) funtzioa da, eta lerro zuzen gorria f(x) funtzioaren tangentea (xn, f(xn)) puntuan:








Berde koloreko distantziari hobekuntza deitzen badiogu, orduan alfa angeluaren tangentea f(xn)/hobekuntza litzateke, baina tangente hori f(x) funtzioaren deribatua (xn, f(xn))puntuan da, lerro zuzen gorriaren malda alfa angeluaren tangentea da. Horregatik:



tag(alfa)= f(xn)/hobekuntza   eta aldi berean   tag(alfa)=malda= f'(xn)

beraz    f'(xn)= f(xn)/hobekuntza     (non  hobekuntza=xn-xn+1)




f'(xn)= f(xn)/(xn-xn+1)    nondik    xn-xn+1= f(xn)/f'(xn)




xn+1 = xn f(xn)/f'(xn)






ax3+bx2+cx+d  funtzioaren erro bat kalkula dezagun Newton–Raphson metodoa aplikatuz non ab, c eta d koefizienteak ezagunak diren. Hona hemen, Newton–Raphson metodotik eratorren formula:



xn+1 = xn f(xn)/f'(xn)


abc eta d ezagunak izanik x lortu:


f(x)=ax3+bx2+cx+d


f'(x)=3ax2+2bx+c





xi+1 = xi f(xi)/f'(xi)



xi+1 = xi - (axi3+bxi2+cxi+d)/(3axi2+2bxi+c)






Kontu berezia eduki beharko dugu 3axi2+2bxi+c adierazpenaren balioarekin. Ez dugu onartuko zero izatea bestela programa era desegokian bukatuko delako, hots, lehen tangentea ezin daiteke horizontala izan (tangente horrek ez luke OX ardatza moztuko).







Diskriminatzailearen araberako erroak

ax3+bx2+cx+d  funtzioaren erroak Δ diskriminatzailearen araberakoak dira. Diskriminatzailea hau da:


Δ = +18·a·b·c·d ‒4·b3·d +b2·c2 ‒4·a·c3 ‒27·a2·d2




ax3+bx2+cx+d  funtzioaren erroak Δ diskriminatzailearen arabera:








  • Δ > 0, diskriminatzailea positiboa bada, hiru erro desberdin eta errealak. Esate baterako: 1·x+2·x-5·x -6 = (x+3)·(x+1)·(x-2) polinomioa

  • Δ = 0, diskriminatzailea 0 bada, hiru erro erreal (bat doblea eta bestea bakuna, edo bat triplea). Esate baterako: 1·x+0·x-3·x +2 = (x+2)·(x-1)·(x-1) polinomioa, edo adibidez 1·x+3·x2 +3·x +1 = (x+1)·(x+1)·(x+1) polinomioa

  • Δ < 0, diskriminatzailea negatiboa bada, erro bat erreala eta beste biak konplexu konjugatuak. Esate baterako: 1·x+3·x+4·x +12 = (x+3)·(x2+4) polinomioa, edo adibidez antzekoa den 1·x+1·x-1.5·x +1 = (x+2)·(x2+x+0.5) polinomioa





Diskriminatzaile araberako simulazioak egiteko https://www.geogebra.org/m/WmS455FF webgunea bisita daiteke hurrengo irudietan erakusten den bezala:
















ax3+bx2+cx+d  funtzioaren erro bat kalkula dezagun, horretarako dagokion ax3+bx2+cx+d=0 ekuazioa formulatu ondoren hasierako x0 hurbilpena teklatuaren bitartez emango dugu Newton–Raphson metodoa aplikatu ahal izateko. Funtzio desberdinen grafikoak marrazteko Google-ren kalkulagailua erabil daiteke. Halaber, polinomio baten faktorizazioa egiteko ondoko bi zerbitzuak erabil daitezke:



Funtzio polinomikoaren erroak konplexuak direnean, haiek kalkulatzeko eta plano konplexuan irudikatzeko gune hau https://www.wolframalpha.com aproposa da.






ax3+bx2+cx+d=0 ekuazioa







Hirugarren mailako ax3+bx2+cx+d=0 ekuazioaren erro bat kalkulatzeko algoritmo bera erabiliko dugu. Lau koefizienteak a, b, c eta d ezagunak izanik x lortu:


f(x)=ax3+bx2+cx+d


f'(x)=3ax2+2bx+c



Orain ere, lerro horizontala zainduko dugu. Hau da, f'(x)=0 denean (malda zero denean) erroa ezin daiteke kalkulatu. Lehen bezala, gure programa berriak modu berezituan prozesatuko du 3ax2+2bx+c=0 egoera.










Δ > 0 adibidea, hurrengo irudian x3+12x2-3x-15 funtzioaren itxura ikus daiteke:





Irudiaren gainean klik egin x3+12x2-3x-15 funtzioa aztertzeko




Δ = 0 adibidea, hurrengo irudian (x-2)(x-2)(x+1) funtzioaren itxura ikus daiteke:




Irudiaren gainean klik egin (x-2)(x-2)(x+1) funtzioa aztertzeko




Δ < 0 adibidea, hurrengo irudian (x+2)(x2+x+0.5) funtzioaren itxura ikus daiteke:




Irudiaren gainean klik egin (x+2)(x2+x+0.5) funtzioa aztertzeko












NewtonHirugarrenGradukoPolinomioa_HainbatErro.pas ariketa


Algoritmoa:



  1. Demagun hirugarren graduko polinomioaren rA, rB, rC eta rD koefizienteak teklatuaren bitartez irakurtzen ditugula

  2. Demagun kalkuluaren rEPSILON doiatsuna konstantea dela eta 0.000000001 balio duela

  3. Errepikatu erabiltzaileak agindu arte:


    • Newton-Raphson metodoa aplikatzeko lehen hurbilketa teklatuaren bitartez irakurri (kontuz puntu horretan tangentearen malda ez dadila 0.0 izan)

    • Emandako hurbilketarekin funtzio polinomikoaren erro bat kalkulatu da eta bere balioa pantailaratu

    • Beste erro bat kalkulatu nahi den ala ez galdetu

    • Erabiltzailearen erantzuna teklatuaren bitartez cErantzuna aldagaian jaso


  4. Programa amaitu



Jarraian ikus dezagun eskatzen den programaren irteera batek izan dezakeen itxura:








Balizko soluzio bat programa hau izan daiteke...
NewtonHirugarrenGradukoPolinomioa_HainbatErro.pas
...non erro desberdinak kalkulatzen diren galderari B erantzuten zaion bitartean.








NewtonHirugarrenGradukoPolinomioa_InflexioPuntua.pas ariketa


Funtzio polinomikoarren rA, rB, rC eta rD koefizienteak jaso ondoren eta rEPSILON konstantea izanik, programak erroa kalkula dezala datu geihagorik gabe. Horretako, hasierako hurbilketa egoki bat programak berak aukeratu beharko du.



    { polinomioaren lehen deribatua puntu batean 0.0 bada tangentea puntu  }
{ horretan horizontala da eta funtzioaren maximo edo minimo bat dago, }
{ tangentea horizontala bada ezin da Newton-Raphson metodoa aplikatu. }

{ polinomioaren bigarren deribatua 0.0 den puntua inflexio-puntua da, }
{ inflexio-puntua kalkulatu ondoren bere malda 0.0 ez dela konprobatu, }
{ inflexio-puntuan malda 0.0 bada ezin daiteke Newton-Raphson metodoa }
{ erabili, baina inflexio-puntuan tangenteak 0.0 ez badu balio orduan }
{ funtzioaren inflexio-puntua hartu lehendabiziko hurbilketa bezala. }


Algoritmoa:



  1. Demagun hirugarren graduko polinomioaren rA, rB, rC eta rD koefizienteak teklatuaren bitartez irakurtzen ditugula

  2. Demagun kalkuluaren rEPSILON doiatsuna konstantea dela eta 0.000000001 balio duela

  3. Inflexio-puntua kalkulatu:


    • Baldin eta lortutako inflexio-puntuan tangenteak 0.0 balio badu, Newton-Raphson metodoa ezin daiteke aplikatu eta horregatik inflexio-puntutik hurbil dagoen beste puntu bat aukeratu beharko da Newton-Raphson metodoaren lehen hurbilketa bezala.

    • Bestela, baldin eta lortutako inflexio-puntuan tangenteak 0.0 balio ez badu, Newton-Raphson metodoa erabili non lehen hurbilketa inflexio-puntua izango den


  4. Lehen hurbilketa zehaztu ondoren, funtzio polinomikoaren erro bat kalkulatu da eta bere balioa pantailaratu



Jarraian ikus dezagun eskatzen den programaren irteera batek izan dezakeen itxura:








Baina kontuz, inflexio-puntuaren tangenteak 0.0 balio badu. Halako kasuan, inflexio-puntutik hurbil dagoen beste bat aukeratu Newton-Raphson metodoaren lehen hurbilketa bezala. Esate baterako, lehen hurbilketa aukeratzeko rEPSILON lagungarria izan daiteke, ondoko irudian erakusten den bezala:








Balizko soluzio bat programa hau izan daiteke...
NewtonHirugarrenGradukoPolinomioa_InflexioPuntua.pas
...non rEPSILON doitasuna 0.000000001 konstantea den.








Itrurburu-programak argitaratu aurretik, lagungarria izan daitekeelako, har itzazu programa exekutagarriak eGela zerbitzuko Newton.exe delako karpetatik:


  • NewtonHirugarrenGradukoPolinomioa_HainbatErro.exe

  • NewtonHirugarrenGradukoPolinomioa_InflexioPuntua.exe