universitatea transilvania din braso¸ v facultatea de ... · •rezolvarea a câte unei probleme...

Post on 30-Jul-2018

256 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Universitatea Transilvania din BrasovFacultatea de Matematica-Informatica

E. SCHEIBER

Laborator de ANALIZA NUMERICA

SCILAB & MathCAD

Brasov

Tema de LABORATOR

Pentru a fi primit în examen trebuie efectuata si predata cadrului didacticcoordonator al activitatii de laborator Lucrarea de laborator de Analiza numer-ica/Calcul numeric.

Lucrarea consta din 2 teme:

• Rezolvarea a câte unei probleme din toate temele cuprinse în Culegerea deprobleme.

• Programarea unor metode de calcul numeric.

Fiecare tema primeste o nota iar media notelor reprezinta 50% din nota de exa-men.

Rezolvarea problemelor din Culegerea de probleme

Pe o foaie A5 se vor scrie

1. Titlul capitolului;

2. Enuntul temei si al problemei;

3. Produsul informatic cu care s-a rezolvat probleme;

4. Rezultatele obtinute.

Pe prima foaie se trece

1. Numele si prenumele;

2. Elemente de identificare a formatiei de studiu;

3. Numarul de ordine din catalog sau cel primit de la coordonatorul activitatiide laborator. În continuare ne referim la acest numar prin notatia I D .

2

3

La o tema, un student rezolva problema având numarul de ordine I D. DacaI D este mai mare decât numarul problemelor atunci problema ce trebuie rezol-vata se obtine cu formula

I D mod1 Numar ulPr oblemelor +1.

Se vor folosi urmatoarele produse informatice

• Scilab - produs gratuit descarcabil din internet;

Îndrumarul de laborator de Analiza numerica/Calcul numeric prezinta modulde rezolvare a problemelor.

1Restul împartirii.

Tema de programare

Programarea unor metode de calcul numeric

Fiecare student va prezenta 2 aplicatii programate în Scilab.Cele doua aplicatii se aleg dintre

1. Rezolvarea unui sistem algebric printr-o metoda finita;

2. Rezolvarea unui sistem algebric printr-o metoda iterativa;

3. Formula de derivare numerica;

4. Formula de integrare numerica.

Documentatia cuprinde:

1. Datele de identificare.

(a) Autorul (nume, prenume, specializarea, grupa);

(b) Data predarii proiectului;

(c) Tema proiectului.

2. Formulele de calcul utilizate.

3. Problema de test cu rezolvarea matematica si calculele auxiliare pentru de-panare.

4. Reprezentarea algoritmilor în pseudocod (l. româna).

Exemplu de aplicatie ScilabMetoda tangentei pentru rezolvarea ecuatiei algebrice f (x) = 0, f : R → R

consta în construirea sirului (xk )k∈N definit prin xk+1 = xk − f (xk )f ′(xk ) .

Documentatia cuprinde:

4

5

1. Formula de calcul.

x0 ∈ R

xk+1 = xk −f (xk )

f ′(xk ), k ∈N

2. Problema de test.

Sa se rezolve ecuatie 2x −x2 = 0, x0 = 1

S-au calculat x1 = 2.6294457, x2 = 1.8807153.

3. Algoritmul metodei este dat pe pagina urmatoare.

Algorithm 1 Pseudocodul metodei1: procedure METODA TANGENTEI

2: generarea aproximaţiei iniţiale xv3: i ter ← 04: do5: i ter ← i ter +16: x ← xv − f (xv)

f ′(xv)7: nr m ←|x −xv |8: xv ← x9: while (nr m ≥ eps) si i ter < nmi )

10: if nr m < eps then11: er ← 012: else13: er ← 114: end if15: return x16: end procedure

4. Textele sursa.

Proiectul este alcatuit din 2 programe Scilab:

(a) Datele problemei de test

function [f,df,x0,nmi,tol]=datas()deff(’y=f(x)’,’y=2.^x-x.*x’);deff(’y=df(x)’,’y=2.^x.*log(2)-2*x’);x0=-0.5;

6

nmi=50;tol=1e-5;

endfunction

(b) Rezolvarea problemei – nucleul proiectului.

function [x,er]=mtangentei(path)exec(path+’\datas.sci’,-1);[f,df,x0,nmi,tol]=datas();xv=x0;sw=%t;iter=0;while sw

iter=iter+1;x=xv-f(xv)./df(xv);printf("iter=%d x=%f\n",iter,x);nrm=max(abs(x-xv));xv=x;if((iter>=nmi) | (nrm<=tol))

sw=%f;endif(nrm<=tol)

er=0;else

er=1;end

endendfunction

7

În timp, la elaborarea acestui Îndru-mar de laborator au contribuit:

• Silviu Dumitrescu

• Cristina Luca

• Vlad Monescu

Cuprins

I Scilab 11

1 Elemente de programare în SCILAB 121.1 Obiecte Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.2 Elemente de programare in Scilab . . . . . . . . . . . . . . . . . . . . 20

1.3 Functii(subprograme) în Scilab . . . . . . . . . . . . . . . . . . . . . . 22

1.4 Salvarea si restaurarea datelor . . . . . . . . . . . . . . . . . . . . . . 25

1.5 Grafica în Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

1.5.1 Grafica 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

1.5.2 Grafica 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2 Algebra liniara numerica 312.1 Factorizarea unei matrice . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.2 Rezolvarea sistemelor algebrice de ecuatii liniare . . . . . . . . . . . 33

3 Rezolvarea sistemelor si ecuatiilor algebrice 373.1 Rezolvarea sistemelor algebrice de ecuatii neliniare . . . . . . . . . . 37

3.2 Rezolvarea ecuatiilor algebrice . . . . . . . . . . . . . . . . . . . . . . 39

3.3 Rezolvarea ecuatiilor polinomiale . . . . . . . . . . . . . . . . . . . . 40

4 Rezolvarea problemelor de interpolare 424.1 Interpolare polinomiala . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.2 Interpolare cu functii spline cubice . . . . . . . . . . . . . . . . . . . 45

5 Derivare numerica 475.1 Derivarea functiilor de o variabila reala . . . . . . . . . . . . . . . . . 47

5.2 Cazul functiilor de mai multe variabile . . . . . . . . . . . . . . . . . 47

6 Metoda celor mai mici patrate 49

8

CUPRINS 9

7 Integrare numerica 557.1 Integrarea functiilor de o variabila reala . . . . . . . . . . . . . . . . . 557.2 Calculul numeric al integralelor duble . . . . . . . . . . . . . . . . . . 57

II MathCAD 62

8 Prezentare generala 638.1 Efectuarea calculelor numerice . . . . . . . . . . . . . . . . . . . . . . 64

8.1.1 Operatori MathCAD . . . . . . . . . . . . . . . . . . . . . . . . 648.1.2 Identificatori MathCAD . . . . . . . . . . . . . . . . . . . . . . 658.1.3 Constante MathCAD . . . . . . . . . . . . . . . . . . . . . . . . 658.1.4 Tipuri de date MathCAD . . . . . . . . . . . . . . . . . . . . . . 668.1.5 Vectorizare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728.1.6 Unitati de masura . . . . . . . . . . . . . . . . . . . . . . . . . . 73

8.2 Reprezentari grafice . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748.3 Crearea unei animatii . . . . . . . . . . . . . . . . . . . . . . . . . . . 778.4 Editare de text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788.5 Salvarea / restaurarea datelor numerice . . . . . . . . . . . . . . . . . 788.6 Instrumente de calcul simbolic . . . . . . . . . . . . . . . . . . . . . . 798.7 Elemente de programare functionala . . . . . . . . . . . . . . . . . . 818.8 Elemente de programare procedurala . . . . . . . . . . . . . . . . . . 82

9 Algebra liniara numerica 899.1 Factorizarea unei matrice . . . . . . . . . . . . . . . . . . . . . . . . . 899.2 Rezolvarea sistemelor algebrice de ecuatii liniare . . . . . . . . . . . 90

10 Sisteme si ecuatii algebrice 9210.1 Sisteme algebrice neliniare . . . . . . . . . . . . . . . . . . . . . . . . 9210.2 Rezolvarea ecuatiilor algebrice . . . . . . . . . . . . . . . . . . . . . . 9410.3 Rezolvarea ecuatiilor polinomiale . . . . . . . . . . . . . . . . . . . . 94

11 Rezolvarea problemelor de interpolare 9611.1 Interpolare polinomiala . . . . . . . . . . . . . . . . . . . . . . . . . . 9611.2 Interpolare cu functii spline cubice . . . . . . . . . . . . . . . . . . . 97

12 Derivare numerica 10112.1 Derivarea functiilor de o variabila reala . . . . . . . . . . . . . . . . . 10112.2 Cazul functiilor de mai multe variabile . . . . . . . . . . . . . . . . . 102

13 Metoda celor mai mici patrate 103

10 CUPRINS

14 Integrare numerica 10514.1 Integrare numerica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10514.2 Calculul numeric al integralelor duble . . . . . . . . . . . . . . . . . . 106

III CULEGERE DE PROBLEME 108

15 Metode numerice în algebra liniara 109

16 Sisteme si ecuatii algebrice 113

17 Probleme de interpolare 117

18 Derivare numerica 120

19 Metoda celor mai mici patrate 122

20 Integrare numerica 123

Bibliografie 125

Part I

Scilab

11

Capitolul 1

Elemente de programare în SCILAB

Cap. 2

Prezentam pe scurt elemente ale limbajului de programare utilizat în pro-dusul Scilab. Elementele prezentate în sectiunile urmatoare reprezinta doar ghidde utilizare rapida. Se presupune ca utilizatorul poseda cunostinte de progra-mare, având experienta de lucru în cel putin un limbaj de programare procedu-rala.

Scilab este un produs de calcul numeric produs de INRIA – Franta – disponi-bil în mediile Windows si Linux. Produsul este distribuit gratuit. Produsul esteînsotit de o documentatie cuprinzatoare.

Ca produs informatic Scilab are trasaturi comune cu produsul comercial Mat-lab.

1.1 Obiecte Scilab

• Constante

12

1.1. OBIECTE SCILAB 13

Tip Mnemonic Valoare

real %pi π

real %e ereal %eps ≈ 2.210−16

%inf ∞complex %i iboolean %t trueboolean % f falsepolinom %s s

%nan Not A Number

%inf / %infNan

• Literali

– Literali numerici

Exemple:1. Numarul real 10,23 se poate scrie:10.23=0.1023e+2=0.1023E+2=1023e-2=1023E-2.

2. Numarul complex 1+5i se scrie 1+5∗%i .

– Literali nenumerici

Un caracter sau un sir se caractere – string – se defineste (scrie):

’c’ sau "c"’string’ sau "string"

• Functii matematice uzuale:

14 CAPITOLUL 1. ELEMENTE DE PROGRAMARE ÎN SCILAB

Mnemonic Semnificatie Mnemonic Semnificatie

abs(x) |x| exp(x) ex

log(x) ln(x) log10(x) lg(x)sin(x) sin(x) asin(x) arcsin(x)sinh(x) sh(x) asinh(x) arcsh(x)cos(x) cos(x) acos(x) arccos(x)cosh(x) ch(x) acosh(x) arcch(x)tan(x) tg(x) atan(x) arctg(x)tanh(x) th(x) atanh(x) arcth(x)cotg(x) ctg(x) coth(x) cth(x)sqrt(x)

px sinc(x) sin x

xfloor(x) [x] ceil(x) dxeerf(x) 2p

π

∫ x0 e−t 2

dt gamma(x) Γ(x) = ∫ ∞0 t x−1e−t dt

gammah(x) lnΓ(x) dlgamma(x) Γ′(x)Γ(x)

real(z) ℜ(z) imag(z) ℑ(z)

• Siruri de numere

Progresia aritmetica introduce definind primul termen (a), ratia (r ) si omarginea superioara sau inferioara (M), dupa cum ratia este pozitiva saunegativa, prin sintaxa

a : r : M

Daca parametrul r lipseste atunci ratia este 1.

a=0.2:0.3:10.2 0.5. 0.8b=1:-0.3:01. 0.7 0.4 0.1

Functia Scilab linspace(a,b,n) defineste progresia a+i b−an−1 , i = 0,1, . . . ,n−

1.

Un sir de numere (ai )1≤i≤n se poate defini prin

1. i=1:na=formula termenului general, functie de i

2. a = [a1, a2, . . . , an],

unde a1, a2, . . . , an sunt termenii sirului.

1.1. OBIECTE SCILAB 15

Indicele primului termen al unui sir este 1.

i=1:41 2 3 4a=i^21 4 9 16b=[1,4,9,16]a==bT T T T

• Matrice

– Definirea unei matrice.

Exemplu: Matricea

a =(

1 2 34 5 6

)se defineste în Scilab prin

a=[1,2,3;4,5,6]

Elementele unei linii se pot separa prin virgula sau spatiu. Elementeleunei matrice pot fi: constante/variabile numerice, constante booleene,siruri de caractere, polinoame, functii rationale.

O progresie aritmetica pr og = a : r : M este interpretata ca un vectorlinie (adica o matrice cu o singura linie).

Exemplu. Progresiile aritmetice a = 0.2,0.6,1.0,1.4,1.8 si b = 0,−1,−2,−3,−4se obtin prin

a=0.2 : 0.4 : 2a=

! 0.2 0.6 1.0 1.4 1.8 !b=-1 : -1 : -4b=

! -1 -2 -3 -4 !

Functia Scilab size(variabilaMatrice) returneaza numarul liniilor sinumarul coloanelor variabileiMatrice.

– Definirea unei matrice rara se face cu functia Scilab

a=sparse([l1,c1; l2,c2; . . .], [v1, v2, . . .])

16 CAPITOLUL 1. ELEMENTE DE PROGRAMARE ÎN SCILAB

unde ali ,ci = vi . ∀i .

Functia full(a) afiseaza o matrice rara a în formatul obisnuit.

– Matrice speciale.

* zeros(m,n) defineste o matrice nula cu m linii si n coloane;

* ones(m,n) defineste o matrice cu toate elementele egale cu 1având m linii si n coloane;

* eye(m,n) defineste o matrice unitate cu m linii si n coloane;

* rand(m,n) defineste o matrice cu m linii si n coloane având caelemente numere (semi)aleatoare cuprinse între 0 si 1.

– Selectarea unui element se obtine prin sintaxa

variabilaMatrice(numarLinie, numarColoana)

Prima linie si prima coloana are numarul de ordine 1.

– Operatori matriceali.

Simbol Semnificatie

+ adunare- scadere∗ înmultire de matrice.∗ înmultire pe componenteˆ ridicare la putere prin produs matriceal.ˆ ridicarea la putere a componentelor\ a\b = a−1 ·b

. \ a.\b = (bi , j

ai , j)i , j

/ b/a = b ·a−1

. / b/a = (bi , j

ai , j)i , j

’ transpunere

– Functii matriceale.

1.1. OBIECTE SCILAB 17

Mnemonic Semnificatia

triu(A) Matricea superior triunghiulara a lui Atril(A) Matricea inferior triunghiulara a lui Adiag(A) Vectorul cu elementele diagonale ale lui Asize(A) Sir cu dimensiunile lui Alength(A) Numarul elementelor lui Amax(A) Cel mai mare element al lui Amin(A) Cel mai mic element al lui Amatrix(A,m,n) Transforma matricea A într-o matrice cu m

linii si n coloane

– Extinderea unei matrice. Date fiind o matrice a si un vector linie v

* adaugarea liniei v ca prima linie a matricei a se obtine prin

[v ; a]

* adaugarea liniei v ca ultima linie a matricei a se obtine prin

[a; v]

* adaugarea vectorului v ca prima coloana a matricei a se obtineprin

[v ′, a] sau [v ; a′]′

* adaugarea vectorului v ca ultima coloana a matricei a se obtineprin

[a, v ′] sau [a′; v]′

Trebuie observata diferenta dintre cazul în care extinderea se face prinlinie fata de cel în care se extinde prin coloana prin utilizarea “;” sirespectiv “,”.

– Extragerea unei submatrice. O zona compacta fixata prin liniile l1 : l2

si coloanele c1 : c2, inclusiv, se extrage din matricea a prin

a(l1 : l2,c1 : c2)

Pentru extragerea unei zone necompacte – aflata la intersectia liniilorl1, l2, . . . , lp cu coloanele c1,c2, . . . ,cq – dintr-o matrice a având m liniisi n coloane se definesc vectori linie

l i n = (l i ni )1≤i≤m , l i ni ={

%t daca i ∈ {l1, . . . , lp }% f în caz contrar

18 CAPITOLUL 1. ELEMENTE DE PROGRAMARE ÎN SCILAB

col = (col j )1≤ j≤n , col j ={

%t daca j ∈ {c1, . . . ,cq }% f în caz contrar

Extragerea rezulta dina(l i n,col )

Comenzile a(:,$) si a($, :) extrag din matricea a ultima coloana, re-spectiv ultima linie.

• Polinoame si expresii rationale

Scilab poseda o modalitate deosebita de lucru cu polinoame definite pesteR sau C .

Pentru a defini un polinom în nedeterminata (variabila) X se poate definiîntâi nedeterminata

X=poly(0,’X’);

iar apoi polinomul se introduce nemijlocit, de exemplu

p=X^2+3*X+2

Altfel, un polinom se defineste prin intermediul functiei Scilab poly

polinom=poly(vector, nedeterminata, [string])

Daca vector = (a1, a2, . . . , an) si string=’coef ’ atunci se obtine polinomul degrad n −1

poli nom = a1 +a2X + . . .+an X n−1,

iar daca string=’roots’ atunci se obtine polinomul de grad n

poli nom = (X −a1)(X −a2) . . . (X −an)

A doua varianta este cea implicita.

v=[1,2,3];p=poly(v,’X’)p=

-6 + 11X - 6X^2 +X^3q=poly(v,’X’,’coef’)q=

1 + 2X + 3X^2

1.1. OBIECTE SCILAB 19

Daca A este o matrice patrata atunci poly(A, ’X ’) genereaza polinomul car-acteristic matricei A, adica det(X · I − A).

Daca p si q sunt doua polinoame în nederminata X atunci p/q defineste ofunctie rationala.

Scilab efectueaza operatiile uzuale cu polinoame si functii rationale în modsimbolic.

Daca r este o functie rationala atunci r (’num’) sau numer(r ) furnizeaza numara-torul si r (’den’) sau denom(r ) furnizeaza numitorul lui r.

Functii Scilab având polinoane ca argumente:

Mnemonic Semnificatia

v = coe f f (p) returneaza coeficientii polinomului pv = hor ner (p, x) p polinom, v = p(x)q = der i vat (p) p, q polinoame, q = p ′

[q,U ] = g cd([p1, p2, . . .]) q = cmmdc(p1, p2, . . .), qU = [p1, p2, . . .]greatest common divisor

[q,U ] = lcm([p1, p2, . . .]) q = cmmmc(p1, p2, . . .), q/Ui = pi

least common multiple

• Lista. O lista se defineste prin

list(e1,e2, . . . ,en)

unde ei sunt obiecte Scilab.

Exemplu.

l=list(1,%t,’abc’,[1,2;3,4])l=

l(1)1l(2)

Tl(3)

abcl(4)

! 1. 2. 3. 4. !

Al i -lea element al unei liste l este accesibil cu l (i ).

l (i )=null sterge al i -lea element din lista l.

20 CAPITOLUL 1. ELEMENTE DE PROGRAMARE ÎN SCILAB

1.2 Elemente de programare in Scilab

Programarea în Scilab se face în cadrul functiilor definite în exterior. Pentrueditarea acestor functii Scilab poseda un editor propriu, dar se poate fi utilizatorice editor de fisiere.

O linie de comentariu este // text - comentariu.Fiecare instructiune introdusa în dreptul promptului Scilab este executata si

rezultatul este afisat. Pe o linie pot fi puse mai multe instructiuni separate prin, sau ;. În plus, încheierea unei comenzi cu caracterul ; are ca efect inhibareaafisarii rezultatului.

Pentru exprimarea conditiilor se utilizeaza

Operatori relationali Operatori logiciSimbol Semnificatie Simbol Semnificatie

== = & si∼= 6= | sau<= ≤ ∼ negatia< <>= ≥> >

• Instructiunea de atribuirevariabila=expresie

• Instructiuni conditionate

1.

if conditie theninstructiuni

elseif conditie theninstructiuni

elseinstructiuni

end

Exemplul 1.1 Rezolvarea ecuatiei x2 +ax +b = 0 în linie de comanda.

a=3;b=2;delta=a^2-4*b;if delta>=0 then x=(-a+sqrt(delta))/2;y=(-a-sqrt(delta))/2;

else x=-a/2;y=sqrt(-delta)/2;end

1.2. ELEMENTE DE PROGRAMARE IN SCILAB 21

2.

select expresiecase expr esi e1 then instructiuni

...else

instructiuniend

case si then trebuie scrise pe aceeasi linie.

• Instructiuni de ciclare

1.

for n = n1 : pas : n2

{,

do

}instructiuni, end

Daca pas = 1, atunci acest parametru este optional.

Exemplul 1.2∑5

i=1 i

s=0;for i=1:5, s=s+i;,end

Exemplul 1.3 Împartirea elementelor unei multimi în clase de echivalentamodulo 3.

a=[1,2,3,4,5,6,7,8,9];c0=zeros(3,1);c1=zeros(3,1);c2=zeros(3,1);i0=0;i1=0;i2=0;for i=1:length(a),

select a(i)-floor(a(i)/3)*3case 0 then i0=i0+1;c0(i0)=a(i);case 1 then i1=i1+1;c1(i1)=a(i);case 2 then i2=i2+1;c2(i2)=a(i);

end,end

Exemplul 1.4 Sirul lui Fibonacci generat în linie de comanda.

F=[1,1];n=15;for i=3:n do, F(i)=F(i-1)+F(i-2);, end

22 CAPITOLUL 1. ELEMENTE DE PROGRAMARE ÎN SCILAB

2.

while conditie

,do

then

instructiuni, end

while si do sau then trebuie scrise pe aceasi linie.

Exemplul 1.5∑5

i=1 i

s=0;i=0;while i<5, i=i+1;s=s+i;,end

Instructiunea break realizeaza un salt neconditionat la prima instructiuneaflata dupa instructiunea de ciclare.

Instructiunea continue realizeaza un salt neconditionat la urmatorul pasal ciclului.

Editarea unei instructiuni în linie de comanda se face într- o singura linie decod, prezenta virgulei este obligatorie (acolo unde este cazul). Editarea codulîn functii externe se poate face pe mai multe linii, utilizând indentarea (scriereadecalata). În acest caz se poate omite scrierea virgulelor date în sintaxa instructi-unilor.

1.3 Functii(subprograme) în Scilab

O functie Scilab este corect definita daca produce rezultate pentru diferitetipuri de variabile: numere, vectori, matrice. În acest scop, uzual operatiile deînmultire, împartire si ridicare la putere se folosesc în varianta cu punct, adicaoperatiile se fac pe componente.

Functiile Scilab predefinite satisfac aceasta cerinta.Functiile se pot defini în

• Linie de comanda.

deff(’[y1, . . . , yn]= f (x1, . . . , xm)’,[’y1 = expr esi e1’,. . .,’yn = expr esi en ’])

Functia f :R2 →R2 definita prin

f (x, y) =(

x + yx2 + y2

)se defineste prin

1.3. FUNCTII(SUBPROGRAME) ÎN SCILAB 23

deff(’[u,v]=f(x,y)’,[’u=x+y’,’v=x^2+y^2’])

Variabilele functiei pot fi numere, vectori, matrice. În cazul în care vari-abilele sunt tablouri, operatiile algebrice se fac între componentele core-spunzatoare.

O functie definita în linie de comanda se salveaza

save(’cale\numeFisier.bin’,’ f ’)

Functia save salveaza orice tip de obiect. Daca a,b sunt variabile Scilabatunci sintaxa utilizata va fi save(’cale\numeFisier.bin’,′a′,′b′).

Reîncarcarea se realizeaza prin

load(’cale\numeFisier.bin’)

• Exterior. Cu un editor de fisiere se creaza subprogramul

function [y1, . . . , yn]= f (x1, . . . , xm)instructiuni Scilab

endfunction

care se salveaza obligatoriu cu numele f .sce sau f .sci.

Pentru a putea fi utilizata functia exterioara trebuie încarcata prin

exec(’cale\ f .sce’,-1)

Valoarea -1 pentru al doilea parametru are ca efect lipsa afisarilor legate deoperatia de încarcare a functiei.

Pentru functia din exemplul anterior, codul script-ului de definitie exte-rioara este

function [u,v]=f(x,y)u=x+y;v=x^2+y^2;

endfunction

Functiile definite în exterior pot fi organizate în biblioteci. Astfel functiileScilab – deci având extensia .sci – aflate într-un catalog localizat prin calesunt reunite într-o biblioteca prin comanda

24 CAPITOLUL 1. ELEMENTE DE PROGRAMARE ÎN SCILAB

genlib(’numeBiblioeca’,’cale’)

Prin aceasta operatie are loc compilarea functiilor si crearea unui fisiernames cu cuprinsul bibliotecii.

O biblioteca odata creata, resursele ei pot fi utilizate dupa reîncarcarea eiprin

numeBiblioteca=lib(’cale’)

Exemplul 1.6 Functie pentru rezolvarea ecuatiei de gradul al doilea.

function [u,v]=eq2(a,b)delta=a*a-4*b;if delta>=0 thenu=0.5*(-a+sqrt(delta));v=0.5*(-a-sqrt(delta));disp(’Real roots’)

elseu=-a/2;v=sqrt(-delta);disp(’Complex conjugate roots’)

endendfunction

Functia disp(obiectScilab) afiseaza valoarea argumentului.

Exemplul 1.7 Functie pentru calculul valorii unui polinom.

function r=polyval1(x,c)[l,n]=size(c);r=c(1);for i=2:nr=r*x+c(i);

endendfunction

function r=polyval2(x,c)[l,n]=size(c);i=0:n-1;u=x^i;r=u*c’;

endfunction

1.4. SALVAREA SI RESTAURAREA DATELOR 25

Exemplul 1.8 Functie pentru calculul primelor n termeni ai sirului Fibonacci.

function t=fib(n)t=[1,1];for i=3:nt(i)=t(i-1)+t(i-2);

endendfunction

Exemplul 1.9 Functie pentru calculul limitei sirului (an)n∈N definit prin a0 =p

2, an+1 =pan +2.

function [l,error]=lim(tol,nmi)v=sqrt(2);cont=%t;ni=1;while(cont)ni=ni+1;l=sqrt(v+2);d=abs(v-l);v=l;if(d<tol)&(ni>nmi)cont=%f

endendif(d<tol)error=0;

elseerror=1;

endendfunction

1.4 Salvarea si restaurarea datelor

Salvarea si restaurarea datelor în fisiere text se obtin cu functiile Scilab:

• csvWrite(M,filename, separator)

• csvWrite(M,filename)

M este matricea care se salveaza iar separatorul implicit este virgula (csv -Comma separated values).

26 CAPITOLUL 1. ELEMENTE DE PROGRAMARE ÎN SCILAB

• M=csvRead(filename)

• M=csvRead(filename, separator)

1.5 Grafica în Scilab

1.5.1 Grafica 2D

Din multimea functiilor grafice ale produsului Scilab amintim

• plot2d. Cea mai simpla forma de utilizare este

plot2d(x, y)

unde

x = x1,1 . . . x1,n

. . . . . . . . .xm,1 . . . xm,n

y = y1,1 . . . y1,n

. . . . . . . . .ym,1 . . . ym,n

sunt doua matrice de acelasi tip. Functia construieste în acelasi panou (fer-eastra grafica) graficele a n curbe ce trec respectiv prin punctele

(xi , j , yi , j )1≤i≤m , j ∈ {1, . . . ,n}.

• fplot2d. Utilizarea functiei este

fplot2d(x, f )

unde

– x este un sir de numere reale;

– f este o functie Scilab

iar rezultatul este graficul functiei f construit pe baza valorilor ei în punctelelui x.

• comet. Reprezentare grafica animata. Utilizarea este asemanatoare cu ceaa fuctiei plot2d.

• paramfplot2d realizeaza o animatie reprezentând evolutia graficele functi-ilor ft (x), x ∈ [a,b] când parametrul t parcurge o multime de valori. Modulde utilizare

1.5. GRAFICA ÎN SCILAB 27

paramfplot2d( f , x, t )

unde

– f (x, t ) este o functie Scilab.

– x si t sunt siruri.

Exemplul 1.10 Reprezentarea grafica a functiilor sin x si cos x în [−π,π]

Reprezentarea grafica se obtine prin

t=-%pi:0.1:%pi;x=[t’,t’];y=[sin(t’),cos(t’)];plot2d(x,y)

Va rezulta imaginea din Fig. 1.1

1.5.2 Grafica 3D

• plot3d(X,Y,Z)

X = (Xi )1≤i≤m si Y = (Y1≤ j≤n sunt vectori dati în ordine crescatoare, iarZ = (Zi , j ), i ∈ {1, . . . ,m}, j ∈ {1, . . . ,n} reprezinta valoarea functiei calculataîn (Xi ,Y j ).

Pozitia observatorului este indicata prin parametrii thet a = long i tudi ne, al pha =90− l at i tudi ne. Valorile implicite sunt thet a = 35, al pha = 45.

Daca suprafata este definita prin z = f (x, y), x ∈ [a,b], y ∈ [c,d ] atunci sedefineste functia Scilab

function [x,y,z]=suprafata(m,n)u=linspace(a,b,m);v=linspace(c,d,n);for i=1:mfor j=1:nx(i,j)=. . .y(i,j)=. . .

endendz=f(x,y);

endfunction

28 CAPITOLUL 1. ELEMENTE DE PROGRAMARE ÎN SCILAB

Figure 1.1: Grafica 2D.

exec(’. . .\suprafata.sce’,-1)[x,y,z]=suprafata(m,n);plot3d(x,y,z)

Se poate proceda mai simplu

[x,y]=meshgrid(a:dx:b,c:dy:d);z=f(x,y);mesh(x,y,z)

• fplot3d(X,Y,f)

Exemplul 1.11 Reprezentarea sferei x2 + y2 + z2 = 1.

Semisfera superioara este data de z = √1−x2 − y2, pentru care construim

functia Scilab

1.5. GRAFICA ÎN SCILAB 29

function[x,y,z]=sfera(r,m,n)x=linspace(-r,r,m);y=linspace(-r,r,n);for i=1:m

for j=1:nif x(i)^2+y(j)^2<=r^2 then

z(i,j)=sqrt(r^2-x(i)^2-y(j)^2);else

z(i,j)=%nan;end

endend

endfunction

Imaginea obtinuta este data în Fig. 1.2.

Figure 1.2: Grafica 3D Semisfera superioara

Altfeldeff(’z=sf(x,y)’,[’z=sqrt(1-x.^2-y.^2)’])x=-1:0.05:1;y=x;fplot3d(x,y,sf)

30 CAPITOLUL 1. ELEMENTE DE PROGRAMARE ÎN SCILAB

Exercitii

1. Sa se reprezinte grafic functiile în intervalele indicate

a.p|x| x ∈ [−4,4]

b. e−x2x ∈ [−4,4]

c. 4x sin x−32+x2 x ∈ [0,4]

d. x −p

x2 −1 x ∈ [−4,4]

2. Sa se reprezinte evolutia functiilor

a. x t x ∈ [0,1] t ∈ {0,1,2, . . . ,500}b. sin t x x ∈ [0,π/2] t ∈ {1,2, . . . ,100}c. sin t x x ∈ [0,2π] t = 1−0.05i , i ∈ {0,1, . . . ,20}

3. Sa se reprezinte:

a. z = x2

a2 + y2

b2 a = 4,b = 3 x ∈ [−3,3], y ∈ [−3,3]Paraboloidul eliptic

b. z = x2

a2 − y2

b2 a = 4,b = 3 x ∈ [−3,3], y ∈ [−3,3]Paraboloidul hiperbolic

Capitolul 2

Algebra liniara numerica

Cap. 1 Cap. 3

2.1 Factorizarea unei matrice

Functiile

• [L,U ,P ] = lu(A) calculeaza factorizarea LU a matricei A : PA = LU .

• [Q,R] = qr(A) calculeaza factorizarea QR a matricei A : A =QR

Exemplul 2.1 Sa se calculeze factorizarea LU a matricei

A =

1 2 −1 3 22 4 −2 5 1−1 −2 1 −3 −43 6 2 10 71 2 4 0 4

.

A=[1,2,-1,3,2;2,4,-2,5,1;-1,-2,1,-3,-4;,3,6,2,10,7;1,2,4,0,4];[L,U,P]=lu(A)P =

31

32 CAPITOLUL 2. ALGEBRA LINIARA NUMERICA

0. 0. 0. 1. 0.0. 1. 0. 0. 0.0. 0. 0. 0. 1.1. 0. 0. 0. 0.0. 0. 1. 0. 0.

U =

3. 6. 2. 10. 7.0. 0. - 3.3333333 - 1.6666667 - 3.66666670. 0. 3.3333333 - 3.3333333 1.66666670. 0. 0. - 2. 0.50. 0. 0. 0. - 2.

L =

1. 0. 0. 0. 0.0.6666667 1. 0. 0. 0.0.3333333 0. 1. 0. 0.0.3333333 0. - 0.5 1. 0.

- 0.3333333 0. 0.5 - 1. 1.

Exemplul 2.2 Sa se calculeze factorizarea QR a matricei

X = 6 6 1

3 6 12 1 1

X=[6,6,1;3,6,1;2,1,1];

[Q,R]=qr(X)R =

7. 8. 1.57142860. 3. 0.14285710. 0. 0.7142857

Q =

0.8571429 - 0.2857143 - 0.42857140.4285714 0.8571429 0.28571430.2857143 - 0.4285714 0.8571429

2.2. REZOLVAREA SISTEMELOR ALGEBRICE DE ECUATII LINIARE 33

Q*R-X

0. 8.882D-16 4.441D-16- 4.441D-16 - 5.329D-15 - 1.554D-150. - 3.109D-15 - 8.882D-16

2.2 Rezolvarea sistemelor algebrice de ecuatii liniare

Pentru rezolvarea unui sistem algebric de ecuatii liniare Ax = b, în cazul încare

• numarul ecuatiilor coincide cu numarul necunoscutelor;

• determinantul sistemului este diferit de zero;

se procedeaza dupa cum urmeaza:

1. se fixeaza matricele A si b;

2. se calculeaza x = A−1b.

Expresia A−1 se poate introduce întocmai (Aˆ(-1)) sau se poate utiliza functiaScilab inv(A).

Functia Scilab det(A) calculeaza determinantul matricei A.

Exemplul 2.3 Sa se rezolve sistemul algebric de ecuatii liniarex1 + 2x2 + 3x3 + 4x4 = 11

2x1 + 3x2 + 4x3 + x4 = 123x1 + 4x2 + x3 + 2x4 = 134x1 + x2 + 2x3 + 3x4 = 14

Rezolvarea consta din

A = [1,2,3,4;2,3,4,1;3,4,1,2;4,1,2,3];b = [11;12;13;14];det(A)ans=

160x=inv(A)*b

34 CAPITOLUL 2. ALGEBRA LINIARA NUMERICA

x=! 2 !! 1 !! 1 !! 1 !

În general, pentru sistemul algebric de ecuatii liniare Ax+b = 0, functia Scilab[x,k]=linsolve(A,b) calculeaza

1. x – o solutie particulara;

2. k – o baza a subspatiului liniar Ker(A) = {x|Ax = 0}.

Solutia sistemului Ax+b = 0 este x+kc unde c este un vector oarecare a caruidimensiune coincide cu numarul coloanelor matricei k.

Daca sistemul este incompatibil atunci rezultatele sunt egale cu matricea vida[ ].

Exemplul 2.4 Sa se rezolve sistemul algebric de ecuatii liniare

x1 + x2 + x3 + x4 = 22x1 − x2 + 2x3 − x4 = 1

x1 + 2x2 − x3 + 2x4 = −12x1 + x2 + 4x3 + x4 = 73x1 + 2x2 − 2x3 + 2x4 = −5

având solutia x1 =−1, x2 = 1−x4, x3 = 2.Scris matriceal, solutia sistemului este

x1

x2

x3

x4

=

−1120

+

0−101

c =

−1120

+

0−1p

201p2

c ′.

Rezolvarea sistemului este

A=[1,1,1,1;2,-1,2,-1;1,2,-1,2;2,1,4,1;3,2,-2,2];b=[2;1;-1;7;-5] ;[x,k]=linsolve(A,-b)k =

- 5.551D-17

2.2. REZOLVAREA SISTEMELOR ALGEBRICE DE ECUATII LINIARE 35

0.70710682.776D-16

- 0.7071068x =

- 1.0.52.0.5

Observatie. k aproximeaza vectorul de norma euclidiana 101p2

0−1p

2

.

Notând cu u si v cele doua solutii particulare puse în evidenta mai sus

u =

−1120

v =

−10.52

0.5

gasim

u − v =

0

0.50

−0.5

= 1p2

k ∈ KerA

În cazul unui sistem algebric de ecuatii liniare incompatibil se poate calculaelementul care minimizeaza functionala J (x) = ‖b − Ax‖2

2. Acest element estesolutia sistemului algebric de ecuatii liniare compatibil AT Ax = AT b si este datde functia Scilab x=lsq(A,b).

Exemplul 2.5 Sa se rezolve sistemul algebric de ecuatii liniare2x − y + 3z = 7x + y + z = 4

3x − 3y + 5z = 8

în sensul celor mai mici patrate.

36 CAPITOLUL 2. ALGEBRA LINIARA NUMERICA

Rezolvarea este

A=[2,-1,3;1,1,1;3,-3,5];b=[7;4;8];x=lsq(A,b)x =

1.48717951.29487181.5512821

Functia linsolve(A,−b) returneaza [ ].

Capitolul 3

Rezolvarea sistemelor si ecuatiiloralgebrice

Cap. 2 Cap. 4

3.1 Rezolvarea sistemelor algebrice de ecuatii neliniare

Pentru rezolvarea sistemului algebric de ecuatii neliniaref1(x1, . . . , xn) = 0...fn(x1, . . . , xn) = 0

sau scris sub forma concentrata f (x) = 0 cu

x =

x1...

xn

f (x) =

f1(x1, . . . , xn)...

fn(x1, . . . , xn)

,

se utilizeaza functia Scilab

[x [,y [,info ] ] ]=fsolve(x0, f [,fjac [,tol ] ] )

37

38 CAPITOLUL 3. REZOLVAREA SISTEMELOR SI ECUATIILOR ALGEBRICE

unde semnificatia parametrilor este:

• x0 reprezinta o aproximatie initiala a solutiei sistemului.

• f identificatorul functiei Scilab care definette sistemul neliniarf (x) = 0.

• f j ac identificatorul functiei Scilab al jacobianului finctiei f , adica

f j ac(x) =

∂ f1∂x1

(x) . . . ∂ f1∂xn

(x). . . . . . . . .

∂ fn∂x1

(x) . . . ∂ fn∂xn

(x)

• tol toleranta, parametrul utilizat în testele de precizie (scalar real).

• x aproximatia calculata a solutiei sistemului algebric.

• y reprezinta valoarea functiei f calculata în x; y = f (x).

• i n f o indicatorul de raspuns al programului fsolve. În cazul rezolvarii cusucces, valoarea indicatorului este 1.

Astfel, rezolvarea consta din

1. definirea functei f (si eventual al jacobianului f j ac);

2. apelarea functiei Scilab fsolve.

Exemplul 3.1 Sa se rezolve sistemul algebric de ecuatii neliniare10x1 + x2

1 − 2x2x3 − 0.1 = 010x2 − x2

2 + 3x1x3 + 0.2 = 010x3 + x2

3 + 2x1x2 − 0.3 = 0

Rezolvarea consta din:

deff(’q=f(p)’,[’x=p(1)’,’y=p(2)’,’z=p(3)’,’q(1)=10*x+x.^2-2*y.*z-0.1’,’q(2)=10*y-y.^2+3*x.*z+0.2’,’q(3)=10*z+z.^2+2*x.*y-0.3’])

p0=[0,0,0];[p,q,info]=fsolve(p0,f)

3.2. REZOLVAREA ECUATIILOR ALGEBRICE 39

info=1.

q=1.0E-15*

! - .2636780 !! .2775558 !! .9436896 !p=! .0098702 !! - .0200485 !! .0299499 !

3.2 Rezolvarea ecuatiilor algebrice

Daca n = 1, adica dimensiunea spatiului este 1, atunci f (x) = 0 cu f : I ⊂ R →R reprezinta o ecuatie algebrica.

Pentru rezolvarea ecuatiilor algebrice se utilizeaza de asemenea functia Scilabfsolve.

Exemplul 3.2 Sa se rezolve ecuatia 2x = x2.

Rezolvarea ecuatiei f (x) = 2x −x2 = 0 este

deff(’y=f(x)’,’y=2.^x-x.^2’)[x,y,info]=fsolve(1,f)info1.

y=0.

x=2.

sau cu precizarea derivatei functiei f (x)

deff(’y=df(x)’,’y=(2.^ x).*log(x)-2*x’)[x,y,info]=fsolve(1,f,df)info=1.

y=

40 CAPITOLUL 3. REZOLVAREA SISTEMELOR SI ECUATIILOR ALGEBRICE

0x=2.

Daca x0 = 5 atunci x = 4, iar pentru x0 =−1 gasim x =−0.7666647.Graficul functiei f este reprezentat în Fig. 3.1.

Figure 3.1: y = 2x −x2

3.3 Rezolvarea ecuatiilor polinomiale

În cazul particular al ecuatiilor polinomiale se cere determinarea tuturor radacinilorreale sau complexe.

Pentru aflarea radacinilor unui polinom se procedeaza astfel:

1. Se defineste polinomul Scilab p de variabila x.

2. Radacinile polinomului p sunt calcutate ajutorul functiei Scilab

3.3. REZOLVAREA ECUATIILOR POLINOMIALE 41

x=roots(p)

unde

• p este polinomul Scilab cu coeficienti reali sau complecsi de grad celmult 100.

• x este un tablou cu radacinile polinomului p.

Exemplul 3.3 Sa se determine radacinile polinomului p = x4+2x3+3x2+2x+1.

Rezolvarea consta din:

c=[1,2,3,2,1];p=poly(c,’x’,’coeff’);x=roots(p)x=! - .5 + .8660254i !! - .5 - .8660254i !! - .5 + .8660254i !! - .5 - .8660254i !

Capitolul 4

Rezolvarea problemelor deinterpolare

Cap. 3 Cap. 5

Fie F o familie interpolatoare de ordin n pe axa reala. Dându-se nodurile(xi )1≤i≤n si numerele (yi )1≤i≤n , daca ϕ ∈F este functia de interpolare care satis-face conditiile ϕ(xi ) = yi , 1 ≤ i ≤ n, se cere sa se calculeze ϕ(z), unde z este unpunct dat.

4.1 Interpolare polinomiala

Pentru F = Pn−1 solutia problemei de interpolare Lagrange este polinomul

L(Pn−1; x1, . . . , xn ; y1, . . . , yn)(z) =n∑

i=1yi

n∏j=1j 6=i

z −x j

xi −x j

Valoarea acestui polinom este calculat de functia Scilab

function f=lagrange(xd,x,y)[mx,nx]=size(x);

42

4.1. INTERPOLARE POLINOMIALA 43

[my,ny]=size(y);ierror=0;if (nx~=ny)|(mx~=1)|(my~=1),ierror=1;disp(’data dimension error’)abort

endxx=gsort(x);for k=1:nx-1,if xx(k)==xx(k+1),ierror=1;break,

endendif ierror~=0,disp(’data error’)abort

end[m,n]=size(xd);f=zeros(m,n);p=zeros(m,n);q=zeros(m,n);w=ones(1,nx);for i=1:nx,for j=1:nx,if i~=j,

w(i)=w(i)*(x(i)-x(j)),end

endendfor i=1:m,for j=1:n,u=find(x==xd(i,j));if ~isempty(u),

f(i,j)=y(u);else

for k=1:nx,p(i,j)=p(i,j)+y(k)/(xd(i,j)-x(k))/w(k);q(i,j)=q(i,j)+1/(xd(i,j)-x(k))/w(k);

44 CAPITOLUL 4. REZOLVAREA PROBLEMELOR DE INTERPOLARE

endf(i,j)=p(i,j)/q(i,j);

endend

endendfunction

Semnificatiile parametrilor formali si a rezultatului sunt:

• xd este o matrice de numere. În fiecare element al matricei xd se cal-culeaza valoarea polinomului de interpolare Lagrange.

• x = (xi )1≤i≤n , sirul nodurilor de interpolare;

• y = (xi )1≤i≤n , sirul valorilor interpolate;

• f este o matrice de aceleasi dimensiuni ca xd si are ca elemente valorilepolinomului de interpolare Lagrange calculate în elementele corespunza-toare ale matricei xd .

Programul de mai sus, pentru calculul valorii polinomului de interpolare La-grange, foloseste formula baricentrica.

Exemplul 4.1 Sa se calculeze L(Pn ; x0, . . . , xn ; f )(z) pentru

f (x) = x2

xi = i , i ∈ {0,1, . . . ,5}z = 0.5,3,5,10

Rezolvarea este:

deff(’y=fct(x)’,[’y=x^2’])exec(’c:\lucru\scilab\lagrange.sci’,-1)x=0:5;y=fct(x);z=[0.5,3.5,10];f=lagrange(z,x,y)! 0.25 12.25 100 !

4.2. INTERPOLARE CU FUNCTII SPLINE CUBICE 45

4.2 Interpolare cu functii spline cubice

Daca F =S3, multimea functiilor spline cubice atunci pentru rezolvarea prob-lemei de interpolare utilizam functiile Scilab

1. d=splin(x,y);saud=splin(x,y,[,spline_type[,der]])1

2. [f0 [,f1 [,f2 [,f3]]]]=interp(xd,x,y,d).

Semnificatia parametrilor este

• x = (xi )1≤i≤n , sirul nodurilor de interpolare;

• y = (xi )1≤i≤n , sirul valorilor interpolate;

• spline_type este un string care precizeaza conditiile la limita utilizate sipoate fi:

– not_a_knot - alegerea implicita: Daca x1 < x2 < . . . < xn−1 < xn atunciconditiile la limita sunt

s(3)(x2 −0) = s(3)(x2 +0)

s(3)(xn−1 −0) = s(3)(xn−1 +0)

– clamped:

s′(x1) = der1

s′(xn) = der2

– natural:

s′′(x1) = 0

s′′(xn) = 0

– periodic: Daca y1 = yn , conditiile la limita sunt

s′(x1) = s′(xn)

s′′(x1) = s′′(xn)

1Parantezele patrate nu fac parte din sintaxa. Ele arata caracterul optional al elementelorcuprinse între ele.

46 CAPITOLUL 4. REZOLVAREA PROBLEMELOR DE INTERPOLARE

• d parametri functiei spline cubice de interpolare;

• xd este o matrice de numere. În fiecare element al matricei xd se cal-culeaza valoarea functiei spline cubice de interpolare. Aceste elemente tre-buie sa fie cuprinse în intervalul determinat de nodurile din x.

• f 0, f 1, f 2, f 3 sunt matrice de aceleasi dimensiuni ca xd si au ca elementevalorile functiei spline cubice de interpolare si respectiv a derivatelor deordinul 1, 2 si 3, calculate în elementele corespunzatoare ale matricei xd .

Exemplul 4.2 Sa se calculeze valorile functiei spline cubice de interpolare si alederivatelor sale de ordin 1, 2, 3 pentru datele de interpolare

f (x) = x3

xi = i , i ∈ {0,1, . . . ,5}z = 0.5,3,5,10

Rezolvarea consta din

deff(’y=f(x)’,[’y=x^3’])x=0:5;y=f(x);z=[0.5,3.5,10];d=splin(x,y);[s,s1,s2,s3]=interp(z,x,y,d)s3=! 6. !! 6. !! 0. !s2=! 3. !! 21. !! 0. !s1=! 0.75 !! 36.75 !! 0. !s=! .125 42.875 0 !

Capitolul 5

Derivare numerica

Cap. 4 Cap. 6

5.1 Derivarea functiilor de o variabila reala

Pentru calculul derivatei f ′(x0) unde f : I → R este o functie derivabila, I uninterval iar x0 ∈ Int(I ), Scilab ofera functia : g = numdiff( f , x0[,h]).

Exemplul 5.1 Sa se calculeze f ′(1) unde f (x) = x3.

Rezolvarea este:

deff(’y=f(x)’,’y=x^3’)numdiff(f,1)ans =

3.0000001

5.2 Cazul functiilor de mai multe variabile

Daca f :Rn →Rm atunci jacobianul si hessianul se obtin cu functia Scilab

47

48 CAPITOLUL 5. DERIVARE NUMERICA

[J [, H ]] = derivative( f , x[,h,or der ])

unde

• x - punctul în care se calculeaza jacobianul J si hessianul H ;

• h ∈R pasul utilizat în formula de derivare numerica;

• or der ∈ {1,2,4} ordinul formulei de derivare numerica (valoarea implicitaeste2).

Exemplul 5.2 Sa se calculeze jacobianul si hessianul functiei f (x, y) =(

x2 yx3 + y

)în (1,2).

Jacobianul si hessianul functiei f sunt

f ′(x, y) =(

2x y x2

3x2 1

)

f ′′(x, y) =(

2y 2x 2x 06x 0 0 0

)Astfel rezultatele exacte sunt

f ′(1,2) =(

4 13 1

)

f ′′(1,2) =(

4 2 2 06 0 0 0

)Rezolvarea Scilab este

deff(’q=fct(p)’,[’x=p(1)’,’y=p(2)’,’q(1)=x.^2.*y’,’q(2)=x.^3+y’])p=[1;2][J,H]=derivative(fct,p)H =

4. 2. 2. 0.6. 0. 0. 0.

J =

4. 1.3. 1.

Capitolul 6

Construirea unei functiide aproximare prin metodacelor mai mici patrate

Cap. 5 Cap. 7

Cazul liniar. Determinarea unui polinom de aproximare construit prin metodacelor mai mici patrate de grad m pentru datele (xi , yi )1≤i≤n (m << n) se obtinecu ajutorul functiei

coef =lq(m,x,y)

unde

• coe f – sunt coeficientii polinomului de aproximare;

• m – gradul polinomului de aproximare;

• x, y – doi vectori linie cu absisele si respectiv, cu ordonatele datelor proble-mei de aproximare.

Textul sursa al functiei lq este

49

50 CAPITOLUL 6. METODA CELOR MAI MICI PATRATE

function coef=lq(m,x,y)[mx,nx]=size(x);[my,ny]=size(y);if((nx~=ny)|(mx~=1)|(my~=1)),disp("data dimension error")abort

endu=zeros(m+1,nx);for i=1:m+1,for j=1:nx,u(i,j)=x(j)^(i-1);

endendcoef=(u*u’)^(-1)*u*y’;

endfunction

Exemplul 6.1 Sa se calculeze polinoamele de aproximare de grad unu si doi, con-stituite prin metoda celor mai mici patrate, pentru datele (xi , yi )0≤i≤20 unde xi =−2+0.2i , yi = f (xi ), f (x) = |x|. Sa se reprezinte grafic functiile astfel obtinute.

x=-2:0.2:2;y=abs(x);c1=lq(1,x,y)exec(’e:\scilab\lq.sci’,-1)c1=

1.0476191.110D-16

c2=lq(2,x,y)c2=

0.38836221.110D-160.4494933

deff(’y=p1(x)’,[’y=c1(1)+c1(2)*x’])deff(’y=p2(x)’,[’y=c2(1)+c2(2)*x+c2(3)*x.*x’])y1=p1(x);y2=p2(x);xx=[x’,x’,x’];yy=[y’,y1’,y2’];plot2d(xx,yy,[1,2,3],’121’,’abs@p1@p2’)

51

Astfel, polinoamele de aproximare de gradul întâi si doi sunt

p1(x) = 1.047619

si respectiv

p2(x) = 0.3883622+0.4494933x2

Graficele celor trei functii sunt date Fig. 6.1.

Figure 6.1: Aproximarea functiei x2 prin polinom de grad 1 si 2.

Cazul neliniar.Pentru determinarea functiei de aproximare y =ϕ(t , x1, . . . , xn) care minimizeaza

expresia

Φ(x1, . . . , xn) =m∑

i=1[ϕ(ti , x1, . . . , xn)− yi ]2 (6.1)

cu metoda Gauss-Newton se utilizeaza functia Scilab leastsq:

52 CAPITOLUL 6. METODA CELOR MAI MICI PATRATE

[fopt [,xopt [,gopt ]]]=leqstsq(fct,x0)[fopt [,xopt [,gopt ]]]=leqstsq(fct,dfct,x0)

unde

• x0 este aproximatia initiala a parametrilor;

• f ct defineste termenii din suma (6.1);

• d f ct este jacobianul functiei f ct ;

• f opt valoarea functieiΦ calculata în xopt ;

• xopt valoarea optima gasita a parametrilor x;

• g opt gradientul functieiΦ calculata în xopt .

Exemplul 6.2 Sa se calculeze functia de aproximare de forma y = aebt în cazuldatelor

t=0:5y=2*exp(-t)

Definim functiile Scilab

function y=f1(x,t)y=x(1)*exp(x(2)*t);

endfunction

Necunoscutele a,b devin componentele vectorului x (a = x1,b = x2)

function u=fct(x,t,y)exec("e:\scilab\f1.sce",-1);u=f1(x,t)-y;

endfunction

Rezolvarea este

exec(’e:\scilab\fct.sce’,-1)x=[2.5,-0.5];[fopt,xopt,gopt]=leastsq(list(fct,t’,y’),x)gopt =

53

0. 0.xopt =

2. - 1.fopt =

0.

Daca se fixeaza gradientul functiei f ct : d f ct = (∂ f ct∂a , ∂ f ct

∂b ) = (∂ f ct∂x1

, ∂ f ct∂x2

) = (ebt , atebt )în functia

function u=dfct(x,t,y)s=exp(x(2)*t);u=[s,x(1).*t.*s];

endfunction

atunci apelarea va fi

[fopt,xopt,gopt]=leastsq(list(fct,t’,y’),dfct,x)

Metoda Levenberg-Marquardt este implementata de functia scilab lsqrsolve:[xopt [,v]]=lsqrsolve(x0,fct,m)[xopt [,v]]=lsqrsolve(x0,fct,m,dcft)

unde

• x0 este aproximatia initiala a parametrilor;

• f ct defineste termenii din suma (6.1);

• m reprezinta numarul termenilor din suma (6.1);

• d f ct este jacobianul functiei f ct ;

• xopt valoarea optima gasita a parametrilor x;

• v valoarea fiecarui termen din suma (6.1) calculata în xopt .

Rezolvarea exemplului anterior cu metoda Levenberg-Marquardt consta dindefinirea functiilor f1.sce, data.sce si fctlm.sce:

function [t,y]=data(m)t=1:m;y=2*exp(-t);

endfunction

54 CAPITOLUL 6. METODA CELOR MAI MICI PATRATE

function y=fctlm(x,m)exec("e:\scilab\data.sce",-1);exec("e:\scilab\f1.sce",-1);[t,y]=data(m);y=f1(x,t)-y;

endfunction

si

x=[2.5,-0.5][xopt,v]=lsqrsolve(x,fctlm,6)v =

1.0D-16 *

1.1102230.55511150.27755580.06938890.03469450.0086736

xopt =

2. - 1.

Capitolul 7

Integrare numerica

Cap. 6 Cap. 8

7.1 Integrarea numerica a functiilorde o variabila reala

Pentru calculul integralei

I =∫ b

af (x)dx

unde f : [a,b] → R este o functie continua, Scilab ofera mai multe programe:

• [x]=integrate(exp, var, a, b [, ea [,er ] ] )unde:

– x valuarea calculata a integralei;

– exp este expresia functiei de integrat, dat ca un sir de caractere;

– var este variabila de integrare dat ca string;

– a extremitatea stânga a intervalului de integrare;

– b extremitatea dreapta a intervalului de integrare;

55

56 CAPITOLUL 7. INTEGRARE NUMERICA

– ea, er reprezinta o eroare absoluta si o eroare relativa. Precizând acestiparametri, regula de oprire a programului este |x−I | ≤ max{ea,er ·|I |}.

Exemplul 7.1 Sa se calculeze integralele:

1.∫ 1

016∗x15dx

2.∫ π

2

0

sin(x)

xdx

Rezolvarile sunt:1.

I=integrate(’16*x.^15’,’x’,0,1)I=

1.

2.

I=integrate(’if x==0 then 1; else sin(x)/x; end’,’x’,0,%pi/2)I=

1.3707622

• [x, er r ]= intg(a, b, f [,ea [, er ] ] )unde

– x valuarea calculata a integralei;

– er r valoarea estimata a erorii absolute;

– a extremitatea stânga a intervalului de integrare;

– b extremitatea dreapta a intervalului de integrare;

– f identificatorul functiei Scilab de integrat;

– ea, er reprezinta o eroare absoluta si o eroare relativa. Precizând acestiparametri, regula de oprire a programului este |x−I | ≤ max{ea,er ·|I |}.

Utilizând intg, integralele exemplului anterior se calculeaza astfel:

1.

7.2. CALCULUL NUMERIC AL INTEGRALELOR DUBLE 57

deff(’y=f(x)’,’y=16*x.^15’)[x,err]=intg(a,b,f)err=

1.110 E-14x=

1.

2.

deff(’y=g(x)’,’if x==0 then y=1; else y=sin(x)/x; end’)[x,err]=intg(0,%pi/2,g)err=

1.522 E-14x=

1.3707622

Daca f (x, p1, p2, . . .) este o functie Scilab având pe prima pozitie variabila deintegrare atunci

intg(a,b,list( f , p1, p2, . . .))

calculeaza integrala ∫ b

af (x, p1, p2, . . .)dx

7.2 Calculul numeric al integralelor duble

Pentru domeniul D definit prin

D = {(x, y) : a ≤ x ≤ b, f i n f (x) ≤ y ≤ f sup(x)}

integrala ∫ ∫D

f ct (x, y)dxdy

este calculata de programul [y,er ]=integr(cale, tol ). Semnificatia parametrilorformali este:

• cale – calea la catalogul care contine subprogramene (functiile) necesareprogramului: init, tab, integ2, prodscal, fct, datas, finf, fsup;

• tol toleranta utilizata în regula de oprire;

58 CAPITOLUL 7. INTEGRARE NUMERICA

• y – valoarea calculata a integralei duble;

• er – indicatorul de raspuns:

– 0 – integrala s-a calculat cu succes;

– 1 – nu s-a îndeplinit conditia de convergenta în 10 iteratii.

Textele sursa ale programelor sunt

function [y,er]=integr(cale,tol)exec(cale+’\datas.sci’,-1)exec(cale+’\init.sci’,-1)exec(cale+’\finf.sci’,-1)exec(cale+’\fsup.sci’,-1)exec(cale+’\fct.sci’,-1)exec(cale+’\tab.sci’,-1)exec(cale+’\prodscal.sci’,-1)exec(cale+’\integ2.sci’,-1)n=3;u=init(n);old=integ2(u);nmi=10;cont=0;ni=0;while cont==0 doni=ni+1;v=tab(u);new=integ2(v);nrm=abs(new-old);old=new;u=v;if nrm<tol,cont=1;er=0;

elseer=1;if ni==nmi,cont=1;,end,

endendy=new;

7.2. CALCULUL NUMERIC AL INTEGRALELOR DUBLE 59

endfunction

function u=init(n)[a,b]=datas();hx=(b-a)/n;u=zeros(n+1,n+1);for j=1:n+1,x=a+(j-1)*hx;fi=finf(x);fs=fsup(x);hy=(fs-fi)/n;for i=1:n+1,y=fi+(i-1)*hy;u(i,j)=fct(x,y);

endend

endfunction

function v=tab(u)[a,b]=datas()[m,n]=size(u);hx=(b-a)/(n-1);for j=1:n,for i=1:m,

v(2*i-1,2*j-1)=u(i,j);endx=a+(j-1)*hx;fi=finf(x);fs=fsup(x);hy=(fs-fi)/(m-1);for i=1:m-1,

y=fi+hy*(i-0.5);v(2*i,2*j-1)=fct(x,y);

endendfor j=1:m-1,x=a+(j-0.5)*hx;fi=finf(x);fs=fsup(x);

60 CAPITOLUL 7. INTEGRARE NUMERICA

hy=(fs-fi)/(m-1)/2;for i=1:2*n-1,

y=fi+hy*(i-1);v(i,2*j)=fct(x,y);

endend

endfunction

function z=integ2(u)[a,b]=datas()[m,n]=size(u);hx=(b-a)/(n-1);w=zeros(1,n);c=ones(1,n);if n==3,c(2)=4;

elsen0=(n-1)/2;for j=1:n0,c(2*j)=4;

endfor j=1:n0-1,c(2*j+1)=2;

endendfor j=1:n,x=a+(j-1)*hx;fi=finf(x);fs=fsup(x);hy=(fs-fi)/(m-1);w(j)=prodscal(c,u(:,j))*hy/3;

endz=prodscal(c,w)*hx/3;

endfunction

function e=prodscal(x,y)[m,n]=size(x);e=0;for i=1:n,

7.2. CALCULUL NUMERIC AL INTEGRALELOR DUBLE 61

e=e+x(i)*y(i);,end

endfunction

Utilizatorul trebuie sa precizeze datele problemei în subprogramele datas,fct, finf, fsup.

Exemplul 7.2 Sa se calculeze∫∫

D x ydxdy unde domeniul D este delimitat de curbeley = x2 si y =p

x.

În acest caz se definesc functiile:

function [a,b]=datas()a=0;b=1;

endfunction

function z=fct(x,y);z=x*y;

endfunction

function y=finf(x)y=x.*x;

endfunction

function y=fsup(x)y=sqrt(x);

endfunction

Rezolvarea finala este

exec(’c:\lucru\scilab\integr.sci’,-1)[y,er]=integr(’c:\lucru\scilab’,1.e-6)er=

0.y=

.0833333

Part II

MathCAD

62

Capitolul 8

Prezentare generala

Cap. 7 Cap. 9

MathCAD este un produs informatic comercial destinat rezolvarii problemelorde calcul numeric, cu posibilitatea documentarii si a reprezentarii grafice planesi spatiale.

MathCAD permite atât programare functionala, adica prin compunerea functi-ilor, cât si programare procedurala, fiind înzestrat cu o paleta de programare efi-cienta.

MathCAD ofera posibilitatea de calcul simbolic, înglobând o biblioteca Maplede functii simbolice.

MathCAD utilizeaza notatia matematica obisnuita.

Produsul are un editor propriu. Simbolurile operatorilor si ale functiilor sepot introduce fie prin intermediul paletelor, fie prin codurile atasate. Tot ceea cese introduce conduce la formarea unui document MathCAD.

Într-un document MathCAD orice definitie, ecuatie, text-comentariu sau reprezentaregrafica ocupa un spatiu numit regiune. Regiunile sunt disjuncte doua câte doua.Procesul de calcul consta în evaluarea regiunilor Si are loc de sus în jos, jar penivel orizontal de la stânga spre dreapta. Regiunile pot fi vizualizate prin clic pebutonul View/Region, care functioneaza în regim "aprins/stins".

Un calcul se poate opri fortat prin butonul Esc.

63

64 CAPITOLUL 8. PREZENTARE GENERALA

Figure 8.1: Ecran MathCAD

8.1 Efectuarea calculelor numerice

8.1.1 Operatori MathCAD

Operatori de definire si evaluare

1. Operatorul de atribuire / definire :=

Se obtine tastând : sau prin alegerea din panoul Evaluation Toolbar.

Sintaxa este:

variabila := expresiefunctie(lista de variabile) := expresie

Exemplul 8.1a := 1f (x) := 1−x2

2. Operatorul de afisare / calcul =

Sintaxa este:

variabila =functie(variabile) =expresie =

8.1. EFECTUAREA CALCULELOR NUMERICE 65

Exemplul 8.2x := 3 x = 3h(x) := 5x3 −2 h(0) =−27+3 · x = 14

3. Operatorul de definire globala ≡Se obtine tastând Shift+˜sau prin panoul Evaluation Toolbar. Sintaxa este:

parametrul MathCAD ≡ expresie

Operatorul de definire globala permite fixarea sau modificarea unor parametriiMathCAD la nivel global, adica având domeniul de valabilitate întregul doc-ument.

8.1.2 Identificatori MathCAD

Identificatorii MathCAD, adica numele dat variabilelor, constantelor si functi-ilor, pot contine oricare din urmatoarele caractere:

• litere latine mari si mici; se face distinctie între literele mari si mici;

• cifre de la 0 la 9; un identificator nu poate începe cu o cifra;

• litere grecesti : α, β, . . . , ω. Aceste litere se obtin din panoul Greek;

• caractere speciale: _ (linie de subliniere),% (procent), ∞ (simbolul infinit),‘ (a nu se confunda cu apostrogul ’), . (punctul – simbolurile care urmeazasunt interpretate de MathCAD ca indice literal).

Exemplul 8.3a1_2 α _i nd %p_pr esi unea ∞const a.bcd a‘b

8.1.3 Constante MathCAD

MathCAD recunoaste câteva constante uzuale: π, e - baza logaritmului natu-ral, ∞ - infinit, i (sau j ) - unitatea imaginara. Pe lânga aceste constante mai existasi o serie de constante sistem predefinite (globale):

• TOL a carei valoare implicita este 0.001 si care reprezinta toleranta utilizataîn testele de convergenta.

66 CAPITOLUL 8. PREZENTARE GENERALA

• CTOL a carei valoare implicita este 0.001 si care reprezinta toleranta deconstrângere si care controleaza restrictiile din cadrul unui bloc de rezolvarea sistemelor de ecuatii.

• ORIGIN cu valoare implicita egala cu zero reprezinta valoarea indiceluiprimului element al unui vector sau al unei matrice.

• CWD retine într-un sir de caractere calea directorului curent.

8.1.4 Tipuri de date MathCAD

MathCAD utilizeaza variabile având urmatoarele tipuri de date:

1. Variabila numerica reala sau complexa

Pentru a defini o variabila:

• se tasteaza numele variabilei;

• se tasteaza operatorul de definitie;

• se introduce expresia care defineste variabila.

Exemplul 8.4 Pentru a calcula valoarea expresiei y = x2−3x+2 în punctul0.5 se defineste

x := 0.5 y := x2 −3 · x +2

Rezultatul se obtine tastând y, =.

y = 0.75

O constanta numerica întreaga se poate defini în baza 10, 8 sau 16. Dacareprezentarea se face în baza 8, numarul va fi urmat de de litera o sau O(deexemplu 15o), iar în cazul bazei hexazecimale numarul va fi urmat de literah sau H(de exemplu A1Eh).

Pentru a defini o constanta complexa se utilizeaza forma algebrica a +bi .În locul lui i se poate folosi ca unitate imaginara si j. Pentru a defini unitateaimaginara se tasteaza 1i sau 1j.

Operatorii algebrici uzuali sunt

8.1. EFECTUAREA CALCULELOR NUMERICE 67

Operator algebric Se obtine tastând

+ (adunare) +− (scadere) −· (înmultire) ∗/ (împartire) /

ˆ(ridicare la putere) ˆ

2. Variabila domeniu : progresie aritmetica

O variabila domeniu este o progresie aritmetica. Definirea unei progresiiaritmetice se face prin:

variabila_domeniu :=val_ initiala, val_urmatoare .. margine

Elementele folosite în definitia de mai sus, respectiv valoarea initiala, val-oarea urmatoare si margine a pot fi constante, variabile sau expresii. Ratiaprogresiei este egala cu

val_urmatoare - val_initiala.

Pentru a obtine .. se tasteaza ; .

Exemplul 8.5 x := 0,0.9..4 defineste progresia aritmetica

x =

00.91.82.73.6

Daca în sintaxa de definire a unei variabile de tip domeniu lipsesc virgulasi val_urmatoare, ratia progresiei aritmetice este

sgn(val_finala-val_initiala).

Exemplul 8.6 Sirurile i := 0.5..3 si j := 5..2.5 definesc urmatoarele progresi-ile aritmetice

68 CAPITOLUL 8. PREZENTARE GENERALA

i = j =0.51.52.5

543

3. Variabila indice

O variabila domeniu ale carei valori sunt numere naturale consecutive senumeste variabila indice.

Exemplul 8.7 Pentru a defini un indice k ale carui valori sa fie succesiv 2,3, 4, 5, se editeaza k : 2 ; 5 rezultând k := 2..5

4. Sir

Prin intermediul unei variabile indice se poate defini un sir oarecare prinsintaxa:

variabila_sirvar i abi l a_i ndi ce := expresie.

Pentru a scrie indicele, dupa numele variabilei de tip sir se tasteaza [ .

Exemplul 8.8 Pentru variabila k definita în exemplul anterior definim sirulxk = k2 astfel:

xk := k2

Vizualizam rezultatul prin

x =

0049

1625

sau

xk =49

1625

Sirul astfel obtinut contine pe primele doua pozitii valoarea 0 deoarece re-spectivele pozitii nu au fost definite.

Functii uzuale aplicabile unui sir a = (ai )i∈I

8.1. EFECTUAREA CALCULELOR NUMERICE 69

Apelare Semnificatie

length(a) Numarul elementelor siruluilast(a) Indicele ultimului elementmax(a) Cel mai mare element al siruluimin(a) Cel mai mic element al sirului|a| Norma euclidiana a sirului

5. Tablouri : vectori si matrice

MathCAD permite definirea matricelor si are prevazute operatiile uzualede calcul matriceal. Vectorii de dimensiune n se considera matrice cu nlinii si o coloana.

Pentru a introduce o matrice în documentul curent se selecteaza din me-niul Insert/Matrix sau prin paleta Matrix. Ca urmare, pe ecran apareo fereastra de dialog în care se completeaza numarul de linii, respectiv decoloane corespunzatoare matricei ce se doreste a fi inserata. Dupa pre-cizarea dimensiunilor matricei, toate pozitiile marcate se vor completa cuexpresii sau numere, trecerea de la o pozitie la alta facându-se prin apasareatastei Tab. Aceasta metoda de definire a unei matrice este o metoda explic-ita. Vorbim de o metoda implicita de definire a unei matrice în cazul în careexista o formula de legatura între indici si elementele din matrice.

Într-un tablou valoarea initiala a indicilor este 0. Daca dorim ca valoareainitiala a indicilor sa fie 1, trebuie sa atribuim parametrului ORIGIN val-oarea 1. Aceasta se obtine prin definitia globala ORIG I N ≡ 1.

Referirea unui element al unui tablou se face indicând numele tabloului(variabila) urmat de indicii elementului separati prin virgula. Trecerea laindicarea indicelor se obtine prin tasta [.

Exemplul 8.9

Daca

i := 0..3 j := 0..3 Xi , j := i 2 + j

2atunci se obtine

X =

0 0.5 1 1.51 1.5 2 2.54 4.5 5 5.59 9.5 10 10.5

70 CAPITOLUL 8. PREZENTARE GENERALA

Exemplul 8.10

Daca

A :=(

1 32 4

)atunci

A0,0 = 1 A0,1 = 3 A1,0 = 2 A1,1 = 4

Pentru a defini siruri de vectori se utilizeaza indici superiori. Un indicesuperior se obtine tastând Ctrl+6 sau prin paleta Matrix M<T>.

Exemplul 8.11

Fie

u<0> =(

12

)A =

(1 02 −1

)Pentru i := 0..4 calculam

u<i+1> := A ·u<i>

obtinând

u<4> =(

12

)u<5> =

(10

)iar

u =(

1 1 1 1 1 12 0 2 0 2 0

)u1,4 = 2 u0,4 = 1

Daca M este o matrice, expresia M<i> desemneaza coloana i a matricei M .

Operatori matriceali

Operator algebric Se obtine tastând

+ (adunare) +− (scadere) −· (înmultire) ∗

ˆ(ridicare la putere) ˆ

8.1. EFECTUAREA CALCULELOR NUMERICE 71

Functii uzuale aplicabile (operatori aplicabili) unei matrice A = (ai , j )i∈I , j∈J

Apelare Semnificatie

rows(A) Numarul liniilor matriceicols(A) Numarul coloanelor matriceitr(A) urma matriceiAT transpusa matricei|A| determinantul matriceiA−1 inversa matriceirank(A) rangul matriceinorm1(A) norma Minkovski, max j

∑i |ai , j |

norm2(A) norma euclidiana,√

maxeigenvals(aT ·a)

norme(A) norma Frobenius,√∑

i , j a2i , j

normi(A) norma Cebîsev, maxi∑

j |ai , j |

6. Functii

MathCAD poseda o bogata familie de functii predefinite si ofera posibili-tatea definirii de functii noi conform sintaxei

numeFunctie(ar g1, ar g2, . . .) := expresie

Functii numerice uzuale aplicabile aplicabile unui numar real sau complexx

72 CAPITOLUL 8. PREZENTARE GENERALA

Apelare Semnificatie

sin(x) sin xcos(x) cos xtan(x) tgxcot(x) ctgxasin(x) arcsin(x)acos(x) arccos(x)atan(x) arctg(x)sinh(x) shxcosh(x) chxtanh(x) thxasinh(x) arcsh(x)acosh(x) arcch(x)atanh(x) arcth(x)exp(x) ex

log(x) lg(x)ln(x) ln(x)

8.1.5 Vectorizare

Sa presupunem ca o functie f (x, y) trebuie aplicata succesiv unui sistem devariabile (xi , yi )1≤i≤n , obtinând zi = f (xi , yi ), i ∈ {1,2, . . . ,n}.. MathCAD oferaposibilitatea efectuarii acestor calcule prin vectorizare, un procedeu care estemultmai rapid decât prin folosirea indecsilor. Sintaxa utilizata este

x :=

x1...

xn

y :=

y1...

yn

z =−−−−→f (x, y)

Operatorul de vectorizare se obtine tastând Crtl + - fie din paleta Matrixcu cursorul MathCAD plasat pe relatia de calcul.

Exemplul 8.12 Rezolvarea ecuatiilor de gradul doi având coeficientii

a :=

1111

b :=

3210

c :=

2114

8.1. EFECTUAREA CALCULELOR NUMERICE 73

Formulele

x :=−−−−−−−−−−−−−−−→−b +

pb2 −4 ·a · c

2 ·ay :=

−−−−−−−−−−−−−−−→−b −

pb2 −4 ·a · c

2 ·a

produc rezultatele

x =

−1−1

−0.5+0.866i2i

y =

−2−1

−0.5−0.866i−2i

8.1.6 Unitati de masura

Variabilele MathCAD pot reprezenta marimi fizice, în care caz valoarea nu-merica este urmata de o unitate de masura. MathCAD dispune de un set completde unitati de masura predefinite. Pentru a asocia unui numar sau unei expresiio unitate de masura se foloseste semnul de înmultire dupa numar sau expresieapoi a se scrie explicit unitatea dorita. Sunt recunoscute majoritatea unitatilorprin forma lor abreviata. Implicit MathCAD foloseste unitatile din Sistemul In-ternational (SI). Acest lucru înseamna ca la folosirea semnului egal un rezultat cecontine si unitati de masura va fi afisat în termenii unitatilor de baza sau derivateale SI. Pentru orice expresie care implica unitati de masura MathCAD efectueazaverificari de consistenta. Daca se încearca efectuarea sumei sau diferentei întrevalori incompatibile din punct de vedere al unitatilor de masura se va afisa unmesaj de eroare.

De asemenea pe lânga (SI) sunt disponibile si alte sisteme de unitati de ma-sura: CGS, U.S. si MKS. Fiecare dintre aceste standarde constituie un tabel cecontine unitatile de baza specifice si unitatile ce masoara:

unghiuri si lungimi masa si timp arii si volumeviteze si acceleratii forte, energii si puteri presiuni si vâscozitatielectricitate frecventa temperatura

Alegerea / schimbarea sistemulul de unitati de masura se face prin meniul Tools/Worksheetoptions.../Unit system.

Exemplul 8.13 Sa se calculeze marimea fortei ce actioneaza asupra unui corp demasa 5 kg si careia îi imprima o acceleratie de 2 m

s2 .

masa := 5 ·kg acc := 2 · m

s2F := masa ·acc

F = 10N

74 CAPITOLUL 8. PREZENTARE GENERALA

Transformarea unitatilor

Pentru transformarea unei marimi dintr-un sistem în altul este suficienta cunoastereanotatiilor unitatilor respective în cele doua sisteme. Transformarea se face prin:

1. tastarea marimii si a unitatii de masura corespunzatoare;

2. a operatorul de afisare / calcul (=) ;

3. în pozitia marcata se introduce noua unitatea de masura;

4. clic în afara regiunii de lucru.

1 ·m = 1×103mm

Definirea altor unitati de masura

Se pot defini unitati de masura noi prin

1. se tasteaza numele noii unitati de masura;

2. operatorul de atribuire (:=);

3. definitia noii unitati de masura.

Exemplul 8.14

g := 1

1000·kg 3 ·kg = 3×103g

mi n := 60 · s h := 60 ·mi n 1 ·h = 3.6×103s

8.2 Reprezentari grafice

Prin intermediul paletei Graph sau prin meniul Insert/Graph, se pot realizaurmatoarele reprezentari grafice

• X-Y Plot – Reprezentare grafica 2D în coordonate carteziene. Comanda sepoate da si prin combinatia de taste Shift+2 (@).

• Polar Plot – Reprezentare grafica 2D în coordonate polare. Comanda sepoate da si prin combinatia de taste Ctrl+7.

8.2. REPREZENTARI GRAFICE 75

• Surface plot – Reprezentare grafica 3D în coordonate carteziene. Comandase poate da si prin combinatia de taste Ctrl+2.

• Contur Plot – Reprezentare prin linii de nivel Comanda se poate da si princombinatia de taste Ctrl+5.

• 3D Bar Plot

• 3D Scatter Plot

• Vector Field Plot

Reprezentarea grafica 2D încoordonate carteziane

Sa presupunem ca dorim sa reprezentam functia x → f (x). Dupa definireafunctiei, în urma comenzii de realizare a reprezentarii grafice apare un cadrucu doua pozitii marcate, care se completeza cu x (pe axa orizontala) si respectivf (x) (pe axa verticala). În cadru apar, corespunzator fiecarei axe, alte doua poz-itii marcate, pentru fixarea intervalelor. Completarea acestor pozitii marcate esteoptionala. Un clic în afara cadrului sau Enter declanseaza realizarea reprezen-tarii grafice.

x

f (x)

MathCAD permite reprezentarea functiilor cunoscute prin valori discrete:(xi , yi )1≤i≤n , yi = f (xi ),∀i . În acest caz cele doua pozitii marcate initiale se com-pleteaza cu xi si respectiv yi .

Pentru a obtine în acelasi cadru reprezentarea grafica pentru mai multe functii,se introduc variabilele si functiile separate prin virgula.

x, x, y

f (x),g (x),h(y)

76 CAPITOLUL 8. PREZENTARE GENERALA

Reprezentarea grafica 2D încoordonate polare

Daca curba are ecuatia polara r = r (t ) atunci în urma comenzii de realizare areprezentarii grafice apare un cadru cu doua pozitii marcate, care se completezacu t si respectiv r (t ). În cadru apar alte doua pozitii marcate, pentru fixarea in-tervalului în care variaza t .. Completarea acestor pozitii marcate este optionala.Un clic în afara cadrului sau Enter declanseaza realizarea reprezentarii grafice.

&%'$

t&%'$

r (t )

Formatarea graficelor 2D

MathCAD realizeaza reprezentarile grafice cu o serie de parametri impliciti.Aceste setari pot fi schimbate de utilizator si de asemenea se pot adauga titluri sietichete. Pentru a formata o zona grafica se executa dublu clic pe zona respectivasau se selecteaza zona grafica si apoi din meniul Format/Graph/X-Y Plot sauPolar Plot. În urma actiunii executate se deschide o fereastra de dialog prinintermediul careia se poate modifica

• Natura axelor de coordonate;

• Modul de trasarea curbei (continuu, discret prin simboluri, etc.);

• Culoarea de desenare.

8.3. CREAREA UNEI ANIMATII 77

Reprezentare grafica 3D încoordonate carteziene

Reprezentare grafica prin linii de nivel

Reprezentare grafica 3D Bar

Reprezentare grafica 3D Scatter

Reprezentare grafica Vector Field

8.3 Crearea unei animatii

Prin intermediul variabilei predefinite FRAME pot fi create si apoi rulate scurteclipuri animate. Orice obiect MathCAD care poate fi facut sa depinda de vari-abila FRAME poate fi animat. Sunt incluse aici nu numai punctele din graficeci si rezultatele numerice. Clipurile animate pot fi rulate la diverse viteze si deasemenea pot fi salvate pentru a fi apoi rulate în cadrul altor aplicatii.

Pentru realizarea unei animatii în MathCAD trebuie urmati pasii:

1. Se defineste o expresie care depinde de valoarea variabilei FRAME;

2. Se selecteaza optiunea Record din meniul Tools/Animation;

3. Dupa deschiderea casutei de dialog se selecteaza din foaia de lucru regiuneace se doreste sa apara în animatie;

4. În cadrul casutei de dialog se fixeaza limitele inferioara, respectiv supe-rioara a variabilei FRAME, precum si viteza de rulare (numarul de cadre pesecunda);

5. Se porneste animatia prin apasarea butonului Animate.

O animatie creata poate fi salvata ca fisier .avi si poate fi vizualizat si independentde MathCAD. Pentru aceasta se selecteaza butonul Save as din cadrul casutei dedialog.

Pentru a rula în MathCAD un fisier avi existent din meniul Tools/Animationse alege optiunea Playback.

Exemplul 8.15 În intervalul [−1,1], sa se transforme graficul functiei g (x) = x înf (x) = x2 prin efectul "morphing".

78 CAPITOLUL 8. PREZENTARE GENERALA

Astfel definim

f (x) := x2 g (x) := x M axF R AME := 60

h(x) := F R AME

M axF R AME· f (x)+ (1− F R AME

M axF R AME) · g (x)

a :=−1 b := 1

si construim graficul functiei h(x)(F R AME = 0!). Efectuam operatiile mention-ate mai sus si obtinem rezultatele din Fig. 8.2.

8.4 Editare de text

Într-un document MathCAD pot fi incluse texte si comentarii asupra calculelorce se efectueaza. O regiune text se obtine tastând " (ghilimele). În masura în carese adauga text, regiunea se extinde la dreapta. Tastând Enter se trece pe liniaurmatoare. Regiunea text se paraseste prin plasarea cursorului în afara ei.

Meniul Format ofera facilitati de formatare a textului.

8.5 Salvarea / restaurarea datelor numericeComunicatii între medii de programare

Date numerice sub forma unei matrice se pot salva si / sau încaca în / dinfisiere ASCII asigurând astfel un canal de comunicatie cu un alt mediu de pro-gramare.

În acest sens sunt definite functiile

• READPRN(fisier) citeste date structurate dintr-un fisier. Functia returneazao matrice, fiecare linie din fisier devine o linie în matrice. Numarul deelemente de pe fiecare linie trebuie sa fie acelasi. În general functia sefoloseste în instructiuni de forma:

A := RE ADPRN (fisier)

• WRITEPRN(fisier) scrie o matrice într-un fisier. Fiecare linie a matricei devinelinie în fisierul specificat. Modalitatea de apel a functiei este:

W RI T EPRN (fisier) := A

8.6. INSTRUMENTE DE CALCUL SIMBOLIC 79

• APPENDPRN(fisier) adaugarea o matrice la sfârsitul unui fisier deja existent.Fiecare linie a matricei devine o noua linie în fisier. Forma de apel a functieieste:

APPE N DPRN (fisier) := A

În toate cazurile de mai sus, fisier este un string care identifica fisierulvolum:\cale\numeFisier.extensie.

Amintim posibilitatea inserarii în MathCAD de componente MSOffice, dar sipentru alte produse informatice.

8.6 Instrumente de calcul simbolic

Exista doua componente prin care se pot efectua calcule simbolice:

• Utilizînd comenzile meniului Symbolic, accesibil din bara superioara demeniuri (MenuBar) (Fig. 8.3);

• Utilizînd functiile casetei Symbolic, ce permite obtinerea rezultatelor sim-bolice la fel de usor ca cele numerice (Fig. 8.3).

Utilizarea meniului Symbolic. Operatiile meniului Symbolic sunt continuteîn tabelul urmator:

80 CAPITOLUL 8. PREZENTARE GENERALA

Numele comenzii Semnificatia

Evaluate EvaluareSimplify Simplifica o expresieExpand Dezvoltarea unei expresiiFactor Descompunere în factoriCollect Dezvolta dupa o expresiePolynomial Coefficients Coeficientii polinomuluiVariable ... Variabila ...

Solve Rezolva ecuatiaSubstitute SubstituieDifferentiate DeriveazaIntegrate IntegreazaExpand to Series ... Dezvoltare în serie

order of approximation pâna la ordinulConvert to partial fraction Dezvoltare în fractii simple

Matrix ... Operatii matriceale ...Transpose Matricea transpusaInvert Matricea inversaDeterminant Determinantul matricei

Transformations ... Transformari integrale ...Fourier Transformarea FourierInverse Fourier Transformarea Fourier inversaLaplace Transformarea LaplaceInverse Laplace Transformarea Laplace inversaZ Transformarea zInverse Z Transformarea z inversa

Pentru a putea aplica comenzile meniului Symbolic trebuie sa selectam varia-bila sau expresia asupra careia are loc actiunea.

Selectarea unui element se obtine prin clic asupra elementului sau utilizândtastatura, cu ajutorul tastelor directionale pozitionam cursorul pe elementul dorit.Elementul selectionat este încadrat. Cu ajutorul tastei Space o zona selectata sepoate extinde si restrânge iar cu tastele directionale selectia se poate muta de peun termen / operand pe altul.

Pentru actionarea comenzilor meniului Symbolic se procedeaza dupa cumurmeaza:

1. Se tasteaza expresia/ecuatia asupra careia va actiona comanda.

2. Se selecteaza expresia sau variabila activa.

8.7. ELEMENTE DE PROGRAMARE FUNCTIONALA 81

3. Se selecteaza comanda dorita din meniul Symbolic si se lanseaza în exe-cutie prin clic sau tastând Enter.

Rezultatul apare sub expresia în cauza.Pentru editarea unei ecuatii între membrul stâng si membrul drept se pune

egalul simbolic, care se obtine tastând Ctrl+=.

Utilizarea functiilor casetei Symbolic. Functiile casetei Symbolic se apeleazaprintr-un clic, în dreptul cursorului MathCAD apare functia apelata împreuna cupozitii marcate ce urmeaza a fi completate cu expresii si/sau variabile asupracarora are loc actiunea.

Evaluarea unei asemenea expresii se realizeaza prin comanda de simplificaresimbolica → ce se obtine tastând Ctrl + . urmat de clic în afara regiunii expresieisau tastând Enter.

În plus, dispunem de o serie de operatori de calcul simbolic:

Functiunea Se obtine tasând

Calculul unei sume Ctrl + $Calculul unui produs Ctrl + #Calculul unei limite Ctrl + lLimita la dreapta Ctrl + Shift + aLimita la stânga Ctrl + Shift + bDerivare Ctrl + ? si ?Calculul unei primitive Ctrl + iCalculul unei integrala Ctrl + &

Cu ajutorul clauzei assume se pot impune restrictii asupra unor variabile.

8.7 Elemente de programare functionala

Posibilitatea de a crea noi functii împreuna cu operatia de compunere fac dinprogramarea functionala modul natural de lucru în MathCAD.

Pentru programarea unui test de decizie se poate folosi operatorul de controlif( cond ,exp1,exp2). Daca expresia cond este adevarata atunci valoarea retur-nata de operator este exp1 iar în caz contrar exp2. cond este o expresie logica.

În MathCAD orce valoare nenula reprezinta valoarea logica adevarat si 0 reprez-inta valoarea logica fals.

Operatorii relationali si operatorii logici se pot obtine prin paleta Booleansau tastând

82 CAPITOLUL 8. PREZENTARE GENERALA

Operatori relationali Se obtine tastând

= Ctrl + =< >> <≤ Ctrl + 9≥ Ctrl + 06= Ctrl + 3

Operatori logici Se obtine tastând

¬ (negatia) Ctrl + Shift + 1∧ (disjunctia) Ctrl + Shift + 7∨ (conjunctia) Ctrl + Shift + 6⊕

(sau exclusiv) Ctrl + Shift + 5

Exemplul 8.16 Sa se calculeze limita sirului (an)n∈N definita prin formula de re-curenta

an+1 =√

an +2 a0 =p

2

cu o precizie ε= 10−6 în sensul |an −an−1| < ε.

Codul MathCAD este

N := 100 n := 1..N ε := 10−6

a0 :=p2 a1 :=

√2+p

2

an+1 := if[|an −an−1| ≥ ε,

√an +2, an

]l i m := al ast (a) l i m = 2

8.8 Elemente de programare procedurala

MathCAD este dotat cu un limbaj de programare vizual deosebit de eficient.Functiile astfel create pot fi incorporate în expresiile supuse calculului simbolic.

Realizarea unui program se obtine cu instrumentele casetei de programare(din bara/panoul cu uneltele MathCAD) (Fig. 8.4).

Un program MathCAD va apare ca o functie

8.8. ELEMENTE DE PROGRAMARE PROCEDURALA 83

NumeFuncti e(var i abi l e f or mal e) :=

∥∥∥∥∥∥∥∥∥i nstr ucti uni lepr og r amului. . .expr esi a r etur nat a

Fiecare instructiune a panoului de programare se introduce exclusiv în doc-umentul (foaia de calcul) în care se editeaza programul printr-un clic al mouse-ului. Introducerea are loc pe pozitia cursorului MathCAD.

Astfel daca dorim sa începem editarea unui program este suficient sa tastam

NumeFuncti e(var i abi l e f or mal e) := c

urmat de clic pe Add Line.Rezultatul va fi

NumeFuncti e(var i abi l e f or mal e) :=∥∥∥∥ c

Semnul c desemneaza cursorul MathCAD.Cele doua pozitii marcate permit extinderea numarului de rânduri (din nou

clic pe Add Line) si urmeaza a fi completate cu instructiunile programului.În procesul editarii se utilizeaza regulile MathCAD pentru operatii, operatori,

indici, etc.

• ← corespunde instructiunii de atribuire, variabilei din membrul stâng i seatribuie valoarea expresiei din membrul drept.

• if este instructiunea conditionala. Selectând aceasta instructiune, po-zitiamarcata de cursorul MathCAD se transforma în

i f

Cele doua pozitii marcate se completeaza cu

1. expresia care se obtine daca conditia este adevarata (pozitia marcatadin stânga);

2. conditia instructiunii if (pozitia marcata din dreapta).

84 CAPITOLUL 8. PREZENTARE GENERALA

Daca prima pozitie marcata se extinde cu o linie atunci schema graficadevine

i f∥∥∥∥În acest caz pozitiile marcate se completeaza cu activitatile corespunza-toare cazului în care conditia este îndeplinita. Daca conditia este falsaatunci se continua cu instructiunea urmatoare.

• otherwise folosit dupa if permite specificarea actiunilor de efectuat în cazulîn care conditia instructiunii conditionale este falsa. Selectarea instructiu-nii otherwise transforma pozitia marcata de cursorul MathCAD în

other wi se

Noua pozitie marcata se completeaza cu activitatile corespunzatoare cazu-lui în care conditia este falsa.

• on error este instructiunea de tratare a exceptiei de depasire flotanta. Selec-tând instructiunea on error pozitia marcata de cursorul MathCAD devine

on er r or

Pozitiile marcate se completeaza cu

1. expresia returnata în caz de eroare;

2. expresia care poate genera eroare.

Urmatorul exemplu este edificator. Pentru functia

f (x) :=∞ on er r or1

x

se obtinef (1) = 1 f (0) := 1 ·10307

Ultima valoare este cel mai mare numar cu care opereaza MathCAD.

• while si for reprezinta instructiunile de ciclare cu test initial si respectiv cucontor.

Selectând instructiunea while, pozitia marcata de cursorul MathCAD devine

whi le

Cele doua pozitii marcate se completeaza cu

8.8. ELEMENTE DE PROGRAMARE PROCEDURALA 85

1. testul initial buclei;

2. instructiunile ciclului.

• Selectând instructiunea for, pozitia marcata din dreptul cursorului Math-CAD se înlocuieste prin

f or ∈

Cele trei pozitii marcate se completeaza cu

1. indicele ciclului;

2. intervalul în care variaza indicele;

3. instructiunile buclei.

• Instructiunea break se foloseste pentru întreruperea unei instructiuni deciclare while, for. Bucla curenta este oprita si executia continua de la in-structiunea urmatoare.

• Instructiunea continue se foloseste pentru scurtcircuitarea partiala a uneiinstructiuni de ciclare while, for; executia se reia de la prima instructiune abuclei, sarindu-se peste secventa de cod cuprinsa între instructiunea con-tinue si sfârsitul buclei.

• Instructiunea return are ca efect scurtcircuitarea programului. Instruc- ti-unile care urmeaza nu mai sunt executate. Selectarea acestei instructiuniintroduce pe pozitia marcata de cursorul MathCAD

r etur n

Noua pozitie marcata se completeaza cu valoarea returnata de functie.

Bineînteles, într-un program MathCAD se poate utiliza întreaga familie de functiinumerice ale produsului.

Exemplificam posibilitatile oferite prin calculul sirului primelor N numereprime (8.5).

86 CAPITOLUL 8. PREZENTARE GENERALA

Figure 8.2: Animatie tip "morphing"

8.8. ELEMENTE DE PROGRAMARE PROCEDURALA 87

Figure 8.3: Meniul si caseta Symbolic.

Figure 8.4: Caseta cu instrumentele de programare.

88 CAPITOLUL 8. PREZENTARE GENERALA

Figure 8.5: Program MathCAD: Calculul sirului primelor N numere prime.

Capitolul 9

Algebra liniara numerica

Cap. 8 Cap. 10

9.1 Factorizarea unei matrice

Functiile

• M = lu(A) calculeaza factorizarea LU a matricei A ∈ Mn(R) : PA = LU .

Matricea M s-a obtinut prin alaturarea matricelor P,L,U . Matricea A tre-buie sa fie nesingulara.

• M = qr(A) calculeaza descompunerea QR a matricei A ∈ Mn,k (R) : Q ′A = R.

Matricea M s-a obtinut prin alaturarea matricelor Q si R.

Exemplul 9.1 Sa se calculeze factorizarea LU a matricei

A :=

1 2 3 42 3 4 13 4 1 24 1 2 3

.

89

90 CAPITOLUL 9. ALGEBRA LINIARA NUMERICA

M:=lu(A)P:=submatrix(M,0,3,0,3)L:=submatrix(M,0,3,4,7)U:=submatrix(M,0,3,8,11)

P =

0 0 0 10 0 1 00 1 0 01 0 0 0

L =

1 0 0 0

0.75 1 0 00.5 0.769 1 0

0.25 0.538 0.818 1

U =

4 1 2 30 3.25 −0.5 −0.250 0 3.385 −0.3080 0 0 3.636

Exemplul 9.2 Sa se calculeze factorizarea QR a matricei

X = 6 6 1

3 6 12 1 1

M:=qr(X)Q:=submatrix(M,0,2,0,2)R:=submatrix(M,0,2,3,5)

Q = 0.857 0.286 0.429

0.429 −0.857 −0.2860.286 0.429 −0.857

R = 7 8 1.571

0 −3 −0.1430 0 −0.714

9.2 Rezolvarea sistemelor algebrice de ecuatii liniare

Pentru rezolvarea sistemelor algebrice de ecuatii liniare de forma Ax = b încare numarul necunoscutelor coincide cu numarul ecuatiilor, MathCAD oferadoua modalitati de abordare.

Mai întai se defineste matricea A a sistemului si apoi vectorul coloana b prinatribuire. Daca matricea A a sistemului este nesingulara solutia x se calculeazacu ajutorul formulei x := A−1 · b. Acelasi rezultat se obtine si prin intermediulcomenzii x := l sol ve(A,b). În cazul în care determinantul matricei sistemuluieste nul, aceasta însemnând ca sistemul algebric de ecuatii liniare dat are ne-cunoscute secundare, o solutie particulara a acestuia se poate obtine prin inter-mediul aceleiasi comenzi x := l sol ve(A,b).

Exemplul 9.3 Sa se rezolve sistemul algebric de ecuatii liniare:x1 + 2x2 + 3x3 + 4x4 = 112x1 + 3x2 + 4x3 + x4 = 123x1 + 4x2 + x3 + 2x4 = 134x1 + x2 + 2x3 + 3x4 = 14

9.2. REZOLVAREA SISTEMELOR ALGEBRICE DE ECUATII LINIARE 91

Pentru rezolvarea sistemului se defineste matricea patratica A de dimensiunepatru si vectorul b, se calculeaza determinantul matricei A si apoi se calculeazasolutia sistemului.

A :=

1 2 3 42 3 4 13 4 1 24 1 2 3

b :=

11121314

|A| = 160 x := A−1 ·b x =

2111

Acelasi rezultat se obtine si prin

x := l sol ve(A,b) x =

2111

Exemplul 9.4 Sa se rezolve sistemul algebric de ecuatii liniare:

x + y + z + t = 10x + y − z + 2t = −8

5x + 5y − z − 4t = −4x + y + 3z + 4t = 28

Rezolvarea sistemului dat consta în executarea urmatorilor pasi

A :=

1 1 1 11 1 −1 25 5 −1 −41 1 3 4

b :=

10−8−428

|A| = 0 x := l sol ve(A,b) x =

26.4

−25.490

Solutia astfel obtinuta reprezinta o solutie particulara a sistemului dat.

Capitolul 10

Rezolvarea sistemelor si ecuatiiloralgebrice

Cap. 9 Cap. 11

10.1 Rezolvarea sistemelor algebrice de ecuatii neliniare

Pentru rezolvarea sistemelor algebrice neliniare de formaf1(x1, . . . , xn) = 0...fn(x1, . . . , xn) = 0

sau scris sub forma condensata f (x) = 0 cu

x =

x1...

xn

f (x) =

f1(x1, . . . , xn)...

fn(x1, . . . , xn)

MathCAD ofera doua functii: find si minerr. Pentru gasirea unei solutii este

necesara precizarea unei aproximatii initiale. Pornind de la aceasta aproximatieMathCAD construieste prin intermediul unui proces iterativ noi aproximatii ale

92

10.1. SISTEME ALGEBRICE NELINIARE 93

solutiei. Daca valorile aproximatiei initiale nu sunt alese din domeniul de con-vergenta procesul iterativ diverge. Astfel, alegerea aproximatiei initiale poatereprezenta în anumite cazuri partea cea mai dificila din rezolvarea problemei.

Rezolvarea unui sistem algebric de ecuatii neliniare consta în construirea unuibloc de rezolvare care trebuie sa contina cuvântul cheie given si una din functiilefind, respectiv minerr. Cuvântul cheie given trebuie sa preceada în blocul derezolvare ecuatiile sistemului.

Exemplul 10.1 Sa se rezolve sistemul algebric de ecuatii neliniare:10x1 + x2

1 − 2x2x3 − 0.1 = 010x2 + x2

2 − 2x1x3 + 0.2 = 010x3 + x2

3 − 2x1x2 − 0.3 = 0

Rezolvarea consta în efectuarea urmatorilor pasi pe o foaie de lucru:

x := 0 y := 0 z := 0

given

10 · x + y2 −2 · y · z −0.1=0

10 · y + y2 −2 · x · z +0.2=0

10 · z + z2 −2 · x · y −0.3=0

find(x, y, z) = 9.841×10−3

−0.020.03

Semnul "egal" scris între cei doi membrii ai fiecarei ecuatii se obtine prin

apasarea simultana a tastelor Ctrl si simbolul =. Algoritmul pentru functia findimplica un proces special de rezolvare în care metoda este aleasa dintr-un grupde metode pe care programul le pune la dispozitie. Alegerea unei metode se faceapasând butonul din dreapta mouse-ului pe numele functiei find si apoi prin se-lectarea unei optiuni din meniul de rezolvare a sistemului. De aici se poate alegeoptiunea AutoSelect prin intermediul careia MathCAD va face o alegere automataa metodei de rezolvare a sistemului în functie de caz (sistem liniar, neliniar, sauproblema de programare neliniara). Pentru cazul neliniar exista trei metode carepot fi alese:

1. metoda gradientului conjugat,

2. metoda Levenberg-Marquardt,

3. metoda quasi-Newton.

94 CAPITOLUL 10. SISTEME SI ECUATII ALGEBRICE

10.2 Rezolvarea ecuatiilor algebrice

În acesta sectiune vom trata modalitatea de rezolvare a unei ecuatii algebricede forma f (x) = 0 cu f : I ⊂R→R.

Pentru rezolvarea ecuatiilor algebrice se utilizeaza functia root. Mai întâi sedefineste functia f (x) si apoi se alege o valoare initiala α în vecinatatea careia secauta solutia ecuatiei.

Exemplul 10.2 Sa se rezolve ecuatia 2x = x2.

Ecuatia are solutiile pozitive x = 2 si x = 4. Determinam solutia negativa

f (x) := 2x −x2

α := −0.5

root( f (α),α) =−0.767

Pentru a gasi toate solutiile unei ecuatii algebrice se recomanda trasarea grafi-cului functiei. Astfel se pot determina puncte din vecinatatea solutiilor, punctece pot reprezenta aproximatii pentru solutiile cautate.

Daca se cunoaste un interval [a,b] astfel încât f (a) f (b) < 0 ( f continua),atunci pentru determinarea unei solutii a ecuatiei f (x) = 0 se poate utiliza functiaroot cu parametri f (x), x, a,b. În acest caz, x nu mai trebuie definit, el aparândca un parametru formal.

Exemplul 10.3

Solutia problemei anterioare este

f (x) := 2x −x2

r oot ( f (x), x,−1,−0.5) =−0.767

10.3 Rezolvarea ecuatiilor polinomiale

Ecuatia polinomiala reprezinta un caz particular de ecuatie algebrica. În cazulecuatiilor polinomiale se cere determinarea tuturor radacinilor reale sau com-plexe.

10.3. REZOLVAREA ECUATIILOR POLINOMIALE 95

Pentru a rezolva în MathCAD o ecuatie polinomiala de grad n se definesteun vector coloana cu n + 1 componente ce reprezinta coeficientii polinomuluiîncepand cu coeficientul monomului de grad 0 si continuând în ordinea cresca-toare a gradelor pâna la coeficientul monomului de grad maxim.

Radacinile polinomului sunt returnate de functia polyroots care are ca argu-ment vectorul coloana definit anterior. MathCAD pune la dispozitie doi algoritmipentru rezolvarea ecuatiilor polinomiale:

1. metoda lui Laguerre,

2. metoda matricei companion.

Implicit, polyroots gaseste radacinile ecuatiei polinomiale utilizând metoda luiLaguerre. Daca se doreste rezolvarea ecuatiei polinomiale prin intermediul metodeimatricei companion, atunci se apasa butonul din dreapta mouse-ului pe numelefunctiei si din meniul respectiv se alege metoda de rezolvare dorit.

Exemplul 10.4 Sa se determine radacinile polinomului

p = 2x4 +7x3 −2x2 −13x +6.

Rezolvarea este:

v :=

6

−13−2

72

pol yr oot s(v) =

−3−20.5

1

Capitolul 11

Rezolvarea problemelor deinterpolare

Cap. 10 Cap. 12

Fie F o familie interpolatoare de ordin n pe axa reala. Dându-se nodurile(xi )1≤i≤n si numerele (yi )1≤i≤n , daca ϕ ∈F este functia de interpolare care satis-face conditiile ϕ(xi ) = yi , 1 ≤ i ≤ n, se cere sa se calculeze ϕ(z), unde z este unpunct dat.

11.1 Interpolare polinomiala

Pentru F = Pn−1 solutia problemei de interpolare Lagrange este polinomul

L(Pn−1; x1, . . . , xn ; y1, . . . , yn)(z) =n∑

i=1yi

n∏j=1j 6=i

z −x j

xi −x j

Pentru implementare pe calculatoare se foloseste formula baricentrica a poli-nomului lui Lagrange

L(Pn−1; x1, ..., xn ; y1, ..., yn)(z) =

∑ni=0 yi

∏nj=1j 6=i

z−x j

xi−x j∑ni=0

∏nj=1j 6=i

z−x j

xi−x j

96

11.2. INTERPOLARE CU FUNCTII SPLINE CUBICE 97

Valoarea acestui polinom este calculata prin intermediul functiei din Fig. 11.1Semnificatia parametrilor functiei L(x, v x, v y) este:

• x matrice cu punctele în care se doreste calcularea valorii polinomului La-grange de interpolare.

• (v x, v y) = (v xi , v yi )i datele problemei de interpolare. Componentele vec-torului v x trebuie sa fie distincte doua câte doua.

Exemplul 11.1 Sa se calculeze L(Pn ; x0, . . . , xn ; f )(z) pentru

f (x) = x2

xi = i , i ∈ {0,1, . . . ,5}z = 0.5,3,5,10

Rezolvarea este:

f (x) := x2 n := 5 i := 0..n

v xi := i v yi := f (v xi ) z := 0.5

3.510

L(z, v x, v y) =

0.2512.25100

11.2 Interpolare cu functii spline cubice

În cazul în care multimea interpolatoare este multimea functiilor spline cu-bice se folosesc functiile MathCAD

• cspline

• pspline

• lspline

combinata cu utilizarea functiei interp.Sintaxa functiilor cspline, pspline, lspline este:

c = cspl i ne(v x, v y) c = pspl i ne(v x, v y) c = l spl i ne(v x, v y)

unde

98 CAPITOLUL 11. REZOLVAREA PROBLEMELOR DE INTERPOLARE

L x vx, vy,( ) error "Data error"( ) rows vx( ) rows vy( )≠if

n 0←

m 0←

x0 0, x←

IsScalar x( )if

n rows x( ) 1−←

m cols x( ) 1−←

otherwise

N rows vx( )←

wk 1←

wk wk vxk vxj−( )⋅← j k≠if

j 0 N 1−..∈for

k 0 N 1−..∈for

s 0←

yi j, vyk←

s 1←

xi j, vxk=if

k 0 N 1−..∈for

yi j,0

N 1−

k

vyk

xi j, vxk−( ) wk⋅∑=

0

N 1−

k

1xi j, vxk−( ) wk⋅∑

=

← s 0=if

j 0 m..∈for

i 0 n..∈for

y

otherwise

:=

Figure 11.1: Polinomul de interpolare Lagrange

11.2. INTERPOLARE CU FUNCTII SPLINE CUBICE 99

• c este un vector cu parametrii functiei spline;

• (v x, v y) = (v xi , v yi )i sunt datele problemei de interpolare. Componentelevectorului v x trebuie date în ordine crescatoare si sunt distincte doua câtedoua.

Sintaxa funciei interp este

y = i nter p(c, v x, v y, x)

unde în plus y este valoarea functiei spline cubice de interpolare calculata în x.

Exemplul 11.2 Sa se calculeze valorile functiei spline cubice de interpolare în punctele0.5, 3.5, 10 pentru

f (x) = x3

xi = i , i ∈ {0,1, ...,5}

Rezolvare este:

f (x) := x3 n := 5 i := 0..n

xi := i yi := f (xi ) z := 0.5

3.510

c := cspl i ne(x, y) i nter p(c, x, y, z) =

0.12542.8751×103

Determinarea functiei spline cubice de interpolare în Mathcad

Fie x0 < x1 < . . . < xn si valorile reale y0, y1, . . . , yn . Notam din nou restrictiafunctiei spline cubice de interpolare la intervalul [xi , xi+1] prin si (x) si hi = xi+1−xi .

Determinarea functiei spline cubice de interpolare se va face în functie deparametrii Mi = s′′(xi ), i ∈ {0,1, . . . ,n}.

Deoarece s′′i (x) este polinom de gradul întâi are loc egalitatea s′′i (x) =−Mix−xi+1

hi+

Mi+1x−xi

hi, i ∈ {0,1, . . . ,n −1}.

În felul acesta functia s′′(x) va fi continua în intervalul [x0, xn].

100 CAPITOLUL 11. REZOLVAREA PROBLEMELOR DE INTERPOLARE

Integrând de doua ori se obtine succesiv

s′i (x) = −Mi(x −xi+1)2

2hi+Mi+1

(x −xi )2

2hi+ Ai

si (x) = −Mi(x −xi+1)3

6hi+Mi+1

(x −xi )3

6hi+ Ai (x −xi )+Bi

Conditiile si (xi ) = yi si si (xi+1) = yi+1, care asigura continuitatea functiei s(x),determina valorile pentru Ai si Bi :

Ai = yi+1 − yi

hi− Mi+1 −Mi

6hi , Bi = yi

Mi

6hi .

Continuitatea functiei s′(x) este asigurata de conditiile

s′i−1(xi ) = s′i (xi ), i ∈ {1, . . . ,n −1}.

Rezulta ecuatiile

hi−1

hi−1 +hiMi−1 +2Mi + hi

hi−1 +hiMi+1 = 6

hi−1 +hi

(yi+1 − yi

hi− yi − yi−1

hi−1

),

i ∈ {1, . . . ,n −1}.Pentru echilibrarea sistemului algebric de ecuatii liniare se introduc conditi-

ile la limita:

• lspline

M0 = Mn = 0 (conditia la limita naturala).

• pspline

M0 −M1 = 0

Mn−1 −Mn = 0.

• cspline

M0, Mn se afla pe dreptele determinate de punctele (x1, M1), (x2, M2) si re-spectiv (xn−2, Mn−2), (xn−1, Mn−1).

Rezulta ecuatiile:

M0 − h0 +h1

h1M1 + h0

h1M2 = 0

hn−1

hn−2Mn−2 − hn−2 +hn−1

hn−2Mn−1 +Mn = 0.

Capitolul 12

Derivare numerica

Cap. 11 Cap. 13

12.1 Derivarea functiilor de o variabila reala

Pentru calculul derivatei f ′(x0) unde f : I → R este o functie derivabila, Iun interval iar x0 ∈ Int(I ), în Mathcad se utilizeaza operatorul d

d care se obtinetastând ?. Pozitiile marcate se completeaza cu datele calculului: expresia dederivat, simbolul variabilei. Toate variabilele din expresia de derivat trebuie safie initializate, derivata va fi calculata pentru acele valori.

Exemplul 12.1 Sa se calculeze f ′(1) unde f (x) = x3.

Rezolvarea este:

x := 1d

dxx3 = 3

101

102 CAPITOLUL 12. DERIVARE NUMERICA

12.2 Cazul functiilor de mai multe variabile

Exemplul 12.2 Sa se calculeze jacobianul si hessianul functiei f (x, y) =(

x2 yx3 + y

)în (1,2).

f 1(x, y) := x2 · y f 2(x, y) := x3 + yx := 1 y := 2

J :=(

ddx f 1(x, y) d

dy f 1(x, y)d

dx f 2(x, y) ddy f 2(x, y)

)J =

(4 13 1

)H1 :=

(d

dx

( ddx f 1(x, y)

) ddy

( ddx f 1(x, y)

)d

dx

( ddx f 2(x, y)

) ddy

( ddx f 2(x, y)

) )

H2 := d

dx

(d

dy f 1(x, y))

ddy

(d

dy f 1(x, y))

ddx

(d

dy f 2(x, y))

ddy

(d

dy f 2(x, y))

H := augment(H1, H2)

H =(

4 2 2 1.373×10−15

6 0 0 0

)

Capitolul 13

Metoda celor mai mici patrate

Cap. 12 Cap. 14

Determinarea unui polinom de aproximare construit prin metoda celor maimici patrate de grad m pentru datele (xi , yi )1≤i≤n (m << n) se obtine cu ajutorulfunctlor MathCAD regress si interp.

Functia c = regress(vx,vy,k) returneaza un vector c utilizat de functia y = in-terp(c,vx,vy,x), ce calculeaza valoarea polinomului de aproximare de grad k adatelor (v xi , v yi )i în x. Ultimele k +1 componente ale vectorului c contin coefi-cientii polinomului de aproximare construit prin metoda celor mai mici patrate.

Exemplul 13.1 Sa se calculeze polinoamele de aproximare de grad unu si doi,constituite prin metoda celor mai mici patrate, pentru datele (xi , yi )0≤i≤20 undexi =−2+0.2i , yi = f (xi ), f (x) = |x|. Sa se reprezinte grafic functiile astfel obtinute.

Din 13.1 deducem polinomele de aproximare construite prin metoda celormai mici patrate de gradul 1 si respectiv 2:

ϕ1(x) = 1.048 ϕ2(x) = 0.388+0.449x2

103

104 CAPITOLUL 13. METODA CELOR MAI MICI PATRATE

Figure 13.1: Polinoamele de aproximare de grad 1 si 2

Capitolul 14

Integrare numerica

Cap. 13

14.1 Integrarea numerica a functiilor realede o variabila reala

MathCAD permite calculul aproximativ al integralelor definite. Pentru calcu-larea valorii integralei definite ∫ b

af (x)d x

unde functia f : [a,b] ⊂R−→R este continua în domeniul de definitie.Pentru a calcula valoarea unei integrale definite, se selecteaza din paleta Cal-

culus simbolul integralei definite, dupa care se completeaza pozitiile marcate:

• limitele intervalului de integrare,

• functia de integrat,

• variabila în raport cu care se face integrarea.

105

106 CAPITOLUL 14. INTEGRARE NUMERICA

Integrarea se face în raport cu o singura variabila, iar functia poate fi de maimulte variabile. Restul parametrilor în afara variabilei de integrare vor fi con-siderati constante si în consecinta vor trebui sa fie definiti în prealabil. În modimplicit integrala se evalueaza numeric pe baza unei metode alese de AutoSe-lect. Daca se doreste evaluarea integralei printr-o anumita metoda, se executaclic dreapta pe simbolul integralei, se deselecteaza optiunea AutoSelect si se alegeuna dim metodele pe care MathCAD le pune la dispozitie:

• Romberg,

• Adaptive,

• Infinite Limit,

• Singular Endpoint.

Parametrul utilizat în testele de precizie este TOL si are valoarea implicita 0.001.

Exemplul 14.1 Sa se calculeze integralele:

1.∫ 3

1x2 ·exd x

2.∫ π

2

0

si n(x)

xd x

Rezolvare:1.

T OL ≡ 10−6∫ 3

1x2 ·exdx = 97.709

2.

T OL ≡ 10−9∫ π

2

0

sin(x)

xdx = 1.371

14.2 Calculul numeric al integralelor duble

Pentru calculul integralelor duble de forma∫∫D

f (x, y)d xd y

undeD = {(x, y) : a ≤ x ≤ b, f i n f (x) ≤ y ≤ f sup(x)}.

14.2. CALCULUL NUMERIC AL INTEGRALELOR DUBLE 107

Calcularea integralei consta în transformarea acesteia în integrale iterate, deexemplu ∫ b

a

∫ f sup(x)

f i n f (x)f (x, y)dydx.

Exemplul 14.2 Sa se calculeze∫ ∫

D x yd xd y unde domeniul D este delimitat decurbele y = x2 si y =p

x.

Reprezentând grafic domeniul de integrare, deducem f i n f (x) = x2, f sup(x) =px, a = 0, b = 1. ∫ 1

0

∫ px

x2x · ydydx = 0.0833.

Part III

CULEGERE DE PROBLEME

108

Capitolul 15

Metode numerice în algebra liniara

I. Sa se calculeze factorizarea LU a matricei:

1.

10 6 −2 110 10 −5 0−2 2 −2 11 3 −2 3

2.

5 3 −114 −5 43 −13 19

3.

2 −1 3 44 −2 5 66 −3 7 88 −4 9 10

4.

1 1 0 0 0 01 2 1 0 0 00 1 3 1 0 00 0 1 4 1 00 0 0 1 5 10 0 0 0 1 7

33

II. Sa se calculeze descompunerea / factorizarea QR a matricei:

109

110 CAPITOLUL 15. METODE NUMERICE ÎN ALGEBRA LINIARA

1.

4 5 23 0 30 4 6

2.

2 1 31 3 12 8 5

3.

3 4 7 −25 4 9 31 −1 0 31 −1 0 0

III. Sa se rezolve sistemele algebrice de ecuatii liniare:

1.

x1 + x2 − x3 − x4 = 1

4x1 − 4x2 + 6x3 − 2x4 = −4x1 + 3x2 − 2x3 − 2x4 = 3

6x1 − 6x2 + 9x3 − 3x4 = −6

2.

x1 − 2x2 + 3x3 + 4x4 = 22

−4x1 + x2 + 2x3 + 3x4 = 63x1 + 4x2 − x3 + 2x4 = −42x1 + 3x2 + 4x3 − x4 = 6

3.

6x + 4y + z + 2t = 36x + 5y + 3z + 5t = 6

12x + 8y + z + 5t = 86x + 5y + 3z + 7t = 8

4.

x + 2y + 3z + 4t = −4x + y + 2z + 3t = −2x + 3y + z + 2t = −3x + 3y + 3z + 2t = −5

5.

2x + y + z + t = 13x − 2y − 5z + 4t = −30x + 3y + 2z − 3t = 17x − y + z − t = 2

111

6.

x + y + z + t = 4

2x + 2z + t = 4−2x + 2y − t = 43x + y − z = 0

7.

2x1 + 3x2 + 2x3 + x4 = 2x1 + x2 + 3x3 + 2x4 = 6

−3x1 + 2x2 − x3 − x4 = 0x1 − x2 + x3 + 3x4 = 6

8.

x + y + z + t = 2

2y + 2z + t = 2−2x + 2y − t = 23x + y − z = 2

9.

x + y + 2z + 3t = 2

3x − y − 4z − 6t = 02x + 3y − 6z − 9t = −7x − 2y + 8z − 12t = 3

10.

x + y + z − 2t + 7u = 102x + 5z − 2u = 323x + y − t = 1

2y − 5z + u = −39x − y + 3t = 7

11.

2x + 3y − z + t = 5x − y + 2z − 2t = −5

3x + y + 2z − 2t = −3−3x − y − 2z + 2t = 3

12.

x + 2y + 3z + 4t = 30

2x − 3y + 5z − 2t = 33x + 4y − 2z − t = 14x − y + 6z − 3t = 8

13.

x + 2y + 3z − 2t = 6

2x − y − 2z − 3t = 83x + 2y − z + 2t = 42x − 3y + 2z + t = −8

14.

2x − y + z − t = 12x − y − 3t = 23x − y + t = −32x + 2y − 2z + 5t = −6

112 CAPITOLUL 15. METODE NUMERICE ÎN ALGEBRA LINIARA

15.

x + 2y + 3z + 4t + 5u = 132x + y + 2z + 3t + 4u = 102x + 2y + z + 2t + 3u = 112x + 2y + 2z + t + 2u = 62x + 2y + 2z + 2t + u = 3

16.

x + 2y − 3z + 4t − u = −12x − y + 3z − 4t + 2u = 83x + y − z + 2t − u = 34x + 3y + 4z + 2t + 2u = −2x − y − z + 2t − 3u = −3

17.

x + y + z + t = 10x + y − z + 2t = −8

5x + 5y − z − 4t = −4x + y + 3z + 4t = 28

IV. Sa se rezolve sistemele algebrice de ecuatii liniare incompatibile în sensulcelor mai mici patrate:

1.

3x1 − x2 + x3 = 3x1 + 2x2 − x3 = −4

2x1 − 3x2 + 2x3 = 3

2.

x1 − 3x2 + x3 + x4 = 1x1 − 3x2 + x3 − 2x4 = −1x1 − 3x2 + x3 + 5x4 = 6

3.

2x − 3y + z = −1x + 2y − 3z = 0x − 12y + 11z = −1

4x − 15y + 9z = 0

4.

5x + 3y − 11z = 134x − 5y + 4z = 183x − 13y + 19z = 22

Capitolul 16

Sisteme si ecuatii algebrice

I. Sa se rezolve ecuatiile polinomiale:

1. x6 −2x5 +x3 −6x +6 = 0

2. 2x6 −x5 −5x4 +2x3 +20x2 −9x −9 = 0

3. x5 −56x4 −10x3 +560x2 +x −56 = 0

4. x5 −x4 −2x3 +4x2 −4 = 0

5. x5 −4x4 −9x3 +18x2 +14x −20 = 0

6. x6 −5x5 +5x4 −2x3 +13x2 +3x +9 = 0

7. x5 −12x4 +50x3 −88x2 +96x −128 = 0

8. x6 −6x5 +8x4 +3x3 −16x2 +18x −8 = 0

9. x5 −3x4 +2x3 −x2 +5x −2 = 0

10. x5 −4x3 −8x2 +32 = 0

11. xn −nx +1 = 0, n = 3,4,5

12. xn − (1+x + . . .+xn−1) = 0, n = 3,4,5

13. xn+1 − (1+x + . . .+xn−1) = 0, n = 2,3,4

14. xn+1 −xn −1 = 0, n = 2,3,4

Observatie. Justificati afirmatiile:

113

114 CAPITOLUL 16. SISTEME SI ECUATII ALGEBRICE

1. Pentru orice n ∈N,n > 2 ecuatia xn −nx +1 = 0 are doua radacini pozitive,an ∈ (0,1), bn ∈ (1,2).

2. Pentru orice p ∈N, ecuatia xp+1 − xp −1 = 0 are o singura radacina xp > 1si limp→∞ xp = 1.

3. Pentru orice n ∈N∗, p ∈N, ecuatia xn+p−(1+x+. . .+xn−1) = 0 are o singuraradacina xn,p > 1 si limn→∞ xn,p = xp .

II. Sa se rezolve ecuatiile algebrice:

1. 2x − ln x −4 = 0

2. ln8x −9x +3 = 0

3. x −2cos x = 0

4. e−0.5x −x = 0

5. ln x = 1x

6. ln x = x2 −1

7. x2 −2cos x = 0

8. x ln x −14 = 0

9. xx +2x −6 = 0

10. ex +e−3x −4 = 0

11. ln7x −8x +1 = 0

12. x +ex = e

III. Sa se rezolve sistemele algebrice de ecuatii neliniare

1.

{2x3 − y2 −1 = 0x y3 − y −4 = 0

115

2.

{ex − y = 0x −e−y = 0

3.

{e−x y = x2 − y +1(x +0.5)2 + y2 = 0.6

4.

x2 + y2 + z2 = 3x y +xz −3y z = 1x2 + y2 − z2 = 1

5.

{x2 + y2 −1 = 0x3 − y = 0

6.

{2x2 −x y −5x +1 = 0x +3ln x − y2 = 0

7.

{2x2 −x y − y2 +2x −2y +6 = 0y −x −1 = 0

8.

{x3 − y2 −1 = 0x y3 − y −4 = 0

9.

x2 −x − y2 − y + z2 = 0y −ex = 0z − ln(y) = 0

10.

{x2 −x − y2 = 1y −ex = 0

11.

{x +3ln x − y2 = 02x2 −x y −5x +1 = 0

12.

x +x2 −2y z −0.1 = 0y − y2 +3xz +0.2 = 0z − z2 +2x y −0.3 = 0

13.

{x3 − y +1 = 00.25x2 + y2 −1 = 0

14.

x −cos(x − y − z) = 0y −cos(y −x − z) = 0z −cos(z −x − y) = 0

15.

{tan(x)−cos(1.5y) = 02y3 −x2 −4x −3 = 0

116 CAPITOLUL 16. SISTEME SI ECUATII ALGEBRICE

16.

{3x2 +14y2 −1 = 0sin(3x +0.1y)+x = 0

17.

{1+x2 − y2 +ex cos y = 0 x0 =−12x y +ex sin y = 0 y0 = 4

18.

{sin x +cos y +ex y = 0arctan(x + y)−x y = 0

117

118 CAPITOLUL 17. PROBLEME DE INTERPOLARE

Capitolul 17

Probleme de interpolare

I. Sa se calculeze L(Pn , x0, x1, ..., xn ; f )(z) pentru

1.f (x) = x3 −5x2 +x −1xi = 2i +1, i ∈ {0,1,2,3,4,5}z = 4

2.f (x) = x4 −10x3 +2x2 +3x +1xi = 1+ i , i ∈ {0,1,2,3,4,5,6,7,8,9}z = 4.5

3.f (x) = lg(x)xi = e i , i ∈ {0,1,2,3,4,5}z = 1.7

4.f (x) = ex

xi =−3+ i , i ∈ {0,1,2,3,4,5,6}z = 1.5

5.f (x) = sin(x)xi =−π

2 + i π10 , i ∈ {0,1,2,3,4,5,6,7,8,9,10}

z = π13

6.f (x) = cos(x)xi = i π

10 , i ∈ {0,1,2,3,4,5,6,7,8,9}z = π

7

7.f (x) =p

xxi = i 2, i ∈ {0,1,2,3,4,5}z = 5

119

8f (x) = x2+1

xxi = 1+ i

5 , i ∈ {0,1,2,3,4,5}z = 1.3, z = 1.5, z = 1.7

II. Sa se calculeze valoarea functiei spline cubice de interpolare pentru dateleproblemei 1.

Capitolul 18

Derivare numerica

I. Sa se calculeze derivate functiilor în punctul indicat:

1. f (x) = 2x − ln x −4 x0 = 12. f (x) = ln8x −9x +3 x0 = 13. f (x) = x −2cos x x0 = 14. f (x) = e−0.5x −x x0 = 15. f (x) = ln x − 1

x x0 = 16. f (x) = ln x −x2 +1 x0 = 17. f (x) = x2 −2cos x x0 = 18. f (x) = xx +2x −6 x0 = 29. f (x) = ex +e−3x −4 x0 = 1

II. Sa se calculeze jacobianul si hessianul functiilor în punctul indicat:

120

121

1. f (x, y) =(

2x3 − y2 −1x y3 − y −4

)(x, y) = (1,2)

2. f (x, y) =(

x2 − yx(y +1)

)(x, y) = (1,2)

3. f (x, y) =(

tan(x y)−x2

0.5x2 +2y2 −1

)(x, y) = (1,2)

4. f (x, y) =(

e−x y −x2 − y −1(x +0.5)2 + y2 −0.6

)(x, y) = (2,2)

5. f (x, y) =(

x3 + y3 −6x +3x3 − y3 −6y +2

)(x, y) = (1,2)

6. f (x, y) =(

x2 + y2 −1x3 − y

)(x, y) = (1,2)

7. f (x, y) =(

2x2 −x y −5x +1x +3ln x − y2

)(x, y) = (1,2)

8. f (x, y) =(

2x2 −x y − y2 +2x −2y +6y −x −1

)(x, y) = (1,2)

Capitolul 19

Calculul unui element de aproximareprin metoda celor mai mici patrate

I. Sa se calculeze polinoamele de aproximare de grad unu, doi si trei constru-ite prin metoda celor mai mici patrate pentru datele Problemei 1 din capitolulInterpolare.

II. Sa se calculeze functiile de aproximare construite prin metoda celor maimici patrate pentru metoda Gauss-Newton de forma si datele indicate (t = 0 : 9):

1. ϕ(t ) = a ln(bt + c) y = 2ln(3t +1)

2. ϕ(t ) = a exp(bt 2 + c) y = 2exp(−t 2)

3. ϕ(t ) = a sin(bt )exp(−ct ) y = 2sin(t )exp(−2t )

4. ϕ(t ) = a +bt + c exp(d t ) y = 1−2t +2exp(−t )

III. Sa se calculeze functiile de aproximare construite prin metoda celor maimici patrate pentru metoda Levenberg-Marquardt pentru cazurile exercitiului II.

122

Capitolul 20

Integrare numerica

I. Sa se calculeze integralele:

1.1∫

0x2exdx 2.

π∫0

x2 cos xdx

3.5∫

4

px2 −9dx 4.

2∫1

x2 ln xdx

5.

π4∫

0x tan2 xdx 6.

π2∫

0

sin2x1+sin2 x

dx

7.2∫

0

p4x −x2dx 8

1∫0

arcsin x2−1x2+1

dx

9.π∫0

cos2 x cos4xdx 10.

π2∫π6

1+sin2x+cos2xsin x+cos x dx

11.1∫

−1x3

√1+ex2 dx 12.

1∫0

2xp3+4x2

dx

13.

p3∫

p3

3

arctan 1x dx 14.

π4∫

0

tan x1+p2cos x

dx

II. Sa se calculeze integralele duble:

123

124 CAPITOLUL 20. INTEGRARE NUMERICA

1.∫D

∫(x2 + y)dxdy D : (delimitat de) y = x2; y2 = x.

2.∫D

∫ x2

y2 dxdy D : y = 1x ; y = x; x = 1; x = 2.

3.∫D

∫ xx2+y2 dxdy D : y = x; y = (x −1)2.

4.∫D

∫ √4x2 − y2dxdy D : y = x; y = 0; x = 1.

5.∫D

∫ 1px+py

dxdy D : x = 1, y = 0, x − y = 12 .

6.∫D

∫ 2xp1+y4−x4

dxdy D : y = x, x = 0, y = 1.

7.∫D

∫(x2 y

√1−x2 − y2dxdy D : x ≥ 0, y ≥ 0, x2 + y2 = 1.

8.∫D

∫ √x y − y2dxdy D este triunghiul cu vârfurile

O(0,0), A(10,1),B(1,1).

Bibliografie

[1] BLAGA P., COMAN GH., POP S., TRÂMBITAS R., VASARU D., 1994, Anal-iza numerica. Îndrumar de laborator. Univ. "Babes–Bolyai" Cluj-Napoca(litografiat).

[2] CIRA O., MARUSTER S., 2008, Metode numerice pentru ecuatii neliniare.Ed. Matrix-Rom, Bucuresti.

[3] CURTEANU S., 2001, Calculul numeric si simbolic în Mathcad. Ed. Matrix-Rom, Bucuresti.

[4] DINU M., LINCA Gh., 1999, Algoritmi si teme speciale de analiza numerica.Ed. Matrix rom, Bucuresti.

[5] GAVRILA C., 2007, SCILAB Aplicatii, Modele si simulare Scicos Ed. Matrix-Rom, Bucuresti.

[6] KINCAID D., CHENEY W., 1991, Numerical Analysis. Brooks / Cole, PacificGrove, Ca.

[7] MARINESCU GH., BADEA L., GRIGORE G., JAMBOR C., MAZILU P., RIZ-ZOLI I., STEFAN C., 1978, Probleme de analiza numerica. E.D.P., Bucuresti.

[8] MARINESCU GH., RIZZOLI I., POPESCU I., STEFAN C., 1987, Probleme deanaliza numerica rezolvate cu calculatorul. Ed. Acad. R.S.R., Bucuresti.

[9] MARTIN O., 1998, Probleme de analiza numerica. Ed. Matrix rom, Bu-curesti.

[10] PLIS A. I., SLIVINA N.A., 1983, Laboratornyi praktikum po bysxeimatematike. Vysxa� Xkola, Moskva.

[11] SCHEIBER E., LIXANDROIU D., CISMASIU C., 1982, Analiza numerica. În-drumar de laborator. Univ. Brasov (litografiat).

125

126 BIBLIOGRAFIE

[12] SCHEIBER E., SÂNGEORZAN L., GROVU M., 1993, Analiza numerica. În-drumar de laborator. Univ. "Transilvania" Brasov (litografiat).

[13] SCHEIBER E., 2010, Java în calculul stiintific. Ed. Univ. TransilvaniaBrasov.

top related