5. astea (2023/02/20) laborategi/mintegian egindakoa
- Lehen kontrola egiten dugula zerrenda pasatu dugu. Deitutakoen artean ez etorriak:
- Unai Aguinagalde del Barrio
- Nagore Garcia Ibarra
- Jon Munguia Ibañez
- Haizea Seijo Gabicagogeascoa
- Ikasgelan azaldu den 5. astea | Newton-en hurbilketa-metodoa kalkulu-metodoaren haritik, ariketa bati ekin diogu. Hortaz, y=ax2+bx+c funtzioaren ariketari hasiera eman diogu eta ez dugu amaitzeko astirik izan baina oso bideratuta geratu da. Honaino heltzeko asmoa izan dugu:
{
Zenbaki positibo baten erro karratua
x^2 - N = 0 parabola berezia
Newton-Raphson metodoa
======================
Xi+1 = Xi - f(Xi)/f'(Xi)
Xi+1 = Xi - (X¡*Xi - N) / 2*Xi
Xi+1 = (N/Xi + Xi) / 2
Kontuz Xi ez dadila zero izan, halakoetan tangentea
horizontala izango da eta ezingo du OX ardatza moztu.
Halakoetan beste hurbilketa bat hautatu.
-------
Bigarren graduko edozein parabola
Ax^2 + Bx + C = 0
f(x) = Ax^2 + Bx + C
f'(x) = 2Ax + B
Newton-Raphson metodoa
======================
Xi+1 = Xi - f(Xi)/f'(Xi)
Xi+1 = Xi - (AXi^2 + BXi + C)/(2AXi + B)
Kontuz parabolak OX ardatza ez duenean mozten ez ikutzen.
Halakoetan programaren exekuzioa ez da eteten, horregatik
B^2-4AC diskriminatzailea kalkulatu eta negatiboa izanez
gero erro irudikariak kalkulatu eta balioak pantailaratu.
Kontuz (2AXi+B) ez dadila zero izan, halakoetan tangentea
horizontala izango da eta ezingo du OX ardatza moztu.
Halakoetan beste hurbilketa bat hautatu.
Erroak parabolaren koefizienteen arabera:
A=1, B=-4, C=3 erroak x=1 eta x=3, puntu berezia x=2
A=1, B=2, C=1 erroa x=1 (doblea)
A=1, B=2, C=3 erro irudikariak
}
program NewtonEdozeinParabola_while ;
const
rEPSILOM = 0.000000001 ;
var
rA, rB, rC, rEmaitza, rAurrekoa, rDiskriminatzailea : real ;
cErantzuna : char ;
begin
writeln ;
writeln ;
writeln ;
writeln('Erroak parabolaren koefizienteen arabera:') ;
writeln ;
writeln(' A=1, B=-4, C=3 erroak x=1 eta x=3, puntu berezia x=2') ;
writeln(' A=1, B=2, C=1 erroa x=1 (doblea)') ;
writeln(' A=1, B=2, C=3 erro irudikariak ') ;
writeln ;
writeln ;
writeln('Bigarren graduko parabola baten erro bat kalkulatu') ;
writeln('--------------------------------------------------') ;
writeln ;
write('x^2-ren A koefizientea eman (adibidez 1): ') ;
readln(rA) ;
write(' x-ren B koefizientea eman (adibidez -4): ') ;
readln(rB) ;
write(' C koefiziente librea eman (adibidez 3): ') ;
readln(rC) ;
rDiskriminatzailea := rB*rB - 4*rA*rC ;
if rDiskriminatzailea < 0 then
begin
writeln ;
writeln(rA:0:1, 'X^2 + ', rB:0:1, 'X + ', rC:0:1, ' parabolak ez du mozten OX ardatza.') ;
writeln('Erroak irudikariak dira:') ;
writeln('x1 = ':30, -rB/(2*rA):0:2, '+i(', sqrt(-rDiskriminatzailea)/(2*rA):0:2,') eta ') ;
writeln('x2 = ':30, -rB/(2*rA):0:2, '-i(', sqrt(-rDiskriminatzailea)/(2*rA):0:2,')') ;
end
else
begin
repeat
repeat
write('Erroaren hurbilketa bat eman, x bat eman: ') ;
readln(rAurrekoa) ; (* lehendabiziko hurbilketa *)
if 2*rA*rAurrekoa + rB = 0.0 then
begin
writeln('Tangentea horizontala delako,':35) ;
writeln('erroa ezin daiteke kalkulatu.':35) ;
writeln('Hurbilketa berri bat hautatu.':35) ;
end ;
until 2*rA*rAurrekoa + rB <> 0.0 ;
writeln ;
writeln(' rEPSILOM = ', rEPSILOM:0:9, ' rHurbilketa = ':27, rAurrekoa:0:9) ;
rEmaitza := rAurrekoa - (rA*rAurrekoa*rAurrekoa + rB*rAurrekoa + rC) / (2*rA*rAurrekoa + rB) ;
writeln('rAurrekoa = ', rAurrekoa:0:16, 'rEmaitza = ':20, rEmaitza:0:16) ;
writeln ;
while abs(rEmaitza - rAurrekoa) > rEPSILOM do
begin
rAurrekoa := rEmaitza ;
rEmaitza := rAurrekoa - (rA*rAurrekoa*rAurrekoa + rB*rAurrekoa + rC) / (2*rA*rAurrekoa + rB) ;
writeln('rAurrekoa = ', rAurrekoa:0:16, 'rEmaitza = ':20, rEmaitza:0:16) ;
end ;
writeln ;
writeln(rA:0:1, 'X^2 + ', rB:0:1, 'X + ', rC:0:1, ' = 0 ekuazioaren emaitza ', rEmaitza:0:16, ' da') ;
writeln ;
write('Erro gehiago bilatu nahi da (B/E): ') ;
readln(cErantzuna) ;
cErantzuna := UpCase(cErantzuna) ;
until cErantzuna <> 'B' ;
end ; (* Diskriminatzailearen else bukaera *)
writeln ;
writeln('=======================') ;
writeln('RETURN sakatu amaitzeko') ;
writeln('=======================') ;
readln ;
end. { PROGRAMAREN BUKAERA }
iruzkinik ez:
Argitaratu iruzkina