Elemente de Teoria Aproximarii Functiilor

CUPRINS

Introducere

Lucrarea de fațǎ se înscrie în domeniul aproximǎrii și interpolǎrii funcțiilor, o problemǎ importantǎ a disciplinei Calcul Numeric ce reprezintǎ o ramurǎ a matematicii aplicative ce cautǎ sǎ elaboreze principii, metode și procedee pentru aflarea efectivǎ, cu o precizie determinatǎ a soluțiilor numerice pentru diverse probleme formulate și studiate în matematicǎ. Aceasta pe lângǎ algoritmii de calcul pe care îi stabilește în vederea aflǎrii soluțiilor numerice cǎutate, urmǎrește sǎ elaboreze și o teorie relativǎ la studiul preciziei cu care se pot obține aceste soluții aproximative.

Se poate intampla ca diverse fenomene din jurul nostru care se cerceteazǎ cu ajutorul metodelor matematice sǎ fie caracterizate prin funcții de una sau mai multe variabile reale, însa pentru care nu existǎ posibilitatea determinǎrii lor complete ci doar a aflǎrii valorilor pe anumite valori particulare ale argumentelor. Cunoscând aceste valori se dorește adesea sǎ se aproximeze fie valorile funcțiilor respective pe alte noi puncte din domeniul lor de definiție, fie anumite caracteristici numerice cum ar fi: valorile pe puncte date ale derivatelor de anumite ordine sau integralelor pe anumite domenii.

Pentru aceste scopuri în analiza matematicǎ se elaboreazǎ teoria interpolǎrii, care face apel la calculul cu diferențe divizate și finite.

O problemǎ importantǎ a teoriei aproximǎrii constǎ în aflarea pentru o funcție, dintr-un spațiu , a unei funcții de aproximare simplǎ, definitǎ pe o submulțime

a lui Spațiul este de obicei un spațiu liniar normat, cum ar fi spațiile și sau un alt spațiu de funcții. Distanța de la la se poate mǎsura prin norma în spațiul Pentru funcțiile definite pe un interval compact al axei reale de obicei se alege , spațiul polinoamelor algebrice de grad cel mult O altǎ clasǎ importantǎ studiatǎ și in lucrarea de fațǎ este reprezentatǎ de funcțiile splie polinomiale de gradul pe care o vom nota , unde reprezintǎ o diviziune a intervalului de bazǎ Acestea reprezintǎ o clasǎ de funcții segmentar-polinomiale , cu un anumit grad de netezime, în sensul cǎ graficul lor este form,at din arce de polinoame care se racordeazǎ pe anumite puncte de joncțiune, în așa fel încât acestea sǎ dmitǎ derivate continue pânǎ la un anumit ordin . Un rol important în teoria aproximǎrii îl au teoremele lui K,Weierstrass, care ne asigurǎ cǎ o funcție continuǎ pe un interval compact poate fi aproximatǎ în mod uniform, oricât de bine, prin polinoame algebrice .

Capitolul 1 Elemente de teoria aproximǎrii funcțiilor

1.1 Notații. Spații de funcții

Se poate intampla ca diverse fenomene din jurul nostru care se cerceteazǎ cu ajutorul metodelor matematice sǎ fie caracterizate prin funcții de una sau mai multe variabile reale, însa pentru care nu existǎ posibilitatea determinrii lor complete ci doar a aflǎrii valorilor pe anumite valori particulare ale argumentelor. Cunoscând aceste valori se dorește adesea sǎ se aproximeze fie valorile funcțiilor respective pe alte noi puncte din domeniul lor de definiție, fie anumite caracteristici numerice cum ar fi: valorile pe puncte date ale derivatelor de anumite ordine sau integralelor pe anumite domenii.

Intrucat cea mai mare parte a materialului se referǎ la aproximarea funcțiilor, a unor funcționale liniare definite pe spații de funcții sau la aproximarea soluțiilor unor ecuații operatoriale prin metode generate de procedee de aproximare a funcțiilor, accentul se va pune pe prezentarea cu precǎdere, a spațiilor de funcții.

In general, într-o problemǎ de aproximare intervin trei elemente esențiale:

o multime B ale cǎrei elemente urmeazǎ a fi approximate

o mulțime A a aproximațiilor (cu elementele cǎreia se aproximeazǎ elementele lui B)

un criteriu prin care se selecteazǎ aproximația din A a unui element dat din B

De cele mai multe ori criteiul de selecție are la bazǎ eroarea de aproximare. Nu sunt excluse nici situațiile în care aproximația din A a unui element a lui B se alege astfel încât ea sǎ fie ușor de calculat sau cumularea erorilor de calcul sǎ fie cât mai redusǎ.

Un loc aparte îl ocupǎ problemele în care pentru un element dat se cere determinarea elementului lui A care aproximeazǎ cel mai bine pe f sau elementul din A care aproximeazǎ pe f cu o eroare dinainte datǎ. Dacǎ mulțimea A nu conține nici un element care sǎ aproximeze pe f cu eroarea prescrisǎ, ea poate fi extinsǎ astfel încat condiția pusǎ sa fie satisfacutǎ. De exemplu dacǎ A este mulțimea funcțiilor polinomiale de grad cel mult , , extinderea ei se poate face prin mǎrirea gradului , prin trecerea la mulțimea funcțiilor spline, a funcțiilor raționale, etc.

Apare astfel necesitatea definirii erorii de aproximare a lui prin elementul din A, a comparǎrii mai multor aproximații ale lui f cu scopul de a decide care dintre ele este mai convenabilǎ sau chiar la determinarea celei mai bune aproximații din A a lui f.

In unele cazuri definirea erorii poate depinde si de natura multimii B, de structurile cu care este înzestratǎ. De exemplu dacǎ este un spațiu metric, și , eroarea de aproximare a lui prin se masoarǎ prin distanța . Elementul pentru care oricare ar fi este cea mai bunǎ aproximație a lui f în A.

Amintim cǎ este un spațiu metric dacǎ pe mulțimea B este definiție o aplicație (metricǎ) care satisfac condițiile:

1. si dacǎ și numai dacǎ

2. )

3. pentru orice

Fie B un spațiu liniar peste corpul K (vezi definiția la spațiu liniar)

Daca K=R atunci B este spațiu liniar real, iar dacǎ K=C, B este spațiu liniar complex.

O aplicație a lui B în K se numește funcționalǎ.

O funcționalǎ se numește funcționalǎ aditivǎ dacǎ oricarea ar fi

O funcționalǎ se numește funcționalǎ omogenǎ dacǎ

oricare ar fi si

O funcționalǎ aditivǎ și omogenǎ se numește funcționala liniarǎ.

O funcționala realǎ nenegativǎ definitǎ pe spațiul liniar B cu proprietǎțile:

1. oricare ar fi

2. , oricare ar fi și

se numește seminormǎ pe B.

O seminormǎ p definitǎ pe spațiul liniar B se numește norma dacǎ din

rezultǎ .

Exemple de spații de funcții

1. – spatiul funcțiilor continue pe intervalul având norma

2. -spațiul funcțiilor care admit derivate continue pâna la ordinul inclusiv. In raport cu norma

spațiul este spațiu Banach.

3. spațiul funcțiilor marginite pe [a,b] înzestrat cu norma

este un spațiu Banach.

4. – spațiul funcțiilor continue și mǎrginite

5. spațiul funcțiilor polinomiale de grad cel mult . Avem

1.2 Aproximarea uniformǎ a funcțiilor continue

Aproximarea funcțiilor continue cu ajutorul polinoamelor reprezintǎ un capitol foarte important în cadrul teoriei aproximǎrii funcțiilor. La baza acesteia stǎ o o teoremǎ celebrǎ, enunțatǎ în anul 1885 de Karl Weirstrass (1815-1897), pe care acesta a descoperit-o și publicat-o când avea vârsta înaintatǎ de 70 de ani. Teorema exprimǎ posibilitatea aproximarii polinomiale uniforme a unei funcții , continuǎ pe un interval mǎrginit și închis [a,b] al axei reale.

Sa prezentam în continuare câteva enunțuri echivalente ale acestei teoreme.

Teorema 1.2.1 Dacǎ atunci, oricare este un numar pozitiv , existǎ un polinom algebric , care depinde atât de cât și de , astfel încat sǎ avem

, (1.2.1)

oricare ar fi

Acestei teoreme i se mai spune, de obicei, teorema întâia de aproximare a lui Weierstrass, pentru a o deosebi de a doua teoremǎ a lui Weierstrass , care se referǎ la aproximarea funcțiilor continue periodice, de perioadǎ , prin polinoame trigonometrice.

Aceastǎ teoremǎ, care exprimǎ faptul cǎ mulțimea polinoamelor algebrice este densǎ în spațiul de funcții , se mai poate enunța și în forma echivalentǎ urmǎtoare

Teorema 1.2.2 Orice functie este limita unui șir de polinoame algebrice uniform convergent la funcția pe

O altǎ variantǎ echivalentǎ se regasește în enunțul urmǎtor

Teorema 1.2.3 Pentru orice funcție se poate gǎsi o serie de polinoame care pe intervalul este absolutǎ și uniform continuǎ cǎtre

In virtutea Teoremei 1.2.2 funcției îi corespunde un șir de polinoame algebrice uniform convergent la Formând șirul unde , avem

astfel cǎ seria de termen general este uniform convergentǎ cǎtre pe .

Reciproc, dacǎ se dezvoltǎ în seria de polinoame , uniform convergentǎ cǎtre pe, aceasta înseamna cǎ, oricare ar fi numǎrul pozitiv , existǎ un numar astfel încat sǎ avem pentru , oricare este , unde . Observând cǎ este un polinom, este doveditǎ și echivalentǎ Teoremelor 1.2.2 și 1.2.3.

Interpretarea geometricǎ a teoremei întâia a lui Weierstrass

Având în vedere cǎ inegalitatea (1.2.1) se mai poate exprima prin dubla inegalitate

,

valabilǎ pe intervalul , constatǎm cǎ putem da urmǎtoarea interpretare geometricǎ.

Oricât de “îngustǎ” ar fi banda mǎrginita de curbele de ecuații , , se poate gǎsi un polinom astfel încat graficul lui sǎ fie situate în intregime în acea bandǎ, pe intervalul

1.3 Diferențe divizate

Definiție 1.3.1 Sǎ considerǎm . Diferențele divizate de ordinul p se definesc astfel:

Pentru

Pentru

Pentru

Sǎ prezentǎm câteva proprietǎți importante ale acestei mǎrimi:

i)

ii)este determinantul Vandermonde ce corespunde nodurilorși este determinantul obținut din cel precedent prin inlocuirea coloanelor cu valorile.

Dacǎ atunci

Pentru , mǎrimea

se numește diferența divizatǎ a funcției , relativ la punctele

Definiție 1.3.2 Fie Mǎrimea

se numește diferența divizatǎ de ordinul a funcției pe punctul .

Teorema 1.3.3 Dacǎ atunci

Observație Fie Aplicația

se numește operatorul de diferența divizatǎ.

In cazul diferențelor divizate și-a dovedit utilitatea tabloul cu diferențe divizate:

unde .

Prin urmare elementele tabloului de mai sus se determinǎ dupǎ formula recursivǎ

.

Implementǎri în Matlab

function [A,df]=difdivizate(X,Y)

A=Y;

n=length(X);

for j=2:n

for k=n:-1:j

A(k)=(A(k)-A(k-1))/(X(k)-X(k-j+1))

end

end

x0 =X(1);

df =A(2);

prod =1;

n1=length (A)-1;

for k=2:n1

prod =prod*(x0-X(k));

df =df+prod*A(k+1);

end

Tabelul diferențelor divizate poate fi calculat și folosind urmǎtorul script

x=[0 1 2 4 5];

y=[0 16 48 88 0];

n = length(x)

d= zeros(n,n-1);

for k = 1 : n-1

d (k, 1) = (y(k+1) – y(k))/(x(k+1) – x(k))

end

for j = 2 : n-1

for k = 1 : n – j

d (k, j) = (d(k+1, j – 1) – d(k, j – 1))/(x(k+j) – x(k));

end

end

d

1.5 Diferențe finite

Fie .

Definiție 1.4.1. Pentru ,

se numeste diferența finitǎ de ordinul întâi, cu pasul a funcției pe punctul a.

Observație Aplicația numește operator de diferențǎ finitǎ cu pasul .

Teorema 1.4.2. este un operator liniar.

Demonstrație Dacǎ

=A

=A (

Definiție 1.4.3 Fie 0 si Mǎrimea definitǎ prin ( cu convențiile si , se numește diferența finitǎ cu pasul h de ordinul k al funcției , pe punctul .

Astfel , (f(a

De exemplu, dacǎ avem (

(

Iar prin metoda inducției matematice complete se demonstreaza ca

( (2.5.1.)

Teorema 1.4.4 Dacǎ 0atunci

(

Teorema 1.4.5.Dacǎ 0atunci

(

Demonstratie .Se folosește definiția diferenței finite de ordin superior.

Observație Proprietatea de liniaritate se pǎstreazǎ și pentru operatorul .

In continuare vom prezenta unele formule sau procedee de exprimare a diferențelor finite de ordin superior cu ajutorul valorilor funcției, precum și a valorii unei funcții pe un punct cu ajutorul diferențelor ei finite , formule utile în calculul cu diferențe.

Teorema 1.4.6. Dacǎ , atunci ( (2.5.2.)

unde coeficientii nu depind de .Ca urmare, funcția poate fi particularizatǎ confuncția poate fi particularizatǎ convenabil. Luând și având în vedere relația (2.5.1.) formula (2.5.4.) devine (e

Simplificând cu și aplicând primului membru formula binomului, se obține

Rezultǎ cǎ

Observație Pe baza proprietǎții de simetrie a combinǎrilor, formula (2.5.2.) se mai poate scrie

( (2.5.4.)

Teorema 1.4.7. Dacǎ și , atunci

F (a (2.5.5.)

Demonstrație. Eliminând din relațiile (

valorile , se obține

(2.5.6.)

unde B nu depind de . Luând , din nou, ,exprimand pe sub forma

e si având in vedere (2.5.1.), formula (2.5.6.), dupǎ simplificarea cu , devine Rezultǎ deci cǎ

Teorema 1.4.8. Dacǎ , atunci ( (2.5.7.)

care este adevaratǎ. Intr-adevar,

Adunând și scǎzând termenul , se obține

,

adicǎ formula (2.5.8).

Presupunând formula (2.5.7) adevaratǎ pentru m-1,adicǎ

Folosind liniaritatea operatorului ,resultǎ cǎ

Fǎcând în al doilea termen schimbarea avem

sau, daca grupǎm termenii asemenea,

Cum

teorema este complet demonstratǎ.

Dacǎ atunci ,

relatie care stabilește legatura dintre diferențele divizate și diferențele finite, în cazul nodurilor echidistante.

De mare utilitate pentru calcul este tabloul cu diferențe finite.

Folosind notațiile ,avem:

unde

(2.5.9)

Tabloul cu diferențe oferǎ o metoda simplǎ, algoritmicǎ, de calcul a tuturor diferențelor finite ale unei funcții, relativ la o multime de puncte echidistante date.

Dup cum rezultǎ și din relațiile (2.5.9) elementele fiecǎrei coloane se obțin din elementele coloanei precedente prin simple scǎderi, prin urmare, tabloul se completeazǎ pe coloane.

Relațiile (2.5.9) permit și o programare simplǎ pentru generarea tabloului cu diferențele finite la calculator.

In multe aplicații concrete intervin numai elementele de pe latura superioarǎ sau inferioarǎ a acestui tablou triunghiular. In astfel de cazuri este necesarǎ reținerea numai a unei pǎrți din elementele tabloului, ceea ce permite, având în vedere cǎ odatǎ elementele coloanei k fiind calculate, elementele coloanei k-1 nu mai intervin în calculele urmǎtoare, o esențialǎ economie de memorie.

Mai concret, dacǎ trebuie reținute numai diferențele de pe latura superioara,

atunci pe lânga zona de memorie care înregistreazǎ datele inițiale mai sunt necesare m locații care în diferențele deja calculate,de exemplu pentru precum și restul elementelor coloanei i, adicǎ , j = 1,…,m-i.

Capitolul 2 Aproximarea prin interpolare polinomialǎ

2.1 Preliminarii

Pentru o funcție problema aproximării ei printr-un polinom se pune fie când este dificil de evaluat f, fie când nu se cunoaște expresia analitică a lui f ci doar valorile ei în anumite puncte , , obținute în general ca urmare a unor măsurări și prezentate într-un tabel. Mulțimea de puncte , , cu proprietatea , o vom nota prin și o vom numi diviziune a intervalului . Punctele , vor fi numite nodurile diviziunii. Problema interpolǎrii funcției în nodurile , , constǎ în determinarea unei funcții dintr-o clasǎ de funcții cunoscute, cu proprietatea Pusǎ sub aceastǎ formǎ generalǎ problema poate sǎ nu aibǎ soluție sau sǎ aibǎ o infinitate de soluții.

Cea mai utilizatǎ clasǎ de funcții de interpolare este clasa polinoamelor, datoritǎ ușurinței cu care se integreazǎ și se deriveazǎ.

2.2 Interpolare Lagrange

Teorema 2.2.1. Fie f : [a,b]R si , (n+1) noduri din intervalul [a,b]. Atunci existǎ un polinom unic , de gradul , care interpoleazǎ funcția în nodurile .Acest polinom se numește polinomul de interpolare al lui Lagrange.

Demonstrație

Cǎutam un polinom sub forma urmǎtoare: ,

unde sunt polinoame de gradul ce urmeazǎ sǎ fie determinate. Deoarece dorim ca vom pune condițiile:

Deoarece pentru rezultǎ cǎ admite rǎdǎcinile

Așadar,

Cum , rezultǎ

In concluzie avem

(2.2.1)

unde

(2.2.2)

Evident polinomul (2.2.1) are gradul n si are proprietatea Fie un alt polinom de gradul n cu proprietatea și sǎ fie . Deoarece grad R rezultǎ cǎ R este polinom identic nul, deci ca

Exemplu. Fie nodurile . Atunci

Efectuând calculele obținem

In continuare vom nota eroarea în fiecare punct cu

(2.2.3)

Evident , . Introducem deasemenea notația :

(2.2.4)

Teorema 2.2.2 Dacǎ atunci pentru orice existǎ astfel incât

(2.2.5)

Demonstrație

Considerǎm funcția auxiliarǎ

.

Observǎm cǎ g se anuleazǎ în (n+2) puncte distincte Din teorema lui Rolle rezultǎ cǎ existǎ

Cum

rezultǎ

Corolar. Daca existǎ astfel încât atunci :

Observație

Pentru a minimiza eroarea la interpolarea Lagrange pentru o funcție

definitǎ pe intervalul , nodurile de interpolare se aleg astfel

.

Interpolarea cu aceste noduri se numește interpolare Cebâșev.

Intr-adevăr, daca este polinomul de interpolare pentru si este polinomul de interpolare pentru g, atunci este polinomul de interpolare pentru f+g, si deci

In continuare vom presupune ca nodurile sunt echidistante, deci ca , unde

(2.2.6)

Considerâm de asemenea schimbarea de variabilǎ

(2.2.7)

Înlocuind (2.2.6) si (2.2.7) in (2.2.2) obținem:

Folosind notația:

(2.2.8)

obținem

Obținem astfel expresia polinomului lui Lagrange pentru noduri echidistante

(2.2.9)

Eroarea devine:

(2.2.10)

In continuare considerǎm un șir de diviziuni ale intervalului [a,b] cu

Notǎm cu polinomul lui Lagrange care interpolează funcția f în nodurile . Daca n este mai mare, coincide cu f într-un număr mare de noduri, deci ne așteptam ca eroarea sǎ fie micǎ, eventual ca

Ajungem astfel la următoarea întrebare:

In ce condiții șirul de polinoame converge punctual (eventual uniform) la funcția f pe intervalul {a,b}?

In anul 1912 S. N. Bernstein a arătat ca pentru funcția , daca alegem nodurile echidistante , atunci daca

S-ar putea crede ca acest lucru se datorează faptului ca funcția-modul nu este derivabila in origine. Următorul exemplu dat de C. Runge in 1901 aratǎ cǎ existǎ funcții indefinit derivabile pentru care nu converge la

Fie

Evident Fie nodurile echidistante

.

Se poate arata ca dacǎ si dacǎ , unde este o rădăcina a ecuației:

In anul 1914 S. N. Bernstein a arătat cǎ pentru orice sistem de noduri , din intervalul , dat dinainte, existǎ o funcție continuǎ , astfel încât șirul polinoamelor lui Lagrange care interpolează funcția f în aceste noduri nu converge uniform la f pe .

Exista totuși si situații când convergenta are loc. Se poate demonstra următoarea teorema:

Teorema 2.2.3. Dacǎ și se dezvoltǎ în serie Taylor pe R, atunci pentru orice sistem de noduri distincte și echidistante din [a,b], șirul polinoamelor care interpolează funcția f in aceste noduri converge uniform la pe [a,b].

Se pune întrebarea daca interpolarea cu polinoame Lagrange este utilǎ în practica din moment ce, cum am văzut, în general șirul polinoamelor de interpolare nu converge la .

Răspunsul este cǎ interpolarea cu polinoame Lagrange este utilǎ. Se constatǎ în practicǎ faptul cǎ pentru un punct , eroarea scade pânǎ la un punct pe măsura ce n crește, și deci, pentru n relativ mic aproximează acceptabil valoarea. Pentru valori mari ale lui n, interpolarea Lagrange nu este recomandatǎ.

Din cele prezentate pânǎ acum, rezultǎ cǎ șirul polinoamelor de interpolare asociate unei funcții continue nu converge uniform, în mod necesar, la aceasta funcție. Se pune întrebarea dacǎ o funcție continuǎ poate fi aproximatǎ uniform, cu polinoame. Răspunsul a fost dat de K. Weierstrass in anul 1885.(vezi sectiunea 1.2)

Teorema 2.2.4. Fie continuǎ. Atunci pentru orice , existǎ un polinom , astfel încât

.

Evident, dacǎ luǎm rezultǎ cǎ existǎ un șir de polinoame , care converge uniform pe sunt, în raport cu funcțiile continue pe , in aceeași relație ca numerele raționale Q fațǎ de numerele raționale R.

Teorema lui Weierstrass este extrem de importantǎ în analiza matematicǎ, în general, și în analiza numericǎ, în special. Dintre numeroasele demonstrații date acestei teoreme, cea mai cunoscutǎ este cea datǎ de S. N. Bernstein, în anul 1912. Bernstein a arătat cum se poate construi șirul de polinoame care aproximează funcția f si anume:

Acest șir de polinoame, care se numesc polinoame Bernstein, au proprietatea , pe [0,1] la [a,b] se face cu ușurința printr-o schimbare de variabila. Evident, polinoamele Bernstein nu sunt polinoame de interpolare. Din păcate, convergenta șirului câtre este destul de înceată, și din aceastǎ cauza, în practicǎ, polinoamele Bernstein nu se folosesc la aproximarea directǎ a funcțiilor. Teorema lui Weierstrass este importantǎ prin implicațiile sale teoretice, dar și practice, de exemplu, la integrarea numericǎ.

Exemplu. Fie funcția si nodurile 0.4; 0.5; 0.7; 0.8. Evaluǎm eroarea în punctul x=0.6.

Rezultǎ

,

acest numǎr fiind doar un majorant al erorii.

Dacǎ folosim urmǎtoarele valori de noduri

și calculǎm polinomul lui Lagrange obținem :

Pe de alt parte ln(0.6)=-0.510826. Rezultǎ cǎ , ceea ce confirmǎ afirmația de mai sus.

Observatie. Dacǎ f=Q este un polinom de grad cel mult n, atunci E (f; x)=0, oricare [a,b].

Afirmația rezultǎ din Teorema 2.2.2 deoarece, în acest caz

Implementǎri în Matlab

m=5;

x=0.2:1.8/m:2;

y=1./x.^2;

xmin = min(x);

xmax = max(x);

XX=xmin:0.1:xmax;

YY=1./XX.^2;

plot (XX,YY,'r')

for k=1:length(XX)

[z l]=valLmf(XX(k),m,x,y);

ZZ(k)=z

end

hold on

plot (x,y,'om')

hold on

plot (XX,ZZ,'b')

title ('functia si polinomul Lagrange')

legend ('rosu- Functia ','magenta- valorile functiei in X dat','albastru – polinomul Lagrange')

function [v,l] = valLmf(x,m,X,Y)

% valLmf calculeaza valoarea poliomului de interpolare Lagrange intr-un punct x;

% m- gradul polinomului Lagrange

% X- vectorul nodurilor de interpolare

% Y- vectorul valorilor fuctiei pe noduri

l=zeros(0,m);

for k=0:m

p1=1;

p2=1;

for j=0:m

if (j~=k)

p1=p1*(x-X(j+1));

p2=p2*(X(k+1)-X(j+1));

end

l(k+1)=p1/p2;

end

end

v=sum(l.*Y)

Fig 2.1

Presupunând cǎ , vom fi tentați sǎ credem cǎ numarul al nodurilor crește indefinite, astfel ca distanța între douǎ noduri consecutive oarecare sǎ tindǎ la zero, atunci polinomul va tinde cǎtre funcția Situația nu este însǎ mereu așa. Astfel este binecunoscut contraexemplul lui C. Runge dat inca din 1901 pentru funcția , oricare este din intervalul . Astfel acesta a dovedit cǎ polinomul de interpolare a lui Lagrange corespunzǎtor , care folosește noduri ce impart în pǎrți egale intervalul , converge cǎtre numai in intervalul , unde în timp ce în intervalele diverge, deși este o funcție analiticǎ.

2.3 Interpolare Newton

2.3.1 Polinomul Newton de interpolare de speța I (ascendent)

Fie o funcție, fie , n + 1 puncte distincte din intervalul [a, b], și pentru orice . Punctele se presupun echidistante adică

fiind pasul rețelei. Pentru determinarea polinomului de grad mai mic sau egal cu ce satisface relațiile:

Se pleacă de la un polinom de forma:

. Coeficienții se determinǎ plecând de la relațiile utilizând noțiunile de diferențe finite și putere generalizatǎ. Câteva din proprietǎțile diferențelor finite se regǎsesc in sectiunea 1.4. Produsul se numește putere generalizatǎ a lui Pentru determinarea coeficientului al polinomului de interpolare se utilizează diferența finită la stanga de ordinul a lui în . Se obține

Aproximarea funcției prin polinomul Newton ascendent este avantajoasa pentru valorile din vecinatatea lui , eroarea fiind micǎ pentru un in modul, mic.

2.3.2 Polinomul Newton de interpolare de speța II (descendent)

Fie o funcție, fie , n + 1 puncte ehidistante din intervalul [a, b], și pentru orice .Ca și in cazul polinomului Newton ascendent pentru determinarea polinomului Newton descendent se pleacǎ de la un polinom de forma:

Pentru exprimarea coeficienților se utilizează diferențele finite la stânga lui .

Expresia

se numește diferență finită (la stânga) de ordinul întâi. Diferențele finite la stânga de ordin superior se definesc cu ajutorul relației:

Se observă că

In aplicații, pentru calculul diferențelor finite la stânga se utilizează tabelul diagonal următor:

. …………..

……………….

…………………………

………………………………

. .

. .

.

Pentru determinarea coeficientului al polinomului de interpolare se utilizează diferența finită la stanga de ordinul a lui în . Se obține:

Expresia polinomului de interpolare de mai sus poartă denumirea de polinom Newton de speța II (sau descendent). Expresia polinomului Newton descendent se poate pune sub o formă mai comodă pentru aplicații, dacă se face schimbarea de variabilă

Se obține

Aproximarea funcției prin polinomul Newton descendent este avantajoasă pentru valorile din vecinătatea lui , eroarea fiind mică pentru în modul mic.

Metoda de interpolare Newton are urmǎtoarele avantaje :

realizeazǎ un compromise maxim între efortul de construcție și cel de evaluare

algoritmul este stabil din punct de vedere numeric, având erori numerice acceptabile ale rezultatelor;

permite mǎrirea gradului polinomului de interpolare prin inserarea unui nod nou în rețeaua de interpolare, cu reutilizarea coeficienților de la gradul anterior, care nu se modificǎ, deci și un effort minim de calcul;

are posibiltatea de a controla eroarea de interpolare;

coeficienții polinomului de interpolare Newton reprezintǎ diferențele divizate de interpolare, ceea ce faciliteazǎ calculul numeric al polinomului;

Algoritm pentru determinarea polinomului de interpolare Newton (ascendent)

Date de intrare

– valorile nodurilor de interpolare;

– pasul rețelei de noduri;

-valorile funcției pe noduri;

– 26ewton26l în care se calculeazǎ polinomul;

Date de ieșire

– valoarea polinomului de interpolare Newton ascendent

Algoritm pentru determinarea polinomului Newton descendent

Date de intrare

– valorile nodurilor de interpolare;

– pasul rețelei de noduri;

-valorile funcției pe noduri;

– 26ewton26l în care se calculeazǎ polinomul;

Date de ieșire

– valoarea polinomului de interpolare Newton descendent

Implementǎri în Matlab

function fp = newton_interpolation(x,y,p)

% x- vectorul nodurilor de interpolare;

% y- vectorul valorilor functiei pe noduri

% p- 26ewton26l in care se calculeaza polinomul lui Newton cu diferente divizate

n = length(x);

a(1) = y(1);

for k = 1 : n — 1

d(k, 1) = (y(k+1) — y(k))/(x(k+1) — x(k));

end

for j = 2 : n — 1

for k = 1 : n — j

d(k, j) = (d(k+1, j — 1) — d(k, j — 1))/(x(k+j) — x(k)); % calculul diferentelor divizate

end

end

d %afisarea tabelului diferentelor divizate

for j = 2 : n

a(j) = d(1, j-1);

end

Df(1) = 1;

c(1) = a(1);

for j = 2 : n

Df(j)=(p — x(j-1)) .* Df(j-1);

c(j) = a(j) .* Df(j);

end

fp=sum(c);

Problema

Sǎ se evalueze polinomul Newton cu diferențe divizate pentru datele de mai jos

Vom introduce în fereastra de comandǎ a mediului Matlab parametrii de mai sus pentru care vom apela apoi functia “newton_interpolation.m”

>> x = [1 2 3 5 7];

>> y = [-1 1 5 13 52];

>> p=3;

>> newton_interpolation(x,y,p)

d =

2.0000 1.0000 -0.2500 0.1708

4.0000 0 0.7750 0

4.0000 3.8750 0 0

19.5000 0 0 0

ans =

5

Să reprezentăm graficul polinomului de interpolare Newton, în cazul funcției , definita pe intervalul [0.2 ,2]. Pentru aceasta va trebui să calculăm valoare polinomului Newton pe o mulțime de puncte din acest interval. Vom folosi un cod de program Matlab care va apela funcția newton_interpolation(), definită mai sus :

x=0.2 :.8 :2 ;% nodurile

y=1./x.^2 ; % valorile functiei pe noduri

n=length(x)-1;

xmin=min(x);

xmax=max(x);

XX=xmin:0.1:xmax;% punctele in care se avalueaza polinomul Newton de interpolare

YY=1./XX.^2;% valorile functiei in aceste puncte

plot(XX,YY,’r’);

for k=1:length(XX)

[nl]=28ewton_interpolation(x,y,XX(k))% valorile polinomului Newton in XX

NP(k)=nl

end

plot(XX,NP,’b’)% graficul polinomului Newton de interpolare

In urma rularii codului de program de mai sus salvat cu numele plot_newton.m se obțin valorile polinomului si graficul acestuia

NP =

Columns 1 through 7

25.0000 20.7253 16.8148 13.2685 10.0864 7.2685 4.8148

Columns 8 through 14

2.7253 1.0000 -0.3611 -1.3580 -1.9907 -2.2593 -2.1636

Columns 15 through 17

-1.7037 -0.8796 0.3086

Fig. 2.2

Adăugând codului de mai sus instrucțiunile

hold on

plot(XX,YY,’—‘);

legend(‘polinomul Newton’,’– functia 1/x^2’);

putem obține în același 29ewton de axe și reprezentarea funcției pe aceleași puncte, putând face astfel o comparație a aproximării funcției cu acest polinom. Obținem:

Fig. 2.3

Așa cum aminteam și la interpolarea Lagrange, procesul de interpolare nu întotdeauna produce șiruri de polinoame ce converg la functia interpolate când gradul polinomului tinde la infinit. Vom exemplifica în Matlab binecunoscutul exemplu al lui Runge (vezi pag. 9 )

m=input(‘dati numarul interpolantilor=’);

for k=1:m

n=input(‘dati gradul pol de interpolare=’);

hold on

x=linspace (-5, 5,n+1);

y=1./(1+x.*x);

z=linspace (-5.5,5.5);

t=1./(1+z.^2);

h1_line=plot(z,t,’-.’);

set(h1_line,’LineWidth’,1.25)

t=30ewton_interpolation(x,y,z);

h2_line=plot(z,t,’r’);

set(h2_line,’LineWidth’,1.3,’Color’,[0 0 1])

axis ([-5.5 5.5 -.5 1])

title(sprintf(‘exemplu de divergenta (n=%2.0f)’,n))

xlabel(‘x’);

ylabel(‘y’);

legend (‘y=1/(1+x^2)’,’interpolant’)

hold off

end

Fig. 2.4

Observație Evident polinoamele Lagrange și Newton diferǎ numai prin formǎ, pentru aceeași rețea de puncte, restul fiind același în ambele forme. Ca volum de calcul în schimb se preferǎ polinomul lui Newton care necesitǎ un numǎr de operații aritmetice de fațǎ de pentru polinomul Lagrange. Necesarul de memorie este același pentru ambii algoritmi. Așa cum s-a vǎzut în cazul polinomului de interpolare Newton este nevoie de o matrice suplimentarǎ în cares e memoreaza tabelul diferențelor divizate, însǎ din table se folosesc doar N coeficienți , existând posibilitatea refolosirii celulelor de memorie. Aceasta este partea cea mai costisitoare a algoritmului Newton.

2.4 Interpolare Hermite

Fie , , pentru si

astfel încât . Problema de interpolare Hermite consta în determinarea polinomului P de grad minim care verificǎ

Fie

Expresia polinomului de interpolare Hermite este:

unde sunt polinoamele fundamentale de interpolare Hermite date de

Vom da un procedeu de obținere a polinomului de interpolare Hermite cu noduri duble. Expresia sa este

unde

iar

Aplicarea expresiilor de mai sus este dificilǎ datoritǎ apariției derivatelor. Vom utiliza o metodǎ derivata din formula de interpolare a lui Newton.

Presupunem cǎ se dau nodurile si valorile ,, . Definim secvența prin

Construim acum tabela diferențelor divizate utilizând nodurile , . Deoarece pentru orice , este o diferența divizatǎ cu un nod dublu și este egalǎ cu , deci în locul diferențelor divizate de ordinul 1 vom utiliza valorile derivatelor . Restul diferențelor divizate se obțin în maniera obișnuitǎ, așa cum se aratǎ în tabelul de mai jos. Se obține astfel un algoritm care poate fi folosit și pentru alte interpolari osculatoare. Se pare cǎ metoda este datoratǎ lui Powell.

Algoritmul de interpolare Hermite. Obține coeficienții polinomului Hermite , cu noduri duble , , corespunzǎtor funcției .

Intrare. ,

Ieșire. Numerele unde

P1. Pentru executǎ pașii 2 și 3.

P2.

P3. Dacǎ atunci

9

P4. Pentru executǎ

Pentru j executǎ

P5. Extrage . Stop.

Exemplu numeric. Se considerǎ urmǎtoarele date de intrare

Cu ajutorul diferențelor divizate din tabel (unde datele de intrare sunt subliniate) se obține:

(1.5)=0.6200860 + (1.5-1.3) (-0.5220232) + (1.5-1.3)2(-0.897427) + (1.5-1.3)2(1.5-1.6)(0.0663657) + (1.5-1.3)2(1.5-1.6)2(0.0026663) + (1.5-1.3)2(1.5-1.6)2(1.5-1.9)(-0.0027738)=

=0.5118277

Implementǎri în Matlab

function [val]=interpolare_Hermite(x,x1,f,f1)

%functie care calculeaza valoarea unei functii in punctul x

%daca se cunosc:

% x1-nodurile

% f-valorile functiei in nodurile x1

% f1-valorile derivatei intai in nodurile x1

%rezultatul este pus in val

m=length(x1);

for i=1:m

z(2*i-1)=x1(i);

z(2*i)=x1(i);

Q(2*i-1,1)=f(i);

Q(2*i,1)=f(i);

Q(2*i,2)=f1(i);

if (i~=1)

Q(2*i-1,2)=(Q(2*i-1,1)-Q(2*i-2,1))/(z(2*i-1)-z(2*i-2));

end

end

for i=3:2*m,

for j=3:i,

Q(i,j)=(Q(i,j-1)-Q(i-1,j-1))/(z(i)-z(i-j+1));

end

end

s=Q(1,1);

p1=1;

for i=2:2*m

if (mod(i,2)==1)

p1=p1*(x-x1((i-1)/2));

else

p1=p1*(x-x1(i/2));

end

s=s+p1*Q(i,i);

end

val=s;

function grafic_Hermite(x,v,x1,f,f1)

%functie care reprezinta pe acelasi grafic f si polinomul de interpolare Hermite

%parametrii

% x – intervalul pe care se face graficul

% v – valorea reala a functiei pe intervalul dat de x

% x1 – nodurile in care se cunoaste valoarea functiei

% f – valorea functiei in nodurile x1

% f1 – valorea derivatei de ordinul I in nodurille date de x1

for i=1:length(x)

val(i)=interpolare_Hermite(x(i),x1,f,f1);

end

clf

hold on

plot(x,v,'r-','LineWidth',5); %rosu -> graficul real al functiei

plot(x,val,'g-','LineWidth',2);%verde -> graficul cu interpolarea Hermite

plot(x1,f,'bo','LineWidth',6); %albastru -> nodurile in care se cunoaste valoarea functiei

hold off

Sa dam in continuare un exemplu de reprezentare al unei functiei si a polinomului Hermite asociat

x1=1:0.5:10;

f=sin(x1);

f1=cos(x1);

x=1.2:0.3:10.1;

v=sin(x);

clf

grafic_Hermite(x,v,x1,f,f1);

clear

Fig. 2.5

Problemǎ

O mașinǎ ce se deplaseazǎ pe un drum drept este cronometratǎ în mai multe puncte. Datele obținute din observații sunt date în tabelul de mai jos. Utilizați interpolarea Hermite pentru a prevedea poziția mașinii și viteza sa la momentul t=10.

Soluție Matlab

Pentru rezolvarea problemei se va scrie urmatorul fisier Matlab, “Problema.m”

clc

x=10;

x1=[0 3 5 8 13];

f=[0 225 383 623 993];

f1=[75 77 80 74 72];

rez = interpolare_Hermite(x,x1,f,f1);

fprintf ('Distanta=%3.15f\n',rez);

fprintf ('Viteza=%3.13f\n',rez/x);

La apelarea în fereastra de comandǎ a fișierului cu numele “Problema.m” se va obține rezultatul

Distanta=742.502839098770890

Viteza=74.[anonimizat]

Dacǎ se dorește interpolarea datelor cu ajutorul funcțiilor cubice de tip Hermite vom folosi în Matlab, funcția pchip.

Sintaxa acestei funcții este urmǎtoarea:

yi=pchip(x,y,xi),

unde

– x și y reprezintǎ vectorii ce conțin abscisele și ordonatele datelor de interpolare

– xi- reprezintǎ vectorul în care se dorește interpolarea, cu pas mai fin

-yi- este vectorul returnat de funcție asociat datelor xi

Capitolul 3 Interpolare spline

Considerând un numar de N+1 puncte prin care se impune sǎ treacǎ graficul unui polinom al cǎrui coeficienți trebuie determinați sau a cǎrui valoare trebuie calculatǎ a rezultat cǎ gradul acestuia este N în cazul interpolarii Lagrange respective 2N+1 în cazul interpolarii Hermite. Dupǎ cum s-a vǎzut numǎrul de operații necesar pentru calcularea valorii unui astfel de polinom este destul de mare, crescând cu creșterea numǎrului de noduri. În plus, deseori polinomul de interpolare între noduri, are abateri fațǎ de funcția care se interpoleazǎ.

Acestea sunt motivele pentru care în unele situații se preferǎ sǎ se lucreze cu funcții diferite pe diferite intervale, cazul cel mai simplu fiind cel al interpolǎrii liniare, când graficul funcției este înlocuit cu o linie poligonalǎ ce trece prin cele N+1 puncte.

Istoria funcțiilor spline începe în anul 1946 prin publicarea lucrǎrilor aparținând lui I.J. Schoenberg, în care se introduce și denumirea de funcție spline, preluatǎ de la liniarul elastic (termenul din limba englezǎ) utilizat pentru trasarea unor curbe ce trebuie sǎ treacǎ prin mai multe puncte de pe desen.

3.1 Interpolare cu funcții spline de ordinul întâi

Interpolare cu funcții spline de ordinul întâi

Fie și o diviziune a intervalului

Se numește funcție spline de ordinul întâi, corespunzǎtoare diviziunii o funcție care satisface condițiile:

i) este polinom de gradul întâi pentru

ii) .

Se noteazǎ cu mulțimea funcțiilor spline polinomiale de ordinul întâi, corespunzǎtoare diviziunii

Pentru orice existǎ și sunt unice astfel încât:

unde pentru .

Mai mult, avem

2) Funcțiile constituie o bazǎ în .

Funcțiile definite prin:

constituie o bază în și oricare ar fi avem

(3.1.1)

Problema de interpolare cu spline-uri de ordin întâi constă în:

se dau care pot fi valorile unei funcții continue

se caută

Dacă

În cazul general, problema de interpolare are soluție unică dacă și numai dacă e îndeplinită una dintre condițiile:

;

;

3.2 Interpolare cu funcții spline cubice

Fie o diviziune a intervalului si .

Se numește funcție spline cubică, corespunzătoare diviziunii o funcție care satisface condițiile:

Se noteaza cu mulțimea funcțiilor spline cubice, corespunzătoare diviziunii .

Funcția spline cubică asociată sistemului de puncte este o funcție cubică corespunzătoare diviziunii cu proprietatea

.

În condițiile formulate mai sus, , funcția s se reprezintă în mod unic sub forma:

, (3.2.1)

unde

(3.2.2)

iar sunt soluțiile sistemului:

(3.2.3)

Pentru determinarea unică a spline-ului cubic, sistemul (3.2.3) trebuie completat cu condiții la capete. De exemplu putem presupune că sunt cunoscute valorile pentru

(3.2.4)

sau că sunt cunoscute valorile pentru :

(3.2.5)

Relatiile (16) sunt echivalente cu:

(3.2.6)

Remarcă. Din (3.2.3) și (3.2.5) sau din (3.2.3) și (3.2.5) se pot determina , apoi din (3.2.2) se determină pentru și deci, conform cu (3.2.1), funcția este cunoscută pe [a,b]. Pentru de două ori derivabilă determinăm funcția spline cubică de interpolare asociată diviziunii și funcției, adică, o funcție spline cubică cu proprietătile și

Exemplu: Să se determine valorile funcției f în punctul folosind interpolarea spline cubică, știind că:

și că valorile lui f’ în punctele și sunt: .

R. Aplicăm teorema 1 și vom găsi funcția spline cubică s ce interpolează funcția f , dacă determinăm coeficienții .

Coeficienții se determină prin rezolvarea sistemului liniar AM=b, unde

și Obținem că .

Punctul . Scriem funcția de interpolare s pe acest interval:

Calculăm valoarea funcției s în punctul dat:

Deci, valoarea aproximativă a lui f în punctul este 0.60875.

In continuare vom defini funcțiile B-spline cubice și vom arăta că orice funcție spline cubică care interpoleză funcția in nodurile se reprezintă ca o combinație liniară unică de funcții B-spline cubice. Fie o diviziune a intervalului cu noduri echidistante (unde ). Asociem acestei diviziuni, diviziunea care are in plus șase noduri auxiliare, de asemenea echidistante. :.

Definim orice , funcția B-spline cubică astfel:

Graficul funcției arată astfel:

Din definiția funcțiilor rezultă că

Se verifică ușor că si dacă . Se observă de asemenea că , deci este o funcție spline cubică.

Propoziția 3.2.1. Funcțiile sunt liniar independente pe R.

Demonstrație. Fie combinația liniară

Daca dăm lui x succesiv valorile obținem sistemul:

Deoarece matricea sistemului este strict diagonal dominantă, deci nesingulară, rezultă că sistemul admite numai soluția banală.

În continuare notăm cu spațiul liniar generat de funcțiile , .

Teorema 3.2.2. Există o funcție unică B care interpolează funcția in nodurile

Demonstrație. Fie

Punând condiția ca B să interpoleze funcția in nodurile rezultă

Se obține sistemul:

(3.2.7)

Sistemul (3.2.7 ) are (n+3) ecuații liniare și (n+3) necunoscute

Eliminând necunoscuta din primele două ecuații și necunoscuta din ultimele două ecuații, obținem sistemul echivalent:

(3.2.8)

Matricea coeficienților sistemului este strict diagonal dominantă,deci sistemul (3.2.8) are soluție unică. Așadar, sistemul (3.2.7) are soluție unică.

Înlocuind această soluție in (3.2.6) obținem funcția B căutată, care evident este unică.

Teorema 3.2.3 Fie o funcție spline cubică care interpolează funcția în nodurile . Atunci există unic determinate, astfel incât

Demonstrație:

Din teorema 3.2.2 rezultă că există astfel incât B interpolează funcția in nodurile . Funcția este de clasă pe și este polinomială de gradul trei pe porțiuni. Rezultă că restricția lui B la intervalul [a,b] este o funcție spline cubică, care interpolează in nodurile . Cum asemenea funcție este unică (conform Teoremei 3.2.2 ) rezultă

Unicitatea coeficienților este asigurată de Teorema 3.2.2.

Pachetul de programe MATLAB conține funcția spline care permite interpolarea unei funcții în punctele , , finit, printr-o funcție spline cubică , dacă se cunosc valorile ale funcției in nodurile . Secvența de apelare este: .

Exemplu. Să se determine valorile funcției în punctele folosind interpolarea spline cubică, știind că:

utilizând MATLAB.

În mediul MATLAB se scriu comenzile:

% interpolarea cu functii spline cubice folosind pachetul de programe Matlab

function [x,y,xi,yi]=cub

% Nodurile

x=[0,pi/6,pi/4,pi/3,pi/2];

% Valorile functiei in noduri

y=[0,1/2,1/2^(1/2),3^(1/2)/2,1];

% Valorile in care se interpoleaza functia

xi=[pi/12,pi/8,pi/5];

% Apelarea functiei Matlab spline care face interpolarea

yi=spline(x,y,xi);

Funcția considerată este și putem compara valorile de interpolare cu cele "exacte":

zi=sin(xi);

Pentru reprezentarea grafică a funcției interpolate se poate folosi următoarea secvența MATLAB.

% Reprezentarea grafica a functiei interpolate

plot(x,y,xi,yi,'*',xi,zi,'o');

axis([0,pi/2,0,1.2]); % se stabilesc intervalele de reprezentare pe

axe

title('Interpolarea cu spline cubice');

xlabel('Unghiul');

ylabel('Valorile functiei');

grid

Fig 3.1

Curba obținutǎ prin interpolare spline cubicǎ este o curbǎ netedǎ, definitǎ de un set de polinoame de gradul trei. Curba pe porțiuni, între fiecare pereche de puncte este un polinom de gradul trei calculat astfel încât sǎ conducǎ la tranziții netede de la un polinom de gradul trei la altul. De pildǎ șase puncte sunt conectate prin intermediul a cinci curbe diferite de grad trei, ce constituie o funcție netedǎ între toate cele șase puncte.

În Matlab curba de interpolare spline cubicǎ se calculeazǎ cu funcția spline care se apeleazǎ cu sintaxa:

yi=spline(x,y,xi)

unde

x si y sunt vectori care conțin abscisele si ordonatele datelor inițiale

xi este un vector care conține noile abscise, de regulǎ cu pas mai fin

yi este vectorul returnat, asociat lui

Comparând funcția spline cu funcția pchip, folositǎ la interpolarea cu polinoame Hermite, se desprind urmǎtoarele:

polinoamele spline sunt construite în același mod ca și polinoamele Hermite de interpolare;

spline alege pantele diferite, cu alte cuvinte fǎcând ca continuǎ, dar determinǎ un rezultat incert, pentru continuǎ;

spline determinǎ multe rezultate corecte, dacǎ datele conțin o funcție incertǎ;

pchip nu depǎșește cea mai micǎ oscilație, dacǎ data este incertǎ;

pchip este mai puțin costisitoare, ca timp de calcul, de reglat;

cele douǎ funcții sunt la fel de costisitoare de evaluat;

>> x =-3:3;

>> y =[-1 -1 -1 0 1 1 1];

>> t =-3:.01:3;

>> p=pchip(x,y,t);

>> s=spline(x,y,t);

>> plot (x,y,'o',t,p,'-',t,s,'-.');

>> legend ('date','p-pchip','s-spline')

Fig. 3.2

Matlab utilizează funcția spline pentru a găsi curba spline cubică asociată unei funcții f pentru care se cunosc valorile pe secvența de puncte amintită mai sus.

Să exemplificăm cu cazul funcției

» x = 0:2*pi;

» y = 4*cos(x)+1;

» xx = 0:.001:2*pi;

» yy = spline(x,y,xx);

» plot(x,y,'o',xx,yy)

» legend ('nodurile','spline cubic') ;

Fig. 3.3

Vom ilustra mai jos pentru acelasi domeniu de valori, interpolarea liniarǎ, pentru care vom utiliza funcția interp1, și interpolarea cubicǎ.

x=0:5;

» y=[0,20,60,68,72,100];

» xi=0:0.1:5;

» ylin=interp1(x,y,xi);

» ycub=spline(x,y,xi);

» plot(xi,ylin,':',xi,ycub,x,y,'o')

» legend('liniar','cubic');

» title('interpolare liniara si cubica');

Fig. 3.4

Sǎ urmǎrim în continuare cum calculǎm coeficienții unui spline cubic natural când se dau nodurile și valorile pe noduri . Vom aminti urmǎtoarea formulǎ de calcul pentru spline-ul cubic natural:

unde .

Expresia de mai sus dǎ expresia spline-lui cubic natural pe intervalul , în termenii primei și a doua derivate astfel :. Pentru calculul coeficienților , vom rezolva ecuația:

Pentru spline-ul cubic natural se pot impune și condițiile la granițǎ:

Având astfel coeficienții calculați se poate calcula spline-ul cubic natural .

Capitolul 4 Curbe de aproximare și interpolare

Metodele de aproximare cu polinoame determinate prin utilizarea celor mai mici pǎtrate sau aproximarea funcțiilor periodice folosind seriile Fourier pot fi considerate “clasice”, ele nelipsind din nici o lucrare care prezintǎ diferite metode numerice.

Odata cu folosirea calculatorului în proiectarea formelor a apǎrut necesitatea de a gasi noi metode atât din punct de vedere al aspectului matematic cât și al implementari lor în cadrul unor soft-uri ușor de folosit de neinițiați.

Astfel în ultimii 20 de ani a apǎrut o nouǎ disciplinǎ care îmbinǎ elemente de geometrie analiticǎ, diferențialǎ, desen tehnic, analizǎ matematicǎ și evident programarea – este vorba despre “grafica pe calculator” a cǎrei denumire în engleza este binecunoscuta “Computer Aided Geometric Design”. Curbele și suprafețele folosite în disciplina CAGD au inceput sǎ fie studiate în anul 1959 de matematicieni care lucrau pentru firme constructoare de automobile sau de avioane: P. de Casteljau (Citroen), P. Bezier (Renault), S. Coons (Ford), W. Gordon (General Motors), J. Ferguson (Boeing). Lucrǎrile lor de pionierat au fost urmate de numeroase alte studii si aplicații. Aceste realizǎri în grafica asistatǎ de calculator s-au bazat pe o serie de cercetǎri efectuate anterior de matematicieni care au studiat problema aproximǎrii funcțiilor, dintre care pot fi amintiți în special A.M. Legendre, C. Hermite, K. Wierstrass, P.L. Cebasev, C. Runge, H. Lebesque, D. Jackson, S.N. Bernstein s.a.

In present, proiectarea formei autovehiculelor, avioanelor, vapoarelor, a unei game foarte largi de produse este de neconceput fǎrǎ utilizarea unor soft-uri specifice de proiectare asistatǎ pe care le folosește un inginer. Este evident faptul cǎ pentru a reuși o realizare eficientǎ a acestor produse soft este necesar sǎ se cunoscǎ în cât mai mare mǎsurǎ și fundamentarea matematica a acestora.

Câteva din lucrǎrile de referințǎ în acest domeniu sunt amintite la bibliografie.

Ecuațiile analitice ale curbelor care descriu formele diverselor obiecte reale sunt de cele mai multe ori deosebit de complicate. In aceasta situație este însǎ suficient sǎ cunoaștem un set de puncte ale curbei respective și sǎ încercǎm sǎ conectǎm aceste puncte printr-o curbǎ a cǎrei ecuație analiticǎ este în general simplǎ. Aceste puncte le vom numi în continuare puncte de control.
In grafica pe calculator, ceea ce prezintǎ interes în primul rând este aspectul vizual al curbei reprezentate și mai puțin proprietǎțile sale matematice. Pornind de la un set de puncte de control, construcția unei curbe controlate de acestea poate fi realizatǎ utilizând metode de interpolare sau de aproximare. In primul caz, curba obținutǎ va trece prin punctele de control. In cel de-al doilea caz, curba nu va mai trece în mod necesar prin punctele de control ci prin vecinatatea acestora:

4.1 Curbe Bézier

Conceptul de curbǎ Bezier a fost dezvoltat pentru prima oara de Pierre Bezier prin anii ’60 când lucra ca matematician la firma de automobile Renault și au fost printre primele utilizate in proiectarea asistatǎ de calculator.

In planul axelor Oxy se considerǎ un numǎr de n+1 puncte (noduri sau puncte de control)

ale cǎror coordonate carteziene sunt cunoscute : prin unirea cǎrora se obține așa numitul poligon de control.

Dacǎ se noteazǎ

vectorii coloana ale cǎror elemente sunt coordonatele punctelor de control, coordonatele curbei Bezier se calculeazǎ astfel

(4.1.1)

Funcțiile se numesc polinoamele fundamentale Bernstein :

și sunt definite in intervalul [0,1]. Bernstein a utilizat pentru prima datǎ aceste polinoame pentru a demonstra teorema lui Weierstrass enunțatǎ în paragraful 1.2. Câteva din proprietǎțile importante ale acestor polinoame le vom defini mai jos:

1. polinoamele Bernstein sunt positive pentru orice

2. polinoamele Bernstein formeazǎ o partiție a unitǎții . Aceastǎ proprietate este foarte importantǎ în utilizarea acestor funcții în modelarea geometrica și aplicații grafice pe calculator.

3. fiecare polinom are un singur maxim pe intervalul în punctul .

4. orice polinom poate fi scris ca o combinație liniarǎ de polinoame de grad mai mare

Pentru calculul valorilor polinoamelor lui Bernstein se poate folosi urmǎtoarea formulǎ de recurențǎ:

Formula recursivǎ de mai sus stǎ la baza algoritmului de Casteljau binecunoscut, de evaluare a unei cure Bezier într-un punct

Algoritmul de Casteljau

Input: n+1 puncte de control

parametru real

Output: un punct de pe curba

pentru executa

// memorez punctele de control

pentru executa

pentru executa

Observație Pentru faptul cǎ polinoamele Bernstein sunt simetrice în raport cu si , forma unei curbe Bézier nu se schimbǎ indiferent de direcția de parametrizare.

In conditiile în care o curba Bézier nu posedǎ suficientǎ flexibilitate în modelarea formei dorite, putem îmbunǎtǎți aceastǎ caracteristicǎ prin creșterea flexibilitǎții poligonului de control. O soluție pentru această problema ar fi adǎugarea unui nou punct de control și obținem astfel o creștere a gradului curbei. Astfel pentru algoritmi care genereazǎ suprafețe pornind de la aceste curbe, e necesar ca aceste curbe sǎ aibǎ același grad. Folosind aceastǎ tehnica putem crește gradele curbelor inițiale la gradul maxim al familiei de curbe.

O altǎ aplicație importantǎ a tehnicii este în situația transferului de date între diferite sisteme grafice. Astfel dacǎ s-a generat o parabolǎ (curba Bezier de gradul doi) și vrem s-o transferǎm într-un sistem care recunoaște doar forme cubice va trebui sǎ creștem gradul parabolei. Am amintit în paragraful 1.2 un rezultat important din teoria aproximǎrii, teorema lui Weierstrass de aproximare, care poate fi acum reformulat în contextul curbelor parametrice ([Farin]). Fie o curbǎ continuǎ pe un interval [0,1] și secvența de valori . Aceste valori pot fi intepretate ca formând poligonul de control asociat curbei Bezier de grad :

ce aproximeazǎ curba

Daca vom creste gradul acestor curbe, obtinem secvența . Teorema lui Wierstrass în acest contex afirma ca

.

Cu alte cuvinte, teoretic, se exprima ideea ca orice curbǎ poate fi aproximatǎ arbitrar cu o curbǎ polinomialǎ. Polinoamele lui Bernstein au o serie de proprietǎți care vor fi utilizate în continuare, în cadrul aproximǎrii funcțiilor cu curbe Bezier. Astfel sunt valabile urmǎtoarele relații:

1.

2.

3.

Deoarece polinoamele Bernstein satisfac prima relație rezultǎ pentru curba Bézier urmǎtoarele relații

, ,

deci curba trece prin primul și ultimul punct , , al poligonului de control, dar nu este necesar sǎ treacǎ și prin celelalte puncte.

În cazul parcurgerii complete a curbei Bézier, parametrul va lua valori între 0 și 1 și daca pe curbǎ se vor gǎsi cele n+1 puncte de control rezultǎ cǎ aceste puncte se vor obține pentru valorile ale parametrului t.

Curba Bezier nu trece în mod necesar prin alt punct de control dar are proprietatea de a se menține tot timpul în interiorul poligonului convex definit de aceste puncte.

Deoarece punctelor de control le sunt asociate valori ale parametrului care diferǎ prin rezultǎ cǎ tangenta la curba Bezier în punctul este chiar prima latura a poligonului de control, același lucru fiind valabil și în cazul ultimului punct ce corespunde la , ultima latura a poligonului fiind tangentǎ la curba Bezier.

Utilizând o secvența de curbe Bezier de grad 3 se obține o curbǎ de aproximare formatǎ din porțiuni având proprietatea de a trece prin punctele si ale setului de puncte din control, panta tangentei la curbǎ în punctul, ceea ce permite construcția unei curbe ce trece printr-un set de puncte având forma controlatǎ de punctele intermediare:

Prin alegerea punctelor coliniare se va obține aspectul neted al curbei în.

Utilizând forma parametricǎ cu pentru fiecare curbǎ componenta determinatǎ de punctele vom avea:

Atunci când parametrul parcurge intervalul formula de mai sus furnizeazǎ punctele curbei dintre punctul corespunzǎtor punctului de control Pi și cel corespunzǎtor lui. Curba finalǎ se obține prin trasarea segmentelor de pe curbǎ pentru valorile i=1, i=4,…, i=3*(j-1)+1.

Vom da în continuare un cod de program Matlab, de desenare a unei curbe Bezier, Bezier.m. Funcția de desenare, va apela o altǎ funcție de calcul a polinoamelor Bernstein, bernstein.m .

function [X] = Bezier(C,M)

if nargin<2

M = 30;

end

n = length(C)-+1; %numarul punctelor de control

X=[];

%reprezentarea punctelor de control

for i = 0:M-1

u = i/(M-1); %valorile parametrului u

P = [0;0];

%evaluarea curbei Bezier

for k = 0:n

P = P + bernstein(n,k,u) .* C(:,k+1);

end

%adaugarea lui P la lista punctelor de pe curba

X = [X P];

end

%desenarea curbei

plot(X(1,:), X(2,:));

hold on

plot(C(1,:), C(2,:), 'ro–');

și funcția bernstein.m

function [bnk]=bernstein (n,k,x)

if k == 0

C = 1;

else

C = prod ([k+1:n])/(prod([1:n-k]));

end

bnk = C .* x.^k .* (1-x).^(n-k);

return

Sǎ exemplificǎm pentru urmǎtoarea matrice a punctelor de control:

» C=[0 1 2;1 0 1];

» Bezier (C,20)

Fig. 4.1

» C=[0 1 2 3;1 2 0 1];

» Bezier(C,20)

Fig. 4.2

» C=[0 2 3 4 5 6;1 5 5 0 6 1];

» Bezier(C,20)

Fig. 4.3

O altǎ metodǎ de evaluare a punctelor de pe o curbǎ Bézier este cea recursivǎ cea bazatǎ pe algoritmul De Casteljau amintit mai sus , dupǎ numele matematicianului Paul de Casteljau, care l-a dezvoltat la Citroën la sfarșitul lui 1950.

function drawbezier(pc,npc)

%deseneaza o curba Bezier

%drawbezier(pc,npc)

%pc – punctele de control

%npc – numar de puncte (rezolutia)

h=1/npc;

t=0:h:1;

uu=decast(pc,t);

plot(pc(1,:),pc(2,:),'–',pc(1,:),pc(2,:),'o',uu(1,:),uu(2,:));

Funcția de desenare a unei curbe Bézier va apela funcția în care se evalueazǎ curba Bezier recursiv, cu ajutorul algoritmului de Casteljau.

function q=decast(pc,t)

%algoritmul de Casteljau

%pc – punctele de control

%apel q=decast(pc,t)

%t punctele in care se evalueazǎ

[mp,np]=size(pc);

x=zeros(np,np);

y=zeros(np,np);

x(1,:)=pc(1,:);

y(1,:)=pc(2,:);

lt=length(t);

for l=1:lt

for i=2:np

for j=1:np-i+1

x(i,j)=t(l)*x(i-1,j)+(1-t(l))*x(i-1,j+1);

y(i,j)=t(l)*y(i-1,j)+(1-t(l))*y(i-1,j+1);

end

end

q(1,l)=x(np,1);

q(2,l)=y(np,1);

end;

4.2 Curbe B-spline

Polinoamele lui Bernstein, folosite în “construirea” funcțiilor (curbelor) Bezier sunt definite în intervalul [0, 1], care corespunde întregului interval în care se face aproximarea, corespunzând primului punct de control iar ultimului. S-a observat cǎ în cazul în care un punct de control (un vârf al poligonului de control) își schimbǎ poziția acest lucru are influențǎ asupra tuturor coordonatelor puntelor curbei Bézier. Acesta este și motivul pentru care în cazul în care sunt date un numǎr de puncte prin care (sau pe lângǎ care) se dorește sǎ treacǎ curba de aproximare trebuie multe încercǎri privind alegerea numǎrului de puncte de control precum și a pozițiilor acestora pentru ca sǎ se rezolve problema.

De asemenea un dezavantaj al funcțiilor lui Bézier îl constituie faptul cǎ gradul polinoamelor lui Bernstein crește cu creșterea numǎrului de puncte de control.

Odata numǎrul de puncte de control fixat ar fi de dorit ca prin modificarea poziției unui punct de control sǎ nu se schimbe alura curbei de aproximare în întregime ci numai local, în zona care corespunde punctului de control deplasat. Acest lucru este realizabil doar dacǎ se va adopta o altǎ bazǎ de reprezentare decât polinoamele lui Bernstein (definite pe tot intervalul) și anume niște polinoame numite polinoamele “B-spline”, care sunt nenule și positive numai într-un interval mǎrginit de valori ce corespund la douǎ , trei sau mai multe noduri, în rest fiind nule.

Pentru prima oarǎ matematicianul Schoenberg (nǎscut în Romania) a introdus și studiat aceste polinoame și funcțiile care rezultǎ prin combinarea lor, în anul 1946.

Funcțiile B-spline sunt folosite în generarea unor intrumente importante în grafica asistatǎ de calculator : curbele și suprafețe B-spline. Clasa curbelor B-spline este cel mai mult folositǎ în modelarea geometricǎ. Dezvoltarea inițialǎ a teoriei curbelor B-spline a folosit diferențe divizate, fiind foarte laborioasǎ din punct de vedere matematic. Ulterior s-a introdus o definiție geometricǎ, datoratǎ lui Carl de Boor si M. Cox, transformatǎ în una analiticǎ, în care se dǎ parametrizarea curbei intr-o bazǎ definitǎ recursiv.

O curbǎ B-spline este formata practic din mai multe arce de curbe Bezier ce se comportǎ ca un întreg. Punctele de legaturǎ dintre aceste curbe Bézier se vor numi noduri și vor juca un rol important în problemele legate de aspectul unei curbe B-spline, netezime sau flexibilitate.

Ca și în cazul curbelor Bézier și în cazul curbelor B–spline acestea se vor exprima parametric, utilizând parametrul

Vom considera un vector al nodurilor, (“knot vector”, în engleza) având componentele

valorile acestora fiind crescatoare Dacǎ aceste noduri sunt alese în mod uniform, sau în particular 1 atunci polinoamele B-spline și funcțiile care se creeazǎ cu acestea se numesc uniforme iar în caz contrar neuniforme.

Vom nota cu o funcție B-spline de gradul k, (“blending B-spline functions”, în engleza) și calculul lor se va face pe baza urmǎtoarei relații de recurențǎ:

și pentru

.

Remarca Ordinul k este independent de numarul punctelor de control . Astfel în cazul curbelor B-spline putem obține o mai mare flexibilitate a formei prin creșterea numǎrului punctelor de control fǎrǎ creșterea gradului curbei.

Notând cu punctele de control din plan, o curbǎ B-spline de gradul ce aproximeazǎ poligonul de control se definește astfel:

.

Algoritmul de evaluare a curbelor B-spline, algoritmul Cox de Boor este o extensie a algoritmului lui de Casteljau si are câteva avantaje fațǎ de acesta din urmǎ.Utlizând datele de intrare direct și calculând doar combinațiile convexe este mult mai stabil numeric. Este apoi mult mai flexibil pentru cǎ nu are în vedere o poziționare speciala a punctelor de control. Algoritmul se prezintǎ astfel sub formǎ triunghiularǎ, fiecare element se obține prin combinația convexǎ a douǎ elemente anterioare:

Algoritm Cox de Boor

Input: n puncte de control

– punctul in care se face evaluarea

– secventa nodurilor

Output valoarea

Fie

Pentru executa

sfarsit pentru

pentru executa

pentru executa

sfarsit pentru

.

Pentru o anumitǎ valoare a parametrului , funcțiile de bazǎ B-spline de grad k și un vector al nodurilor desemnat prin knot se pot calcula în Matlab cu urmǎtoarea funcție:

function alfa=Spline(i,k,knots,u)

if (k==1)if (knots[i]<=u)&& (u<knots[i+1]))

alfa=1;

else

alfa=0;

end;

else if (knots[i+k-1]==knots[i])

alfa=(knots[i+k]-u)/(knots[i+k]-knots[i+1])*Spline(i+1,k-1,knots,v);

else

if (knots[i+k]==knots[i+1])

alfa= (v-knots[i])/(knots[i+k-1]-knots[i])*Spline(i,k-1,knots,v);

else alfa=(v-knots[i])/(knots[i+k-1]-knots[i])*Spline(i,k-1,knots,v)+(knots[i+k]-v)/(knots[i+k]-knots[i+1])*Spline(i+1,k-1,knots,v);

end;

end;

end;

end;

Sǎ reprezentǎm în continuare poligonul punctelor de control

» pc=[5 10 20 30 35 25 20;20 10 5 15 25 50 45];

și curba B-spline de grad 3, asociatǎ acestor puncte de control. Funcția de desenare a poligonului și a curbei B-spline în același sistem de referințǎ este datǎ de :

function draw_b_spli(pc,g,npd,stil)

%draw_b_spline(pc,grad,npd,stil)

%pc – punctele de control

%g – gradul

%npd – numar de puncte(rezolutia)

%stil – stilul de linie(conform sintaxei plot implicit '-')

n=length(pc);

kn=[0 0 0 0 1 2 3 4 4 4 4];

%kn=noduri(n-1,g);

ln=length(kn);

if nargin<2

error('numar ilegal de argumente');

else

if nargin==2

npd=100;

stil='-';

else

if nargin==3

stil='r-';

end

end

end

pas=kn(ln)/npd;

t=0:pas:kn(ln);

q=coxboor(g,pc,kn,t);

%plot(q(1,:),q(2,:),stil);

plot(pc(1,:),pc(2,:),'–',pc(1,:),pc(2,:),'o',q(1,:),q(2,:),stil,'LineWidth',2.5);

hold on

plot(pc(1,:),pc(2,:),'–',qnew(1,:),qnew(2,:),'r–')

Se observǎ cǎ funcția apeleazǎ funcția coxboor(g,pc,kn,t), care calculeazǎ valoarea B-spline-lui pentru o valoare datǎ a parametrului t. Calculul se face recursiv prin algoritmul lui CoxDeBoor, astfel:

function q=coxboor(grad,pc,knots,t)

%algoritmul Cox-DeBoor pentru B-spline

%q=coxboor(grad,pc,knots,t)

%grad- gradul spline-ului

%pc – poligonul de control

%knots – nodurile

%t – abscisele punctelor in care calculam spline-ul

m1=length(t);

[lin,n]=size(pc);

q=zeros(lin,m1);

for l=1:m1

%determina pozitia lui t in raport cu nodurile

for j=1:n+grad

if (t(l)>=knots(j)) & (t(l) < knots(j+1))

break

end %if

end %for j

if (j==n+grad)

j=n;

end;

qv=pc

qn=zeros(lin,n);

for r=0:grad-1

for i=j-grad+r+1:j

%sprintf('omega(%g,%g),%g',i,grad-r,r)

w=omega(i,grad-r,knots,t(l));

qn(:,i)=(1-w)*qv(:,i-1)+w*qv(:,i)

end %for i

qv=qn;

end %for r

%sprintf('t(%g)=%g',l,t(l))

q(:,l)=qv(:,j);

end %for l

return

unde

function u=omega(i,k,knots,t)

% sprintf('i=%g, k=%g\n',i,k)

% pause

if knots(i+k) ~= knots(i)

u=(t-knots(i))./(knots(i+k)-knots(i));

else

u=0;

end %if

Apelând în fereastra de comandǎ a Matlab-lui funcția

» draw_b_spli (pc,3,100,'–k')

cu punctele de control specificate mai sus, obținem urmǎtorul grafic:

Fig. 4.5

Dupǎ cum s-a vǎzut o curbǎ B-spline este determinatǎ de un poligon de control și un șir de noduri. Din aceastǎ perspectivǎ importantǎ devine problema influenței pe care o are modificarea poziției unui punct de control sau a multiplicitǎții unui nod. Aceste curbe fiind folosite în design-ul liber, deseori dupǎ alegerea poligonului de control și a șirului de noduri, forma curbei generate nu corespunde fie din punct de vedere estetic fie funcțional sau dimensional și o primǎ încercare ar fi “mutarea” unui punct de control. Aceastǎ operație va avea doar efect local , așa cum se observǎ și din formula de calcul a unui punct de pe curba B-spline, conform algoritmului Cox De Boor și acesta reprezintǎ un mare avantaj al curbelor B-spline. Dacǎ modificarea poziției unui punct de control are efecte previzibile asupra formei curbei, modificarea poziției unui nod în șirul de noduri este și imprevizibilǎ și nesatisfǎcǎtoare. Schimbând însǎ ordinul de multiplicitate al unui nod putem obține niște obiective dorite asupra formei curbei. Cel mai important aspect este acela cǎ dacǎ un nod are ordinul de multiplicitate k adicǎ atunci curba va conține punctul . Aceastǎ proprietate poate fi folositǎ in problemele de “free design” în care se impune ca viitoarea curbǎ sǎ treacǎ prin niste puncte fixate.

Bibliografie

C de Boor , A practical Guide to Splines, New-York, Springer, 1978;

W. Boehm,   G. Farin,   J. Kahmann,  A survey of curve and surface methods in CAGD, Computer Aided Geometric Design , 1  (1984)  pp. 1–60;

W. Boehm, Inserting new knots into B-spline curve, Computer Aided Design, 12(4), 199-201, 1980;

R.L. Burden, J.D. Faires, Numerical Analysis, Third Edition , Prindle, Weber&Schimdt, Boston, 1985;

I. Chiorean, T. Cǎtinaș, Gh. Coman, Advanced Course on Numerical Analysis, Ed. Presa Univ. Clujeană, 2007

Gh. Coman, Analizǎ Numericǎ, Ed. Libris, Cluj-Napoca, 1995;

S. D. Conte, Carl de Boor, Elementary Numerical Analysis, An Algorithmic Aproach, International Series in Pure and Applied Mathematics, McGraw- Hill Book Company, New-York, third edition, 1980

I. Cuculescu, Analizǎ numericǎ, Ed. Tehnicǎ, București, 1967;

G. Farin, Curves and Surfaces for Computer Aided Design. A practical Guide, Academic Press, London, 1988;

D. Foley, A. van Dam, S.K.Feiner, J.F. Hughes, and Phillips: Introduction to Computer Graphics, Addison-Wesley, 1994;

D. Foley , A. van Dam, S.K. Feiner, J.F. Hughes, Computer Graphics: Principles and Practice in C (2nd ed., Addison Wesley, 1992;

M. Ghinea, V. Fireteanu, Matlab- Calcul Numeric, grafica, aplicații, Ed. Teora,1997;

J. Gravesen, Differential Geometry and Design of Shape and Motion, Department of Mathematics, Techical University of Denmark;

G.G. Lorentz, Bernstein polynomials, Univ. Toronto Press  (1953);

G.G Lorentz, Aproximation of functions, Holt, Rinehart and Winston, New York, 1966;

J. Lowther, C. Kuang Shene, Teaching B-spline is not difficult!, Michigan Technological University, 2003;

C.V. Muraru, Metode Numerice. Seminarii Matlab, Ed. Edusoft, Bacau, 2005

Theo Pavlidis, Algorithms for Graphics and Image Processing, Spronger-Verlang, Berlin-Heidelberg, Computer Science, Inc., 1982;

T. Sederberg, BYU Bézier curves, http://www.tsplines.com/resources/class_notes/Bezier_curves.pdf;

D.D Stancu , Ghe. Coman, O. Agratini, R. Trîmbițaș, Analiza Numericǎ și Teoria Aproximǎrii, Vol. I,.Presa Universitarǎ Clujeanǎ, Cluj-Napoca, 2001;

M Talmaciu, Metode Numerice, Vol. I, Ed. Tehnicǎ Info, Chișinǎu, 2005;

http://cgg-journal.com/1999-1/01/Denis.htm;

http://math.fullerton.edu/mathews/n2003/BezierCurveMod.html;

R. Trâmbițaș, Analizǎ Numericǎ, O introducere bazatǎ pe Matlab, Ed. Presa Universitarǎ Clujeanǎ, 2005;

R. Trâmbitaș, Numerical Analysis, Ed.Presa Univ.Clujeanǎ, 2007

T. Vladislav, I. Rașa, Analizǎ Numericǎ, Ed. Tehnicǎ, București, 1997;

A. Watt, 3D Computer Graphics (3rd edition), Addison-Wesley, 2000;

Similar Posts

  • .portal Internet Pentru Industria Textila

    CUPRINS Rezumatul proiectului………………………………………..3 Organigrama proiectului……………………………………..4 Consortiul proiectului…………………………………………5 Studiu de prefezabilitate………………………………………6 Plan de afaceri………………………………………………….7 Prepropunerea proiectului…………………………………….8 Planul de lucru…………………………………………………10 Definirea pachetelor de lucru si a activitatilor proiectului….11 Organigrama de dependenta a proiectului (grafic PERT)….36 10.Organigrama desfasurarii proiectului cu programarea activitatilor (grafic GANNT)……………………………………..37 10.Managementul proiectului…………………………………….38 11.Managementul financiar al proiectului……………………….45 12.Drepturi de proprietate intelectuala………………………….52 === final_proiect === DEVIZ…

  • Tipologia Sistemelor Informatice

    Introducere Un sistem informatic este un sistem care permite introducerea de date prin procedee manuale sau prin culegere automată de către sistem, stocarea acestora, prelucrarea lor și extragerea informației (rezultatelor) sub diverse forme. Componentele sistemului informatic sunt: calculatoarele, programele, rețelele de calculatoare și utilizatorii. Exemple: cartea de telefoane a unui anumit operator, repertoriul de legi inclusiv funcția lor activă și pasivă, bănci de date…

  • Proiectarea Sistemului Informațional Privind Evidența Personalului

    UNIVERSITATEA DE VEST TIMIȘOARA FACULTATEA DE ȘTIINȚE ECONOMICE SPECIALIZAREA: FINANȚE ASIGURĂRI PROIECT INFORMATIC AUTOR: NUȚIU GRAȚIAN MARIUS FINANȚE-ASIGURĂRI AN III GRUPA II -TIMIȘOARA 2001- UNIVERSITATEA DE VEST TIMIȘOARA FACULTATEA DE ȘTIINȚE ECONOMICE SPECIALIZAREA: FINANȚE ASIGURĂRI TEMA NR. 23 PROIECTAREA SISTEMULUI INFORMAȚIONAL PRIVIND EVIDENȚA PERSONALULUI LA REGIA AUTONOMĂ APĂ-CANAL ARAD AUTOR: NUȚIU GRAȚIAN MARIUS FINANȚE-ASIGURĂRI AN…

  • Sistem Informatic Pentru Urmarirea Productiei Intr O Firma de Executie a Confectiilor Metalice

    INTRODUCERE (rezumatul) Tema lucrării de diplomă este crearea unui sistem informatic pentru urmărirea producției într-o firmă de execuție a confecțiilor metalice. Cu ajutorul acestui sistem informatic vom putea ține evidența, într-o bază de date, a confecțiilor metalice ce se realizează de către o anumită firmă, specializată în acest domeniu. Caracteristici ale aplicației: Aplicația a fost…

  • Elaborarea Si Admiterea Utm

    Cuprins: Cuprins: 5 Introducere. 7 1. Descrierea generală a SGBD InterBase 8 1.1 Inițiere in limbajul de programare DELPHI 1.1.1 Mai multă productivitate ……………………………………………………………… 1.1.2 Suport extins pentru aplicațiile de baze de date ……………………………….. 1.1.3 Mai multă putere în motorul de baze de date …………………………. 1.2 Crearea bazelor de date…………………………………………………………. 1.3 Descrierea componentelor paginii DataAcces…………………………….

  • Razboiul Informational Si Factori de Risc Specifici la Adresa Securitatii Nationale

    CUPRINS: CAPITOLUL I: Conceptul de „război informațional”………………………………2 1.1 Definirea războiului informațional……………………………………..4 1.2 Locul și rolul informației…………………………………………………..5 1.3 Mediul de desfășurare al războiului informațional……………….6 1.4 Premisele și factorii favorizanți ai războiului informațional….7 CAPITOLUL II: Dimensiuni, caracteristici,arme și ținte………………………….9 2.1 Dimensiunile războiului informațional……………………………….9 2.2 Caracteristicile războiului informațional…………………………..13 2.3 Armele războiului informațional……………………………………….15 2.4 Ținte vizate de războiul informațional…