CATEGORII DOCUMENTE |
Astronomie | Biofizica | Biologie | Botanica | Carti | Chimie | Copii |
Educatie civica | Fabule ghicitori | Fizica | Gramatica | Joc | Literatura romana | Logica |
Matematica | Poezii | Psihologie psihiatrie | Sociologie |
INTERPOLAREA POLINOMIALA LAGRANGE
In foarte multe aplicatii apare necesitatea evaluarii aproximative a valorilor unei functii . Se considera o diviziune a intervalului [a,b]:
pentru care se cunosc valorile functiei f:
Se pune problema determinarii unui polinom, p, de grad maxim (n - 1), al carui grafic sa treaca prin cele n puncte date de pe graficul functiei f (a se revedea notele de curs):
In prezenta lucrare se abordeaza interpolarea polinomiala Lagrange. Polinomul Lagrange de interpolare are expresia:
(1)
unde:
(2)
Se prezinta, in continuare, o varianta optimizata de implementare a relatiilor anterior prezentate. Metoda de calcul este bazata pe aplicarea relatiilor (1) si (2) puse sub forma:
unde: este valoarea lui x pentru care se face evaluarea, Indmin este indice minim; Indmax este indice maxim. Pentru a nu se efectua in mod repetat inmultirile necesare generarii numaratorului din (2), asociat fiecarui termen din (1), valoarea lui din (2) este calculata astfel:
(3)
unde: .
Restrictia este fireasca deoarece atunci cand calculele nu mai sunt necesare, deoarece .Indicii Indmin si Indmax trebuie determinati astfel incat polinomul de interpolare de grad efectiv sa utilizeze o baza de puncte centrata in raport cu astfel incat sa fie redusa cat mai mult posibil propagarea erorilor de calcul.
Aplicatia urmatoare ce trebuie realizata foloseste functia utilizator INTPL ce materializeaza cele enuntate mai sus. La inceput au loc urmatoarele:
- se verifica daca ordinul polinomului de interpolare solicitat, mg, este acceptabil in raport cu dimensiunea bazei de puncte: 1 ≤ mg ≤ n-1 ;
- se determina valorile intre care se gaseste ;
- se determina baza de puncte ;
- se calculeaza valoarea interpolata prin desfasurarea logica a operatiilor descrise mai sus.
Functia utilizator: INTPL
Apel: Yev = INTPL(ni,xi,yi,mg,Xev)
Parametri formali:
Ø INTRARE: ni - numar puncte pentru care se cunosc valorile functiei (numar noduri de interpolare);
xi - vector real, de lungime ni, contine abscisele nodurilor de interpolare;
yi - vector real, de lungime ni, contine valorile cunoscute ale functiei, corespunzatoare absciselor din vectorul xi;
mg - parametru intreg, gradul dorit al polinomului de interpolare; conditie de indeplinit: 1 ≤ mg ≤ ni-1 ;
Xev - valoarea argumentului pentru care se doreste a se evalua functia;
Ø IESIRE : Yev - valoarea aproximativa a functiei, pentru Xev (valoare interpolata).
Descrierea acestei functii utilizator va fi prezentata in continuare (punctul 14 - descriere program).
APLICATIE:
Sa se realizeze, in mediul de programare MATLAB, programul prin care se introduc valorile cunoscute ale unei functii si se evalueaza valorile acesteia intr-un numar de puncte echidistante, situate intre punctele initiale, cu ajutorul interpolarii polinomiale Lagrange.
In elaborarea programului se vor avea in vedere urmatoarele etape:
1. Introducere numar noduri de interpolare in variabila ni (ni ≥ 2).
2. Alocare memorie pentru vectorii ce contin punctele pe baza carora are loc interpolarea:
- abscisa: vectorul coloana xi cu ni valori nule;
- ordonata: vectorul coloana yi cu ni valori nule.
3. Introducere ni perechi de valori pentru interpolare:
- abscisa: vectorul xi;
- ordonata: vectorul yi.
4. Reluare, in caz de introducere eronata, de la punctul 2.
5. Introducere pas de evaluare, in variabila heval.
6. Generare abscise pentru evaluare:
ATRIBUIE xe ← (xi(1):heval:xi(ni))T
ATRIBUIE npev ← length(xe)
_ DACA ( xe(npev) < xi(ni) ) ATUNCI
| ATRIBUIE npev ← npev + 1
|_ ATRIBUIE xe ← [xe ; xi(ni)]
Afisare numar puncte de evaluare npev.
7. Introducere grad polinom de interpolare, in variabila mg. Conditie de indeplinit: 1 ≤ mg ≤ ni-1.
8. Calcul valori evaluate ale functiei interpolante, in vectorul coloana ye:
ATRIBUIE ye ← zeros(npev,1)
_PENTRU ip = 1,npev EXECUTA
| ATRIBUIE ye(ip) ← INTPL(ni,xi,yi,mg,xe(ip))
|_ SCRIE xe(ip),ye(ip)
9. Reprezentare grafica:
- se reprezinta, in acelasi grafic, perechile de vectori:
(xi,yi) [caracter 'o'];
(xe,ye) [linie continua].
10. Reluare reprezentare grafica, daca se doreste, de la punctul 9.
11. Reluare program, daca se doreste, cu alt grad pentru polinomul de interpolare (punctul 7).
12. Reluare program, daca se doreste, cu alt pas de evaluare (punctul 5).
13. Reluare program, daca se doreste, pentru alta functie de aproximat (punctul 1).
14. Functia MATLAB - utilizator pentru interpolarea Lagrange optimizata (nume fisier INTPL.m), este descrisa in continuare:
FUNCTIA ye = INTPL(ni,xi,yi,mg,xe) ESTE:
ATRIBUIE i ← 1
_CAT TIMP ( (i ≤ ni) SI (xe > xi(i)) ) EXECUTA
|_ ATRIBUIE i ← i + 1
ATRIBUIE Indmax ← fix(i + mg/2)
_DACA ( Indmax ≤ mg ) ATUNCI
|_ ATRIBUIE Indmax ← mg + i
_DACA ( Indmax > ni ) ATUNCI
|_ ATRIBUIE Indmax ← ni
ATRIBUIE Indmin ← Indmax - mg
ATRIBUIE a ← 1
_PENTRU i = Indmin,Indmax EXECUTA
| _DACA ( xe = xi(i) ) ATUNCI
| | ATRIBUIE ye ← yi(i)
| |_ SFARSIT (functie MATLAB: return)
|_ ATRIBUIE a ← a∙(xe-xi(i))
ATRIBUIE ye ← 0
_PENTRU i = Indmin,Indmax EXECUTA
| ATRIBUIE PL ← yi(i)∙a/(xe-xi(i))
| _PENTRU j = Indmin,Indmax EXECUTA
| | _DACA ( i ≠ j ) ATUNCI
| |_ |_
|_ ATRIBUIE ye ← ye + PL
OBSERVATII:
1. Descrierea anterioara a programului foloseste urmatoarele functii MATLAB: length, zeros.
2. Programul se va rula pentru urmatoarele date de intrare:
I. Experiment chimic:
i |
xi |
yi |
| ||
II.Caracteristica curent - turatie a unui motor de curent continuu:
i |
xi |
yi |
PROBLEMA DE STUDIU
Pentru exemplul II, caracteristica curent-turatie pentru un motor de c.c., solutia uzuala este aproximarea functiei, in sensul celor mai mici patrate (CMMP), cu o dreapta (polinom de gradul 1). Se va modifica in mod adecvat programul anterior, inlocuind interpolarea Lagrange cu interpolarea bazata pe solutia mentionata aici. Se vor folosi functiile MATLAB: polyfit si polyval. Solutia gasita se va reprezenta grafic.
Functia MATLAB: polyfit
Scop: Gasirea coeficientilor unui polinom care aproximeaza o
functie - in sensul CMMP.
Apel: p = polyfit(xi,yi,n)
Parametri formali:
Ø INTRARE: xi - abscise;
yi - ordonate - valorile functiei corespunzatoare absciselor din xi;
n - grad polinom de aproximare;
Ø IESIRE: p - vector continand coeficientii polinomului de aproximare, n+1 valori, in ordinea descrescatoare a puterilor.
(se va apela cu n = 1)
Functia MATLAB: polyval
Scop: evaluare valorii/ valorilor unui polinom
Apel: ye = polyval(p,xe)
Parametri formali:
Ø INTRARE: p - vector continand coeficientii polinomului, in ordinea descrescatoare a puterilor
xe - valoare/ vector de valori, unde se doreste evaluarea polinomului
Ø IESIRE : ye - valoare/ vector de valori, unde s-a evaluat polinomul.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 2014
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved