seminarul 2
DESCRIPTION
Curs seminar 2TRANSCRIPT
-
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