seminarul 2

6
Seminarul al 2-lea Erori de calcul numeric Exercitiu: Diferenta valorilor aproximative 6.135 si 6.131 cu patru cifre exacte este 0.004. Sa se determine erorea relativa a diferentei. Aproximarea funcŃiilor prin interpolare SCILAB-ul poate lucra în urmatoarele moduri: - În modul linie de comanda; fiecare linie este prelucrată imediat şi rezultatele sunt afişate; - Cu programe conŃinute în fişiere. Un fişier constă dintr-o succesiune de instrucŃiuni SCILAB, cu posibilitatea apelării altor fişiere precum şi a apelării recursive. Un program SCILAB poate fi scris sub forma fişierelor: - Script: conŃine o secventă de comenzi SCILAB; se execută în fereastra de comandă prin apelarea numelui fişierului: exec(‘nume_fisier’) sau direct, în editorul Scilab-ului folosind din meniul ‘Execute’ opŃiunea ‘Load into Scilab’.FuncŃie: prima linie conŃine cuvântul function, iar ultima linie conŃine cuvântul endfunction; poate lucra cu argumente. Se pot defini mai multe funcŃii în acelaşi fişier. Sintaxa instrucŃiunilor SCILAB InstrucŃiune Sintaxă if if expresie_logică grup instrucŃiuni end else if expresie_logică grup instrucŃiuni A else grup instrucŃiuni B end elseif if expresie_logică_1 grup instrucŃiuni A elseif expresie_logică_2 grup instrucŃiuni B end case select expr_0 case expr_1 Instr_1 … case expr_n Instr_n else Instr end for for index = expresie \\ expresie = iniŃial: pas: final grup_instrucŃiuni end while while expresie grup_instrucŃiuni end 1. Polinomul de interpolare Lagrange Exemplu: Să se realizeze un program care determină 130 folosind polinomul de interpolareare Lagrange; să se evalueze şi eroarea de interpolare. Rezolvare: Să consideram funcŃia x x f = ) ( . Vom lua ca puncte de diviziune: 169 , 144 , 121 2 1 0 = = = x x x . x 121 144 169 f(x) 11 12 13 Polinomul de interpolare este:

Upload: motoc-mircea-razvan

Post on 05-Sep-2015

215 views

Category:

Documents


0 download

DESCRIPTION

Curs seminar 2

TRANSCRIPT

  • Seminarul al 2-lea Erori de calcul numeric

    Exercitiu: Diferenta valorilor aproximative 6.135 si 6.131 cu patru cifre exacte este 0.004. Sa se determine erorea relativa a diferentei.

    Aproximarea funciilor prin interpolare

    SCILAB-ul poate lucra n urmatoarele moduri: - n modul linie de comanda; fiecare linie este prelucrat imediat i rezultatele sunt afiate; - Cu programe coninute n fiiere. Un fiier const dintr-o succesiune de instruciuni SCILAB, cu

    posibilitatea apelrii altor fiiere precum i a apelrii recursive. Un program SCILAB poate fi scris sub forma fiierelor:

    - Script: conine o secvent de comenzi SCILAB; se execut n fereastra de comand prin apelarea numelui fiierului: exec(nume_fisier) sau direct, n editorul Scilab-ului folosind din meniul Execute opiunea Load into Scilab.Funcie: prima linie conine cuvntul function, iar ultima linie conine cuvntul endfunction; poate lucra cu argumente. Se pot defini mai multe funcii n acelai fiier.

    Sintaxa instruciunilor SCILAB

    Instruciune Sintax

    if if expresie_logic grup instruciuni end else if expresie_logic grup instruciuni A

    else grup instruciuni B end elseif if expresie_logic_1 grup instruciuni A elseif

    expresie_logic_2 grup instruciuni B end case select expr_0

    case expr_1 Instr_1 case expr_n Instr_n else Instr end

    for for index = expresie \\ expresie = iniial: pas: final grup_instruciuni end

    while while expresie grup_instruciuni end

    1. Polinomul de interpolare Lagrange

    Exemplu: S se realizeze un program care determin 130 folosind polinomul de interpolareare Lagrange; s se evalueze i eroarea de interpolare. Rezolvare:

    S consideram funcia xxf ====)( . Vom lua ca puncte de diviziune: 169,144,121 210 ============ xxx .

    x 121 144 169 f(x) 11 12 13

    Polinomul de interpolare este:

  • (((( ))))(((( )))) (((( ))))(((( )))) (((( ))))(((( ))))1200

    12114413

    565

    16912112

    1104

    16914411)(2

    ++++

    ====

    xxxxxxxP

    Pentru o valoare n intervalul [121,169], de exemplu x=130 gsim: 400379.11)130(2 ====P , iar

    401754.11130 . Deoarece 25

    8

    3)('''

    ==== xxf =>

    '''f este monoton descrescatoare pe [[[[ ]]]]169,121====I , deci maximul pentru '''f va fi atins n punctul

    121====x . Deci 5118

    3 ====M . Conform formulei (1)

    (((( ))))(((( ))))(((( ))))00172.0

    !3

    12113014413016913011

    8

    3)130(130)130(001375.0 52 ====

    sqrt(130)

    ans = 11.401754

    Exerciii: 1. S se determine valoarea polinomul de interpolare Lagrange pentru funcia

    )cos()sin()( xxxf ++++==== , nodurile 2

    1;

    4

    1;

    6

    1;0 3210 ================ xxxx i

    5

    1====x .

  • 2. S se determine 115 considernd o reea de trei puncte care conine valoarea 115. 3. S se determine funcia de interpolare pentru )sin()( xxf ==== , nodurile

    2

    1;

    4

    1;

    6

    1;0 3210 ================ xxxx . S se reprezinte grafic i s se compare graficele cu cele obinute

    prin formula lui Lagrange. 4. Estimai valorile temperaturii la momentele de timp 2.5 sec i 4.9 sec, cu datele din tabelul de mai jos.

    Timp [s] Temperatura [0C]

    0.0 0.0 1.0 20.0 2.0 60.0 3.0 68.0 4.0 77.0 5.0 110.0

    2. Polinomul de interpolare Newton Exemplu: Se consider urmtoarele date experimentale:

    xi 0 0.5 1 1.5

    yi 1 1.1276 1.5431 2.3534 Se cere s se calculeze valoarea lui y pentru x=0.25 folosind polinomul de interpolare Newton cu diferene finite la dreapta i valoarea lui y pentru x=1.25 folosind polinomul de interpolare Newton cu diferene finite la stnga.

    Rezolvare

    xi f(xi)=yi yi

    2yi

    3yi

    0 1 0.5 1.1276

    2y0 = 0.2879

    1 1.5431 1.5 2.3534

    y0 = 0.1276 y1 = 0.4755 y2 = 0.8103

    2y1 = 0.3948

    2y1 = 0.1069

    3y 32y 3

    3y

    Calculul lui y pentru x=0.25:

    03449.1)125.0)(5.025.0)(025.0(5.0!3

    1069.0

    )5.025.0)(025.0(5.0!2

    2879.0)025.0(

    5.0!1

    1276.01)25.0(

    3

    2

    13

    ====

    ++++

    ++++

    ++++

    ++++====P

    Calculul lui y pentru x=1.25:

  • 89222.1)5.025.1)(125.1)(5.125.1(5.0!3

    1069.0

    )125.1)(5.125.1(5.0!2

    3948.0)5.125.1(

    5.0!1

    8103.03534.2)25.1(

    3

    2

    23

    ====

    ++++

    ++++

    ++++

    ++++====P

    Exercitiu: S se calculeze valoarea polinomului de interpolare Newton cu diferene divizate pentru

    5,0,5

    ====

    ==== ni

    xi

    i f(x)=sin(x) n 25

    12====

    x .

    Rezolvare: (n Scilab cu diferene divizate) function pol=newtonDivizate(x,y,v)

    n=length(x);

    for i=1:n-1

    for k=n:-1:i+1

    y(k)=(y(k)-y(k-1))/(x(k)-x(k-i))

    end

    end

    pol=y(n);

    for i=n:-1:2

    pol=pol*(v-x(i-1))+y(i-1);

    end

    endfunction

    x=[0 %pi/5 %pi*2/5 %pi*3/5 %pi*4/5 %pi];

    y=sin(x);

    newtonDivizate(x,y,%pi*12/25)

    sin(%pi*12/25)

    ans = 0.9977572

    ans = 0.9980267

    Rezolvare: (cu diferene finite la dreapta)

    function pol=newtonDifFinDr(a,h,n,y,v)

    for i=1:n

    x(i)=a+(i-1)*h;

    end

    for i=1:n-1

    for k=n:-1:i+1

    y(k)=y(k)-y(k-1)

    end

    end

    pol=y(1);p=1;

    for i=2:n

    p=p*(v-x(i-1))/((i-1)*h)

    pol=pol+y(i)*p;

    end

    endfunction

    x=[0 %pi/5 %pi*2/5 %pi*3/5 %pi*4/5 %pi];

    y=sin(x);

  • newtonDifFinDr(0,%pi/5,6,y,%pi*12/25)

    sin(%pi*12/25)

    ans = 0.9977572

    ans = 0.9980267

    Exercitii

    1. S se calculeze valoarea aproximativ a funciei f(x)=sin(x)+cos(x) n punctul 1/6, folosind

    polinomul Newton cu diferene divizate pe reeaua xj=j*0.25, j= 3,0 .

    2. S se scrie polinomul lui Newton cu diferene finite la stnga pentru funcia f(x)=sin(x) pe

    reeaua xj=j*0.25, j= 3,0 n punctul 0.65.

    3. S se calculeze valoarea aproximativ a funciei f(x)=cos(x)+1 n punctul 1/5, folosind

    polinomul lui Newton cu diferene divizate pe reeaua xI=i*0.25, i= 3,0 .

    4. S se scrie polinomul lui Newton cu diferene finite la dreapta pentru funcia f(x)=sin2x pe

    reeaua xi=i*0.5, i= 3,0 n punctul 1.25.

    5. S se calculeze valoarea aproximativ a funciei f(x)=cos(x) n punctul 1/6, folosind

    polinomul Newton cu diferene divizate pe reeaua xj=j*0.25, j= 3,0 .

    6. S se scrie polinomul lui Newton cu diferene finite la stnga pentru funcia f(x)=sin(x/2) pe

    reeaua xj=j/2, j= 3,0 n punctul 0.333.

    3. Funcii de interpolare spline

    Exemplu: S se determine funcia spline cubic de interpolare pentru x

    xxf

    101)(

    ++++==== pe intervalul [-

    1, 1] considernd 3,0,3

    2,1 ========++++==== ihihxi .

    Solutie: Interpolare cu functia splin a Scilab-ului d=splin(x,y); interp(0.5,x,y,d)

    ans = 0.0833333

    Exerciiu: Se consider urmtoarele date experimentale:

    xi 0 0.5 1 1.5

    yi 1 1.1276 1.5431 2.3534 Se cere s se calculeze valoarea lui y pentru x=0.25 folosind funciile spline cubice. S se compare rezultatul cu cel obinut prin formula lui Newton. Concluzii:

    - Daca reteaua de puncte a lui x este neechidistanta se aplica Lagrange sau Newton divizate

    - Daca reteaua de puncte a lui x este echidistanta si valoarea in care se calculeaza polinomul este mai aproape de capatul din stanga a intervaluilui se aplica Newton cu dif finite la dreapta

  • - Daca reteaua de puncte a lui x este echidistanta si valoarea in care se calculeaza polinomul este mai aproape de capatul din dreapta a intervaluilui se aplica Newton cu dif finite la stanga

    - Daca functia nu este polinomiala aproximarea cea mai buna este data de spline Tema: sa se realizeze un program care aproximeaza datele experimentale prin metoda Newton cu diferente finite la stanga