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

5. ASTEA | laborategi/mintegian egin dena

 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

15. ASTEA | laborategi/mintegian egin dena

 15. astea (2023/05/08) laborategi/mintegian egindakoa 24 ikasleetatik 11 ikasleek kontrol-ariketaren bidalketa egin dute Hirugarren kont...