Sunteți pe pagina 1din 100

Universitatea Transilvania din Braşov

Facultatea de Matematică şi Informatică


Catedra de Informatică Teoretică

E. SCHEIBER

Laborator de ANALIZĂ NUMERICĂ

SCILAB & MathCAD

Braşov
Tema de LABORATOR

Pentru a fi primit în examen trebuie efectuată şi predată cadrului didactic coordona-
tor al activităţii de laborator Lucrarea de laborator de Analiză numerică/Calcul numeric.
Lucrarea constă în rezolvarea a câte unei probleme din toate temele cuprinse în Culegerea
de probleme.
Pe o foaie A5 se vor scrie

1. Titlul capitolului;

2. Enunţul temei şi al problemei;

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

4. Rezultatele obţinute.

Pe prima foaie se trece

1. Numele şi prenumele;

2. Elemente de identificare a formaţiei de studiu;

3. Numărul de ordine din catalog sau cel primit de la coordonatorul activităţii de lab-
orator. În continuare ne referim la acest număr prin notaţia I D.

La o temă, un student rezolvă problema având numărul de ordine I D. Dacă I D este


mai mare decât numărul problemelor atunci problema ce trebuie rezolvată se obţine cu
formula
I D mod1 Numar ul P r obl emel or + 1.
Se vor folosi următoarele produse informatice

• Scilab - produs gratuit descărcabil din internet;

• MathCAD - dacă este disponibil, produs comercial;

Îndrumarul de laborator de Analiză numerică prezintă modul de rezolvare a prob-


lemelor.
1 Restul împărţirii.

2
3

În timp, la elaborarea acestui Îndrumar de


laborator au contribuit:
• Silviu Dumitrescu
• Cristina Luca
• Vlad Monescu
Cuprins

I Scilab 7

1 Elemente de programare în SCILAB 8


1.1 Obiecte Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2 Elemente de programare in Scilab . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3 Funcţii(subprograme) în Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.4 Grafică în Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4.1 Grafică 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4.2 Grafică 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2 Algebră liniară numerică 18


2.1 Factorizarea unei matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2 Rezolvarea sistemelor algebrice de ecuaţii liniare . . . . . . . . . . . . . . . . 20

3 Rezolvarea sistemelor şi ecuaţiilor algebrice 23


3.1 Rezolvarea sistemelor algebrice de ecuaţii neliniare . . . . . . . . . . . . . . . 23
3.2 Rezolvarea ecuaţiilor algebrice . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3 Rezolvarea ecuaţiilor polinomiale . . . . . . . . . . . . . . . . . . . . . . . . . 25

4 Rezolvarea problemelor de interpolare 28


4.1 Interpolare polinomială . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.2 Interpolare cu funcţii spline cubice . . . . . . . . . . . . . . . . . . . . . . . . 30

5 Metoda celor mai mici pătrate 32

6 Integrare numerică 38
6.1 Integrarea funcţiilor de o variabilă reală . . . . . . . . . . . . . . . . . . . . . . 38
6.2 Calculul numeric al integralelor duble . . . . . . . . . . . . . . . . . . . . . . . 40

II MathCAD 45

7 Prezentare generală 46
7.1 Efectuarea calculelor numerice . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4
CUPRINS 5

7.1.1 Operatori MathCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47


7.1.2 Identificatori MathCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.1.3 Constante MathCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.1.4 Tipuri de date MathCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.1.5 Vectorizare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
7.1.6 Unităţi de măsură . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.2 Reprezentări grafice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.3 Crearea unei animaţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.4 Editare de text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
7.5 Salvarea / restaurarea datelor numerice . . . . . . . . . . . . . . . . . . . . . . 59
7.6 Instrumente de calcul simbolic . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7.7 Elemente de programare funcţională . . . . . . . . . . . . . . . . . . . . . . . 62
7.8 Elemente de programare procedurală . . . . . . . . . . . . . . . . . . . . . . . 63

8 Algebră liniară numerică 70


8.1 Factorizarea unei matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
8.2 Rezolvarea sistemelor algebrice de ecuaţii liniare . . . . . . . . . . . . . . . . 71

9 Sisteme şi ecuaţii algebrice 73


9.1 Sisteme algebrice neliniare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
9.2 Rezolvarea ecuaţiilor algebrice . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
9.3 Rezolvarea ecuaţiilor polinomiale . . . . . . . . . . . . . . . . . . . . . . . . . 75

10 Rezolvarea problemelor de interpolare 77


10.1 Interpolare polinomială . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
10.2 Interpolare cu funcţii spline cubice . . . . . . . . . . . . . . . . . . . . . . . . 79

11 Metoda celor mai mici pătrate 81

12 Integrare numerică 83
12.1 Integrare numerică . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
12.2 Calculul numeric al integralelor duble . . . . . . . . . . . . . . . . . . . . . . . 84

III CULEGERE DE PROBLEME 86

13 Metode numerice în algebra liniară 87

14 Sisteme şi ecuaţii algebrice 91

15 Probleme de interpolare 95

16 Metoda celor mai mici pătrate 97

17 Integrare numerică 98
6 CUPRINS

Bibliografie 100
Part I

Scilab

7
Capitolul 1

Elemente de programare în SCILAB

Cap. 2

Prezentăm pe scurt elemente ale limbajului de programare utilizat în produsul Scilab.


Elementele prezentate în secţiunile următoare reprezintă doar ghid de utilizare rapidă.
Se presupune că utilizatorul posedă cunoştinţe de programare, având experienţă de lu-
cru în cel puţin un limbaj de programare procedural.
Scilab este un produs de calcul numeric produs de INRIA – Franţa – disponibil în
mediile Windows şi Linux. Produsul este distribuit gratuit. Produsul este însoţit de o
documentaţie cuprinzătoare.
Ca produs informatic Scilab are trăsături comune cu produsul comercial Matlab.

1.1 Obiecte Scilab


• Constante
Tip Mnemonic Valoare
real %pi π
real %e e
real %eps ≈ 2.210−16
%inf ∞
complex %i i
boolean %t true
boolean %f false
polinom %s s

8
1.1. OBIECTE SCILAB 9

• Literali

– Literali numerici
Exemple:
1. Numărul real 10,23 se poate scrie:
10.23=0.1023e+2=0.1023E+2=1023e-2=1023E-2.
2. Numărul complex 1 + 5i se scrie 1 + 5 ∗ %i .
– Literali nenumerici
Un caracter sau un şir se caractere – string – se defineşte (scrie):
’c’ sau "c"
’string’ sau "string"

• Funcţii matematice uzuale:


Mnemonic Semnificaţie Mnemonic Semnificaţie
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)
p sin x
sqrt(x) x sinc(x) x
floor(x) [x] ceil(x) dxe
R x −t 2 R∞
erf(x) p2 e dt gamma(x) Γ(x) = t x−1 e −t dt
π 0 0
Γ (x)
0
gammah(x) ln Γ(x) dlgamma(x) Γ(x)

• Şiruri de numere
Progresia aritmetică introduce definind primul termen (a), raţtia (r şi o marginea
superioară sau inferioară (M ), după cum raţia este pozitivă sau negativă, prin sin-
taxa
a :r :M
Dacă parametrul r lipseşte atunci raţia este 1.

a=0.2:0.3:1
0.2 0.5. 0.8
b=1:-0.3:0
1. 0.7 0.4 0.1
10 CAPITOLUL 1. ELEMENTE DE PROGRAMARE ÎN SCILAB

Functia Scilab linspace(a, b, n) defineşte prograsia a + i b−a


n , i = 0, 1, . . . , n.
Un şir de numere (a i )1≤i ≤n se poate defini prin

1. i=1:n
a(i)=formula termenului general
2. a = [a 1 , a 2 , . . . , a n ],
unde a 1 , a 2 , . . . , a n sunt termenii şirului.

Indicele primului termen al unui şir este 1.

i=1:4
1 2 3 4
a(i)=i^2
1 4 9 16
b=[1,4,9,16]
a==b
T T T T

• Matrice

– Definirea unei matrice.


Exemplu: Matricea
µ ¶
1 2 3
a=
4 5 6
se defineşte în Scilab prin

a=[1,2,3;4,5,6]
Elementele unei linii se pot separa prin virgulă sau spaţiu. Elementele unei
matrice pot fi: constante/variabile numerice, constante booleene, şiruri de
caractere, polinoame, funcţii raţionale.
O progresie aritmetică, interpretat ca un vector linie (adică o matrice cu o
singură linie) se poate defini prin
prog=primulElement : pas : margine
Dacă pas=1 atunci parametrul poate fi omis.
Exemplu. Prograsiile aritmetice a = 0.2, 0.6, 1.0, 1.4, 1.8 şi b = 0, −1, −2, −3, −4
se obţin prin

a=0.2 : 0.4 : 2
a=
! 0.2 0.6 1.0 1.4 1.8 !
1.1. OBIECTE SCILAB 11

b=-1 : -1 : -4
b=
! -1 -2 -3 -4 !

Funcţia Scilab size(variabilaMatrice) returnează numărul liniilor şi numărul


coloanelor variabileiMatrice.
– Definirea unei matrice rară se face cu funcţia Scilab

a=sparse([l 1 , c 1 ; l 2 , c 2 ; . . .], [v 1 , v 2 , . . .])

unde a l i ,ci = v i . ∀i .
Funcţia full(a ) afişează o matrice rară a în formatul obişnuit.
– Matrice speciale.

* zeros(m, n) defineşte o matrice nulă cu m linii şi n coloane;


* ones(m, n) defineşte o matrice cu toate elementele egale cu 1 având m
linii şi n coloane;
* eye(m,n) defineşte o matrice unitate cu m linii şi n coloane;
* rand(m,n) defineşte o matrice cu m linii şi n coloane având ca elemente
numere (semi)aleatoare cuprinse între 0 şi 1.
– Selectarea unui element se obţine prin sintaxa

variabilaMatrice(numărLinie, numărColoană)

Prima linie şi prima coloană are numărul de ordine 1.


– Operatori matriceali.
Simbol Semnificaţie
+ adunare
- scădere
∗ înmulţire de matrice
.∗ înmulţire pe componente
ˆ ridicare la putere prin produs matriceal
.ˆ ridicarea la putere a componentelor
\ a\b = a −1 · b
bi , j
.\ a.\b = ( ai , j )i , j
/ b/a = b · a −1
bi , j
./ b/a = ( ai , j )i , j
’ transpunere

– Funcţii matriceale.
12 CAPITOLUL 1. ELEMENTE DE PROGRAMARE ÎN SCILAB

Mnemonic Semnificaţia
triu(A) Matricea superior triunghiulară a lui A
tril(A) Matricea inferior triunghiulară a lui A
diag(A) Vectorul cu elementele diagonale ale lui A
size(A) Şir cu dimensiunile lui A
length(A) Numărul elementelor lui A
max(A) Cel mai mare element al lui A
min(A) Cel mai mic element al lui A
– Extinderea unei matrice. Date fiind o matrice a şi un vector linie v

* adăugarea liniei v ca prima linie a matricei a se obţine prin

[v; a]

* adăugarea liniei v ca ultimă linie a matricei a se obţine prin

[a; v]

* adăugarea vectorului v ca prima coloană a matricei a se obţine prin

[v 0 , a]

* adăugarea vectorului v ca ultimă coloană a matricei a se obţine prin

[a, v 0 ]

– Extragerea unei submatrice. O zona compactă fixată prin liniile l 1 : l 2 şi


coloanele c 1 : c 2 , inclusiv, se extrage din matricea a prin

a(l 1 : l 2 , c 1 : c 2 )

Pentru extragerea unei zone necompacte – aflată la intersecţia liniilor l 1 , l 2 , . . . , l p


cu coloanele c 1 , c 2 , . . . , c q – dintr-o matrice a având m linii şi n coloane se de-
finesc vectori linie
½
%t dacă i ∈ {l 1 , . . . , l p }
l i n = (l i n i )1≤i ≤m , l i ni =
% f în caz contrar
½
%t dacă j ∈ {c 1 , . . . , c q }
col = (col j )1≤ j ≤n , col j =
%f în caz contrar
Extragerea rezultă din
a(l i n, col )
Comenzile a(:, $) şi a($, :) extrag din matricea a ultima coloană, respectiv ul-
tima linie.
1.1. OBIECTE SCILAB 13

• Polinoame şi funcţii raţionale


Scilab posedă o modalitate deosebită de lucru cu polinoame definite peste R 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 defineşte prin intermediul funcţiei Scilab poly

polinom=poly(vector, nedeterminată, [string])

Dacă vect or = (a 1 , a 2 , . . . , a n ) şi string=’coef ’ atunci se obţine polinomul de grad


n −1
pol i nom = a 1 + a 2 X + . . . + a n X n−1 ,
iar dacă string=’roots’ atunci se obţine polinomul de grad n

pol i nom = (X − a 1 )(X − a 2 ) . . . (X − a n )

A doua variantă este cea implicită.

v=[1,2,3];
p=poly(v,’X’)
p=
-6 + 11X - 6X^2 +X^3
q=poly(v,’X’,’coef’)
q=
1 + 2X + 3X^2

Dacă A este o matrice pătrată atunci poly(A, ’X ’) generează polinomul caracteris-


tic matricei A, adică det(X · I − A).
Dacă p şi q sunt două polinoame în nederminata X atunci p/q defineşte o funcţie
raţională.
Scilab efectuează operaţiile uzuale cu polinoame şi funcţii raţionale în mod sim-
bolic.
Dacă r este o funcţie raţională atunci r (’num’) furnizează numărătorul şi r (’den’)
furnizează numitorul lui r.
14 CAPITOLUL 1. ELEMENTE DE PROGRAMARE ÎN SCILAB

• Listă. O listă se defineşte prin

list(e 1 , e 2 , . . . , e n )

unde e i sunt obiecte Scilab.


Exemplu.

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

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


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

1.2 Elemente de programare in Scilab


• Instrucţiunea de atribuire

v ar i abi l a = expr esi e

• Instrucţiuni condiţionate
1.
if condiţie then
instrucţiuni
elseif condiţie then
instrucţiuni
else
instrucţiuni
end
2.
select expresie
case expr esi e 1 then instrucţiuni
..
.
1.3. FUNCŢII(SUBPROGRAME) ÎN SCILAB 15

else
instrucţiuni
end
case şi then trebuie scrise pe aceeaşi linie.

• Instrucţiuni de ciclare
1.
for n = n1 : pas : n2, instrucţiuni, end
Dacă pas = 1, atunci acest parametru este opţional.
2.
 
 , 
while condiţie do instrucţiuni, end
 
then
while şi do sau then trebuie scrise pe aceaşi linie.
Instrucţiunea break realizează un salt necondiţionat la prima instrucţiune aflată
după instrucţiunea de ciclare.
Pentru exprimarea condiţiilor se utilizează
Operatori relaţionali Operatori logici
Simbol Semnificaţie Simbol Semnificaţie
== = & şi
∼= 6 = | sau
<= ≤ ∼ negaţia
< <
>= ≥
> >

Fiecare instrucţiune introdusă în dreptul promptului Scilab este executată şi rezul-
tatul este afişat. Încheierea unei comenzi cu ; are ca efect inhibarea afişării.

1.3 Funcţii(subprograme) în Scilab


Funcţie definită în linie de comandă.

deff(’[y 1 , . . . , y n ]= f (x 1 , . . . , x m )’,[’y 1 = expr esi e 1 ’,. . .,’y n = expr esi e n ’])

O funcţie definită în linie de comandă se salvează

save(’cale\numeFişier.bin’, f )

Reîncărcarea se realizează prin


16 CAPITOLUL 1. ELEMENTE DE PROGRAMARE ÎN SCILAB

load(’cale\numeFişier.bin’)
Funcţii definite în exterior. Cu un editor de fişiere se crează subprogramul

function [y 1 , . . . , y n ]= f (x 1 , . . . , x m )
instructiuni Scilab
endfunction

care se salvează obligatoriu cu numele f .sce sau f .sci.


Pentru a putea fi utilizată funcţia exterioară trebuie încărcată prin

getf(’cale\ f .sce’,’c’)
Semnificaţia celui de al doilea parametru ’c’ este aceea că Scilab foloseşte în execuţie
o formă compilată a subprogramului. Dacă se utilizează ’n’ atunci codul subprogramului
este interpretat.
Funcţiile definite în exterior pot fi organizate în biblioteci. Astfel funcţiile Scilab –
deci având extensia .sci – aflate într-un catalog localizat prin cale sunt reunite într-o
bibliotecă prin comanda

genlib(’numeBibliotecă’,’cale’)
Prin această operaţie are loc compilarea funcţiilor şi crearea unui fişier names cu
cuprinsul bibliotecii.
O bibliotecă odată creată, resursele ei pot fi utilizate după reîncărcarea ei prin

numeBibliotecă=lib(’cale’)

1.4 Grafică în Scilab


1.4.1 Grafică 2D
Din mulţimea funcţiilor grafice ale produsului Scilab amintim

• plot2d. Cea mai simplă formă de utilizare este

plot2d(x, y)

unde
x 1,1 ... x 1,n y 1,1 ... y 1,n
   

x=  ... ... ...  y=  ... ... ... 


x m,1 ... x m,n y m,1 ... y m,n
sunt două matrice de acelaşi tip. Funcţia construieşte în acelaşi panou (fereastră
grafică) graficele a n curbe ce trec respectiv prin punctele

(x i , j , y i , j )1≤i ≤m , j ∈ {1, . . . , n}.


1.4. GRAFICĂ ÎN SCILAB 17

• fplot2d. Utilizarea funcţiei este

fplot2d(x, f )

unde

– x este un şir de numere reale;


– f este o funcţie Scilab

iar rezultatul este graficul funcţiei f construit pe baza valorilor ei în punctele lui x.

1.4.2 Grafică 3D
• plot3d(X,Y,Z)
Dacă suprafaţa este definită prin ecuaţiile parametrice

x = x(u, v) u ∈ [a, b]
y = y(u, v) v ∈ [c, d ]
z = z(u, v)

atunci reprezentarea se obţine prin definirea funcţiei

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

urmat de

getf(’. . .\suprafata.sce’,’c’)
[x,y,z]=sum(m,n);
plot3d(x,y,z)
Capitolul 2

Algebră liniară numerică

Cap. 1 Cap. 3

2.1 Factorizarea unei matrice


Funcţiile

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

• [Q, R, P ] = qr(A) calculează descompunerea QR a matricei A : Q 0 AP = R, P fiind o


matrice de permutări a coloanelor matricei A.

Exemplul 2.1 Să se calculeze factorizarea LU a matricei


 
1 2 −1 3 2

 2 4 −2 5 1 
A= −1 −2 1 −3 −4  .
 
 
 3 6 2 10 7 
1 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 =

0. 0. 0. 1. 0.

18
2.1. FACTORIZAREA UNEI MATRICE 19

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.6666667
0. 0. 3.3333333 - 3.3333333 1.6666667
0. 0. 0. - 2. 0.5
0. 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 Să se calculeze factorizarea QR a matricei

6 6 1
 

X = 3 6 1 
2 1 1

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

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

0. 1. 0.
1. 0. 0.
0. 0. 1.
R =

- 8.5440037 - 6.5543042 - 1.5215349


0. 2.4578641 0.4180041
0. 0. 0.7142857
Q =

- 0.7022469 0.5684856 - 0.4285714


- 0.7022469 - 0.6520864 0.2857143
- 0.1170411 0.5016049 0.8571429
20 CAPITOLUL 2. ALGEBRĂ LINIARĂ NUMERICĂ

-->X*P-Q*R

0. - 8.882D-16 3.331D-16
0. - 8.882D-16 1.110D-16
1.110D-16 0. 0.

2.2 Rezolvarea sistemelor algebrice de ecuaţii liniare


Pentru rezolvarea unui sistem algebric de ecuaţii liniare Ax = b, în cazul în care

• numărul ecuaţiilor coincide cu numărul necunoscutelor;

• determinantul sistemului este diferit de zero;

se procedează după cum urmează:

1. se fixează matricele A şi b;

2. se calculează x = A −1 b.

Expresia A −1 se poate introduce întocmai (Aˆ(-1)) sau se poate utiliza funcţia Scilab
inv( A ).
Funcţia Scilab det( A ) calculează determinantul matricei A.

Exemplul 2.3 Să se rezolve sistemul algebric de ecuaţii liniare




 x 1 + 2x 2 + 3x 3 + 4x 4 = 11

 2x + 3x + 4x + x
1 2 3 4 = 12

 3x 1 + 4x 2 + x 3 + 2x 4 = 13

 4x + x
1 2 + 2x 3 + 3x 4 = 14

Rezolvarea constă 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=
160
x=inv(A)*b
x=
! 2 !
! 1 !
! 1 !
! 1 !
2.2. REZOLVAREA SISTEMELOR ALGEBRICE DE ECUAŢII LINIARE 21

În general, pentru sistemul algebric de ecuaţii liniare Ax+b = 0, funcţia Scilab [x,k]=linsolve(A,b)
calculează

1. x – o soluţie particulară;

2. k – o bază a subspaţiului liniar Ker(A) = {x|Ax = 0}.

Soluţia sistemului Ax + b = 0 este x + kc unde c este un vector oarecare a cărui di-


mensiune coincide cu numărul coloanelor matricei k.
Dacă sistemul este incompatibil atunci rezultatele sunt egale cu matricea vidă [ ].

Exemplul 2.4 Să se rezolve sistemul algebric de ecuaţii liniare




 x1 + x2 + x3 + x4 = 2



 2x 1 − x2 + 2x 3 − x4 = 1
x1 + 2x 2 − x3 + 2x 4 = −1




 2x 1 + x2 + 4x 3 + x4 = 7
3x 1 + 2x 2 − 2x 3 + 2x 4 = −5

având soluţia x 1 = −1, x 2 = 1 − x 4 , x 3 = 2.


Scris matriceal, soluţia sistemului este

0
         
x1 −1 0 −1
−1
  p
 x2   1   −1   1   2

 0
= + c =  + c .
      
x3 2 0 2   0

       
x4 0 1 0 p1
2

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] ;
det(A)
ans=
0
[x,k]=linsolve(A,-b)
k =

- 5.551D-17
0.7071068
2.776D-16
- 0.7071068
x =

- 1.
22 CAPITOLUL 2. ALGEBRĂ LINIARĂ NUMERICĂ

0.5
2.
0.5

Observaţie. k aproximează vectorul de normă euclidiană 1

0
 
 p1 
 2
.

 0


−1
p
2

Notând cu u şi v cele două soluţii particulare puse în evidenţă mai sus
   
−1 −1
 1   0.5 
u=  v =
   
 2   2 

0 0.5

găsim  
0
 0.5  1
u−v =  = p k ∈ KerA
 
 0  2
−0.5
Capitolul 3

Rezolvarea sistemelor şi ecuaţiilor


algebrice

Cap. 2 Cap. 4

3.1 Rezolvarea sistemelor algebrice de ecuaţii neliniare


Pentru rezolvarea sistemului algebric de ecuaţii neliniare

 f 1 (x 1 , . . . , x n ) = 0
..................

f n (x 1 , . . . , x n ) = 0

sau scris sub formă concentrată f (x) = 0 cu

x1 f 1 (x 1 , . . . , x n )
   
 .  ..
x =  ..  f (x) =  ,
 
.
xn f n (x 1 , . . . , x n )

se utilizează funcţia Scilab

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


unde semnificaţia parametrilor este:

• x0 reprezintă o aproximaţie iniţială a soluţiei sistemului.

23
24 CAPITOLUL 3. REZOLVAREA SISTEMELOR ŞI ECUAŢIILOR ALGEBRICE

• f identificatorul funcţiei Scilab care defineţte sistemul neliniar


f (x) = 0.

• f j ac identificatorul funcţiei Scilab al jacobianului fincţiei f , adică


 ∂ f1 ∂ f1 
∂x 1 (x) ... ∂x n (x)
f j ac(x) =  ... ... ...
 

∂ fn ∂ fn
∂x 1 (x) ... ∂x n (x)

• t ol toleranţă, parametrul utilizat în testele de precizie (scalar real).

• x aproximaţia calculată a soluţiei sistemului algebric.

• y reprezintă valoarea funcţiei f calculată în x; y = f (x).

• i n f o indicatorul de răspuns al programului fsolve. În cazul rezolvării cu succes,


valoarea indicatorului este 1.

Astfel, rezolvarea constă din

1. definirea funcţei f (şi eventual al jacobianului f j ac);

2. apelarea funcţiei Scilab fsolve.

Exemplul 3.1 Să se rezolve sistemul algebric de ecuaţii neliniare

x 12

 10x 1 + − 2x 2 x 3 − 0.1 = 0
10x 2 − x 22 + 3x 1 x 3 + 0.2 = 0
x 32

10x 3 + + 2x 1 x 2 − 0.3 = 0

Rezolvarea constă 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)
info=
1.
q=
1.0E-15*
! - .2636780 !
! .2775558 !
! .9436896 !
3.2. REZOLVAREA ECUAŢIILOR ALGEBRICE 25

p=
! .0098702 !
! - .0200485 !
! .0299499 !

3.2 Rezolvarea ecuaţiilor algebrice


Dacă n = 1, adică dimensiunea spaţiului este 1, atunci f (x) = 0 cu f : I ⊂ R → R
reprezintă o ecuaţie algebrică.
Pentru rezolvarea ecuaţiilor algebrice se utilizează de asemenea funcţia Scilab fsolve.

Exemplul 3.2 Să se rezolve ecuaţia 2x = x 2 .

Rezolvarea ecuaţiei f (x) = 2x − x 2 = 0 este

deff(’y=f(x)’,’y=2.^x-x.^2’)
[x,y,info]=fsolve(1,f)
info
1.
y=
0.
x=
2.
sau cu precizarea derivatei funcţiei f (x)

deff(’y=df(x)’,’y=(2.^ x).*log(x)-2*x’)
[x,y,info]=fsolve(1,f,df)
info=
1.
y=
0
x=
2.
Dacă x0 = 5 atunci x = 4, iar pentru x0 = −1 găsim x = −0.7666647.
Graficul funcţiei f este reprezentat în Fig. 1.

3.3 Rezolvarea ecuaţiilor polinomiale


În cazul particular al ecuaţiilor polinomiale se cere determinarea tuturor rădăcinilor
reale sau complexe.
Pentru aflarea rădăcinilor unui polinom se procedează astfel:
26 CAPITOLUL 3. REZOLVAREA SISTEMELOR ŞI ECUAŢIILOR ALGEBRICE

Fig. 1.

1. Se defineşte polinomul Scilab p de variabilă x.

2. Rădăcinile polinomului p sunt calcutate ajutorul funcţiei Scilab

x=roots(p)

unde

• p este polinomul Scilab cu coeficienţi reali sau complecşi de grad cel mult
100.
• x este un tablou cu rădăcinile polinomului p.

Exemplul 3.3 Să se determine rădăcinile polinomului p = x 4 + 2x 3 + 3x 2 + 2x + 1.

Rezolvarea constă din:

c=[1,2,3,2,1];
p=poly(c,’x’,’coef’);
3.3. REZOLVAREA ECUAŢIILOR POLINOMIALE 27

x=roots(p)
x=
! - .5 + .8660254i !
! - .5 - .8660254i !
! - .5 + .8660254i !
! - .5 - .8660254i !
Capitolul 4

Rezolvarea problemelor de
interpolare

Cap. 3 Cap. 5

Fie F o familie interpolatoare de ordin n pe axa reală. Dându-se nodurile (x i )1≤i ≤n


şi numerele (y i )1≤i ≤n , dacă ϕ ∈ F este funcţia de interpolare care satisface condiţiile
ϕ(x i ) = y i , 1 ≤ i ≤ n, se cere să se calculeze ϕ(z), unde z este un punct dat.

4.1 Interpolare polinomială


Pentru F = P n−1 soluţia problemei de interpolare Lagrange este polinomul
n n z −x
X Y j
L(P n−1 ; x 1 , . . . , x n ; y 1 , . . . , y n )(z) = yi
i =1 j =1 xi − x j
j 6=i

Valoarea acestui polinom este calculat de funcţia Scilab

function f=lagrange(xd,x,y)
[mx,nx]=size(x);
[my,ny]=size(y);
ierror=0;
if (nx~=ny)|(mx~=1)|(my~=1),

28
4.1. INTERPOLARE POLINOMIALĂ 29

ierror=1;
disp(’data dimension error’)
abort
end
xx=sort(x);
for k=1:nx-1,
if xx(k)==xx(k+1),
ierror=1;
break,
end
end
if 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
end
end
for 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);
end
f(i,j)=p(i,j)/q(i,j);
end
end
end
endfunction
30 CAPITOLUL 4. REZOLVAREA PROBLEMELOR DE INTERPOLARE

Semnificaţiile parametrilor formali şi a rezultatului sunt:

• xd este o matrice de numere. În fiecare element al matricei xd se calculează val-


oarea polinomului de interpolare Lagrange.

• x = (x i )1≤i ≤n , şirul nodurilor de interpolare;

• y = (x i )1≤i ≤n , şirul valorilor interpolate;

• f este o matrice de aceleaşi dimensiuni ca xd şi are ca elemente valorile polinomu-


lui de interpolare Lagrange calculate în elementele corespunzătoare ale matricei
xd .

Programul de mai sus, pentru calculul valorii polinomului de interpolare Lagrange,


foloseşte formula baricentrică.

Exemplul 4.1 Să se calculeze L(P n ; x 0 , . . . , x n ; f )(z) pentru

f (x) = x 2
xi = i , i ∈ {0, 1, . . . , 5}
z = 0.5, 3, 5, 10

Rezolvarea este:

deff(’y=fct(x)’,[’y=x^2’])
getf(’c:\lucru\scilab\lagrange.sci’,’c’)
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 funcţii spline cubice


Dacă F = S 3 , mulţimea funcţiilor spline cubice atunci pentru rezolvarea problemei
de interpolare utilizăm funcţiile Scilab

1. d=splin(x,y);

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

Semnificaţia parametrilor este


1 Parantezele pătrate nu fac parte din sintaxă. Ele arată caracterul opţional al elementelor cuprinse între

ele.
4.2. INTERPOLARE CU FUNCŢII SPLINE CUBICE 31

• x = (x i )1≤i ≤n , şirul nodurilor de interpolare;

• y = (x i )1≤i ≤n , şirul valorilor interpolate;

• d parametri funcţiei spline cubice de interpolare;

• xd este o matrice de numere. În fiecare element al matricei xd se calculează val-


oarea funcţiei spline cubice de interpolare.

• f 0, f 1, f 2, f 3 sunt matrice de aceleaşi dimensiuni ca xd şi au ca elemente valorile


funcţiei spline cubice de interpolare şi respectiv a derivatelor de ordinul 1, 2 şi 3,
calculate în elementele corespunzătoare ale matricei xd .

Exemplul 4.2 Să se calculeze valorile funcţiei spline cubice de interpolare şi ale derivatelor
sale de ordin 1, 2, 3 pentru datele de interpolare

f (x) = x 3
xi = i , i ∈ {0, 1, . . . , 5}
z = 0.5, 3, 5, 10

Rezolvarea constă 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

Construirea unei funcţii


de aproximare prin metoda
celor mai mici pătrate

Cazul liniar. Determinarea unui polinom de aproximare construit prin metoda celor
mai mici pătrate de grad m pentru datele (x i , y i )1≤i ≤n (m << n) se obţine cu ajutorul
funcţiei

coef =lq(m,x,y)

unde

• coe f – sunt coeficienţii polinomului de aproximare;

• m – gradul polinomului de aproximare;

• x, y – doi vectori linie cu absisele şi respectiv, cu ordonatele datelor problemei de


aproximare.

Textul sursă al funcţiei lq este

32
33

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
end
u=zeros(m+1,nx);
for i=1:m+1,
for j=1:nx,
u(i,j)=x(j)^(i-1);
end
end
coef=(u*u’)^(-1)*u*y’;
endfunction

Exemplul 5.1 Să se calculeze polinoamele de aproximare de grad unu şi doi, constituite
prin metoda celor mai mici pătrate, pentru datele (x i , y i )0≤i ≤20 unde x i = −2+0.2i , y i =
f (x i ), f (x) = |x|. Să se reprezinte grafic funcţiile astfel obţinute.

x=-2:0.2:2;
y=abs(x);
c1=lq(1,x,y)
c1=
! 1.047619 !
! 0. !
c2=lq(2,x,y)
c2=
! .3883622 !
! 0. !
! .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’)
Astfel, polinoamele de aproximare de gradul întâi şi doi sunt

p 1 (x) = 1.047619
34 CAPITOLUL 5. METODA CELOR MAI MICI PĂTRATE

şi respectiv
p 2 (x) = 0.3883622 + 0.4494933x 2

Graficele celor trei funcţii sunt

Cazul neliniar.
Pentru determinarea funcţiei de aproximare y = ϕ(t , x 1 , . . . , x n ) care minimizează ex-
presia
m
Φ(x 1 , . . . , x n ) = [ϕ(t i , x 1 , . . . , x n ) − y i ]2
X
(5.1)
i =1

cu metoda Gauss-Newton se utilizează funcţia Scilab leastsq:


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

unde

• x0 este aproximaţia iniţială a parametrilor;

• f ct defineşte termenii din suma (5.1);

• d f c t este jacobianul funcţiei f c t ;


35

• f opt valoarea funcţiei Φ calculată în xopt ;

• xopt valoarea optimă găsită a parametrilor x;

• g opt gradientul funcţiei Φ calculată în xopt .

Exemplul 5.2 Să se calculeze funcţia de aproximare de forma y = ae bt în cazul datelor

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

Definim funcţiile Scilab

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

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

Rezolvarea este

x=[2.5,-0.5];
[fopt,xopt,gopt]=leastsq(list(fct,t’,y’),x)
gopt =

0. 0.
xopt =

2. - 1.
fopt =

0.

Gradientul funcţiei f ct este

function u=dfct1(x,t,y)
s=exp(x(2)*t);
u=[s,x(1).*t.*s];
endfunctiont
36 CAPITOLUL 5. METODA CELOR MAI MICI PĂTRATE

Metoda Levenberg-Marquardt este implementată de funcţia scilab lsqrsolve:


[xopt [,v]]=lsqrsolve(x0,fct,m)
[xopt [,v]]=lsqrsolve(x0,fct,m,dcft )

unde

• x0 este aproximaţia iniţială a parametrilor;

• f ct defineşte termenii din suma (5.1);

• m reprezintă numărul termenilor din suma (5.1);

• d f c t este jacobianul funcţiei f c t ;

• xopt valoarea optimă găsită a parametrilor x;

• v valoarea fiecărui termen din suma (5.1) calculată în xopt .

Rezolvarea exemplului anterior cu metoda Levenberg-Marquardt constă din definirea


funcţiilor f1.sce, data.sce şi fctlm.sce:

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

function y=fctlm(x,m)
getf("e:\scilab\data.sce",’c’);
getf("e:\scilab\f1.sce",’c’);
[t,y]=data(m);
y=f1(x,t)-y;
endfunction

şi

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

1.0D-16 *

1.110223
0.5551115
0.2775558
0.0693889
37

0.0346945
0.0086736
xopt =

2. - 1.
Capitolul 6

Integrare numerică

Cap. 5 Cap. 7

6.1 Integrarea numerică a funcţiilor


de o variabilă reală
Pentru calculul integralei
Z b
I= f (x)dx
a

unde : [a, b] → R este o funcţie continuă, Scilab oferă mai multe programe:

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


unde:

– x valuarea calculată a integralei;


– exp este expresia funcţiei de integrat, dat ca un şir de caractere;
– var este variabila de integrare dat ca string;
– a extremitatea stângă a intervalului de integrare;
– b extremitatea dreaptă a intervalului de integrare;
– ea, er reprezintă o eroare absolută şi o eroare relativă. Precizând aceşti parametri,
regula de oprire a programului este |x − I | ≤ max{ea, er · |I |}.

38
6.1. INTEGRAREA FUNCŢIILOR DE O VARIABILĂ REALĂ 39

Exemplul 6.1 Să se calculeze integralele:


Z 1
1. 16 ∗ x 15 dx
0
π
sin(x)
Z
2
2. dx
0 x

Rezolvările 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 calculată a integralei;


– er r valoarea estimată a erorii absolute;
– a extremitatea stângă a intervalului de integrare;
– b extremitatea dreaptă a intervalului de integrare;
– f identificatorul funcţiei Scilab de integrat;
– ea, er reprezintă o eroare absolută şi o eroare relativă. Precizând aceşti parametri,
regula de oprire a programului este |x − I | ≤ max{ea, er · |I |}.

Utilizând intg, integralele exemplului anterior se calculează astfel:


1.

deff(’y=f(x)’,’y=16*x.^15’)
[x,err]=intg(a,b,f)
err=
1.110 E-14
x=
1.
40 CAPITOLUL 6. INTEGRARE NUMERICĂ

2.

deff(’y=g(x)’,’if x==1 then y=1; else y=sin(x)/x; end’)


[x,err]=intg(0,%pi/2,g)
err=
1.522 E-14
x=
1.3707622

Dacă f (x, p 1 , p 2 , . . .) este o funcţie Scilab având pe prima poziţie variabila de integrare
atunci

intg(a,b,list( f , p 1 , p 2 , . . .))

calculează integrala
Z b
f (x, p 1 , p 2 , . . .)dx
a

6.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 ZZ
f c t (x, y)dxdy
D

este calculată de programul [y, er ]=integr(c al e, t ol ). Semnificaţia parametrilor formali


este:

• cal e – calea la catalogul care conţine subprogramene (funcţiile) necesare progra-


mului: init, tab, integ2, prodscal, fct, datas, finf, fsup;

• t ol toleranţa utilizată în regula de oprire;

• y – valoarea calculată a integralei duble;

• er – indicatorul de răspuns:

– 0 – integrala s-a calculat cu succes;


– 1 – nu s-a îndeplinit condiţia de convergenţă în 10 iteraţii.

Textele sursă ale programelor sunt


6.2. CALCULUL NUMERIC AL INTEGRALELOR DUBLE 41

function [y,er]=integr(cale,tol)
getf(cale+’\datas.sci’,’c’)
getf(cale+’\init.sci’,’c’)
getf(cale+’\finf.sci’,’c’)
getf(cale+’\fsup.sci’,’c’)
getf(cale+’\fct.sci’,’c’)
getf(cale+’\tab.sci’,’c’)
getf(cale+’\prodscal.sci’,’c’)
getf(cale+’\integ2.sci’,’c’)
n=3;
u=init(n);
old=integ2(u);
nmi=10;
cont=0;
ni=0;
while cont==0 do
ni=ni+1;
v=tab(u);
new=integ2(v);
nrm=abs(new-old);
old=new;
u=v;
if nrm<tol,
cont=1;
er=0;
else
er=1;
if ni==nmi,cont=1;,end,
end
end
y=new;
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;
42 CAPITOLUL 6. INTEGRARE NUMERICĂ

for i=1:n+1,
y=fi+(i-1)*hy;
u(i,j)=fct(x,y);
end
end
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);
end
x=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);
end
end
for j=1:m-1,
x=a+(j-0.5)*hx;
fi=finf(x);
fs=fsup(x);
hy=(fs-fi)/(m-1)/2;
for i=1:2*n-1,
y=fi+hy*(i-1);
v(i,2*j)=fct(x,y);
end
end
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);
6.2. CALCULUL NUMERIC AL INTEGRALELOR DUBLE 43

if n==3,
c(2)=4;
else
n0=(n-1)/2;
for j=1:n0,
c(2*j)=4;
end
for j=1:n0-1,
c(2*j+1)=2;
end
end
for 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;
end
z=prodscal(c,w)*hx/3;
endfunction

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

Utilizatorul trebuie să precizeze datele problemei în subprogramele datas, fct,


finf, fsup.
RR
Exemplul 6.2 Să se calculeze D x ydxdy unde domeniul D este delimitat de curbele y =
p
x 2 şi y = x.

În acest caz se definesc funcţiile:

function [a,b]=datas()
a=0;
b=1;
endfunction
44 CAPITOLUL 6. INTEGRARE NUMERICĂ

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 finală este

getf(’c:\lucru\scilab\integr.sci’,’c’)
[y,er]=integr(’c:\lucru\scilab’,1.e-6)
er=
0.
y=
.0833333
Part II

MathCAD

45
Capitolul 7

Prezentare generală

Cap. 6 Cap. 8

MathCAD este un produs informatic comercial destinat rezolvării problemelor de


calcul numeric, cu posibilitatea documentării şi a reprezentării grafice plane şi spaţiale.
MathCAD permite atât programare funcţională, adică prin compunerea funcţiilor,
cât şi programare procedurală, fiind înzestrat cu o paletă de programare eficientă.
MathCAD oferă posibilitatea de calcul simbolic, înglobând o bibliotecă Maple de
funcţii simbolice.
MathCAD utilizează notaţia matematică obişnuită.
Produsul are un editor propriu. Simbolurile operatorilor şi ale funcţiilor se pot in-
troduce fie prin intermediul paletelor, fie prin codurile ataşate. Tot ceea ce se introduce
conduce la formarea unui document MathCAD.
Într-un document MathCAD orice definiţie, ecuaţie, text-comentariu sau reprezentare
grafică ocupă un spaţiu numit regiune. Regiunile sunt disjuncte două câte două. Proce-
sul de calcul constă în evaluarea regiunilor Şi are loc de sus în jos, jar pe nivel orizontal
de la stânga spre dreapta. Regiunile pot fi vizualizate prin clic pe butonul View/Region,
care funcţionează în regim "aprins/stins".
Un calcul se poate opri forţat prin butonul Esc.

46
7.1. EFECTUAREA CALCULELOR NUMERICE 47

Figure 7.1: Ecran MathCAD

7.1 Efectuarea calculelor numerice


7.1.1 Operatori MathCAD
Operatori de definire şi evaluare

1. Operatorul de atribuire / definire :=


Se obţine tastând : sau prin alegerea din panoul Evaluation Toolbar.
Sintaxa este:
variabilă := expresie
funcţie(listă de variabile) := expresie

Exemplul 7.1
a := 1
f (x) := 1 − x 2

2. Operatorul de afişare / calcul =


Sintaxa este:
variabilă =
funcţie(variabile) =
expresie =

Exemplul 7.2
x := 3 x =3
h(x) := 5x 3 − 2 h(0) = −2
7 + 3 · x = 14
48 CAPITOLUL 7. PREZENTARE GENERALĂ

3. Operatorul de definire globală ≡


Se obţine tastând Shift+˜sau prin panoul Evaluation Toolbar. Sintaxa este:
parametrul MathCAD ≡ expresie
Operatorul de definire globală permite fixarea sau modificarea unor parametrii
MathCAD la nivel global, adică având domeniul de valabilitate întregul document.

7.1.2 Identificatori MathCAD


Identificatorii MathCAD, adică numele dat variabilelor, constantelor şi funcţiilor, pot
conţine oricare din următoarele caractere:

• litere latine mari şi mici; se face distincţie între literele mari şi mici;

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

• litere greceşti : α, β, . . . , ω. Aceste litere se obţin din panoul Greek;

• caractere speciale: _ (linie de subliniere),% (procent), ∞ (simbolul infinit), ‘ (a nu


se confunda cu apostrogul ’), . (punctul – simbolurile care urmează sunt interpre-
tate de MathCAD ca indice literal).

Exemplul 7.3
a1_2 α _i nd %p
_pr esi unea ∞const a .bcd a‘b

7.1.3 Constante MathCAD


MathCAD recunoaşte câteva constante uzuale: π, e - baza logaritmului natural, ∞ -
infinit, i (sau j ) - unitatea imaginară. Pe lângă aceste constante mai există şi o serie de
constante sistem predefinite (globale):

• TOL a cărei valoare implicită este 0.001 şi care reprezintă toleranţa utilizată în
testele de convergenţa.

• CTOL a cărei valoare implicită este 0.001 şi care reprezintă toleranţa de constrân-
gere şi care controlează restricţiile din cadrul unui bloc de rezolvare a sistemelor
de ecuaţii.

• ORIGIN cu valoare implicită egală cu zero reprezintă valoarea indicelui primului


element al unui vector sau al unei matrice.

• CWD reţine într-un şir de caractere calea directorului curent.


7.1. EFECTUAREA CALCULELOR NUMERICE 49

7.1.4 Tipuri de date MathCAD


MathCAD utilizează variabile având următoarele tipuri de date:

1. Variabilă numerică reală sau complexă


Pentru a defini o variabilă:

• se tastează numele variabilei;


• se tastează operatorul de definiţie;
• se introduce expresia care defineşte variabila.

Exemplul 7.4 Pentru a calcula valoarea expresiei y = x 2 − 3x + 2 în punctul 0.5 se


defineşte

x := 0.5 y := x 2 − 3 · x + 2
Rezultatul se obţine tastând y, =.
y = 0.75

O constantă numerică întreagă se poate defini în baza 10, 8 sau 16. Dacă reprezentarea
se face în baza 8, numărul va fi urmat de de litera o sau O(de exemplu 15o), iar în
cazul bazei hexazecimale numărul va fi urmat de litera h sau H(de exemplu A1Eh).
Pentru a defini o constantă complexă se utilizează forma algebrică a + bi . În locul
lui i se poate folosi ca unitate imaginară şi j. Pentru a defini unitatea imaginară se
tastează 1i sau 1j.
Operatorii algebrici uzuali sunt

Operator algebric Se obţine tastând


+ (adunare) +
− (scădere) −
· (înmulţire) ∗
/ (împărţire) /
ˆ(ridicare la putere) ˆ

2. Variabilă domeniu : progresie aritmetică


O variabilă domeniu este o progresie aritmetică. Definirea unei progresii aritmet-
ice se face prin:
variabilă_domeniu :=val_ iniţială, val_următoare .. margine
Elementele folosite în definiţia de mai sus, respectiv valoarea iniţială, valoarea ur-
mătoare şi margine a pot fi constante, variabile sau expresii. Raţia progresiei este
egală cu
50 CAPITOLUL 7. PREZENTARE GENERALĂ

val_următoare - val_iniţială.

Pentru a obţine .. se tastează ; .

Exemplul 7.5 x := 0, 0.9..4 defineşte progresia aritmetică

x=

0
0.9
1.8
2.7
3.6

Dacă în sintaxa de definire a unei variabile de tip domeniu lipsesc virgula şi val_următoare,
raţia progresiei aritmetice este

sgn(val_finală-val_initială).

Exemplul 7.6 Şirurile i := 0.5..3 şi j := 5..2.5 definesc următoarele progresiile arit-
metice

i= j=
0.5 5
1.5 4
2.5 3

3. Variabilă indice
O variabilă domeniu ale cărei valori sunt numere naturale consecutive se numeşte
variabilă indice.

Exemplul 7.7 Pentru a defini un indice k ale cărui valori să fie succesiv 2, 3, 4, 5, se
editează k : 2 ; 5 rezultând k := 2..5

4. Şir
Prin intermediul unei variabile indice se poate defini un şir oarecare prin sintaxa:
variabila_sir v ar i abi l a _i nd i ce := expresie.
Pentru a scrie indicele, după numele variabilei de tip sir se tastează [ .

Exemplul 7.8 Pentru variabila k definită în exemplul anterior definim şirul x k =


k 2 astfel:
7.1. EFECTUAREA CALCULELOR NUMERICE 51

x k := k 2
Vizualizăm rezultatul prin
 
0
xk =
 0 
  4
 4 
x =  sau 9
 
 9 
  16
 16 
25
25

Şirul astfel obţinut conţine pe primele două poziţii valoarea 0 deoarece respec-
tivele poziţii nu au fost definite.
Funcţii uzuale aplicabile unui şir a = (a i )i ∈I

Apelare Semnificaţie
length(a) Numărul elementelor şirului
last(a) Indicele ultimului element
max(a) Cel mai mare element al şirului
min(a) Cel mai mic element al şirului
|a| Norma euclidiană a şirului

5. Tablouri : vectori şi matrice


MathCAD permite definirea matricelor şi are prevăzute operaţiile uzuale de calcul
matriceal. Vectorii de dimensiune n se consideră matrice cu n linii şi o coloană.
Pentru a introduce o matrice în documentul curent se selectează din meniul Insert/Matrix
sau prin paleta Matrix. Ca urmare, pe ecran apare o fereastră de dialog în care se
completează numărul de linii, respectiv de coloane corespunzătoare matricei ce
se doreşte a fi inserată. După precizarea dimensiunilor matricei, toate poziţiile
marcate se vor completa cu expresii sau numere, trecerea de la o poziţie la alta
făcându-se prin apăsarea tastei Tab. Această metodă de definire a unei matrice
este o metodă explicită. Vorbim de o metodă implicită de definire a unei matrice
în cazul în care există o formulă de legătura între indici şi elementele din matrice.
Într-un tablou valoarea iniţială a indicilor este 0. Dacă dorim ca valoarea iniţială a
indicilor să fie 1, trebuie să atribuim parametrului ORIGIN valoarea 1. Aceasta se
obţine prin definiţia globală OR IG I N ≡ 1.
Referirea unui element al unui tablou se face indicând numele tabloului (variabila)
urmat de indicii elementului separaţi prin virgulă. Trecerea la indicarea indicelor
se obţine prin tasta [.

Exemplul 7.9
52 CAPITOLUL 7. PREZENTARE GENERALĂ

Dacă
j
i := 0..3 j := 0..3 X i , j := i 2 +
2
atunci se obţine
 
0 0.5 1 1.5
 1 1.5 2 2.5 
X =
 
4 4.5 5 5.5

 
9 9.5 10 10.5

Exemplul 7.10

Dacă µ ¶
1 3
A :=
2 4

atunci
A 0,0 = 1 A 0,1 = 3 A 1,0 = 2 A 1,1 = 4

Pentru a defini şiruri de vectori se utilizează indici superiori. Un indice superior se


obţine tastând Ctrl+6 sau prin paleta Matrix M <T > .

Exemplul 7.11

Fie µ ¶ µ ¶
1 1 0
u <0> = A=
2 2 −1

Pentru i := 0..4 calculăm


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

obţinând
µ ¶ µ ¶
<4> 1 <5> 1
u = u =
2 0

iar µ ¶
1 1 1 1 1 1
u=
2 0 2 0 2 0

u 1,4 = 2 u 0,4 = 1

Dacă M este o matrice, expresia M <i > desemnează coloana i a matricei M .


Operatori matriceali
7.1. EFECTUAREA CALCULELOR NUMERICE 53

Operator algebric Se obţine tastând


+ (adunare) +
− (scădere) −
· (înmulţire) ∗
ˆ(ridicare la putere) ˆ

Funcţii uzuale aplicabile (operatori aplicabili) unei matrice A = (a i , j )i ∈I , j ∈J

Apelare Semnificaţie
rows(A) Numărul liniilor matricei
cols(A) Numărul coloanelor matricei
tr(A) urma matricei
AT transpusa matricei
|A| determinantul matricei
A −1 inversa matricei
rank(A) rangul matricei
P
norm1(A) norma Minkovski, max j i |a i , j |
q
norm2(A) norma euclidiană, max eigenvals(a T · a)
qP
2
norme(A) norma Frobenius, i , j ai , j
P
normi(A) norma Cebîşev, maxi j |a i , j |

6. Funcţii

MathCAD posedă o bogată familie de funcţii predefinite şi oferă posibilitatea definirii
de funcţii noi conform sintaxei

numeFunctie(ar g 1 , ar g 2 , . . .) := expresie

Funcţii numerice uzuale aplicabile aplicabile unui număr real sau complex x
54 CAPITOLUL 7. PREZENTARE GENERALĂ

Apelare Semnificaţie
sin(x) sin x
cos(x) cos x
tan(x) tgx
cot(x) ctgx
asin(x) arcsin(x)
acos(x) arccos(x)
atan(x) arctg(x)
sinh(x) shx
cosh(x) chx
tanh(x) thx
asinh(x) arcsh(x)
acosh(x) arcch(x)
atanh(x) arcth(x)
exp(x) ex
log(x) lg(x)
ln(x) ln(x)

7.1.5 Vectorizare
Să presupunem că o funcţie f (x, y) trebuie aplicată succesiv unui sistem de variabile
(x i , y i )1≤i ≤n , obţinând z i = f (x i , y i ), i ∈ {1, 2, . . . , n}.. MathCAD oferă posibilitatea efec-
tuării acestor calcule prin vectorizare, un procedeu care este multmai rapid decât prin
folosirea indecşilor. Sintaxa utilizată este

x1 y1
   
 .   .  −−−−→
x :=  ..  y :=  ..  z = f (x, y)
xn yn

Operatorul de vectorizare se obţine tastând Crtl + - fie din paleta Matrix cu cur-
sorul MathCAD plasat pe relaţia de calcul.

Exemplul 7.12 Rezolvarea ecuaţiilor de gradul doi având coeficienţii


     
1 3 2
 1   2   1 
a :=  b :=  c := 
     
1 1 1
  
     
1 0 4

Formulele
−−−−−−
p−−−−−−−−−→ −−−−−−
p−−−−−−−−−→
−b + b 2 − 4 · a · c −b − b 2 − 4 · a · c
x := y :=
2·a 2·a
7.1. EFECTUAREA CALCULELOR NUMERICE 55

produc rezultatele
   
−1 −2
 −1   −1 
x = y =
   
−0.5 + 0.866i −0.5 − 0.866i
 
   
2i −2i

7.1.6 Unităţi de măsură


Variabilele MathCAD pot reprezenta mărimi fizice, în care caz valoarea numerică
este urmată de o unitate de măsură. MathCAD dispune de un set complet de unităţi de
măsură predefinite. Pentru a asocia unui număr sau unei expresii o unitate de măsură
se foloseşte semnul de înmulţire după număr sau expresie apoi a se scrie explicit uni-
tatea dorită. Sunt recunoscute majoritatea unităţilor prin forma lor abreviată. Implicit
MathCAD foloseşte unităţile din Sistemul Internaţional (SI). Acest lucru înseamnă că la
folosirea semnului egal un rezultat ce conţine şi unităţi de măsură va fi afişat în termenii
unităţilor de bază sau derivate ale SI. Pentru orice expresie care implică unităti de mă-
sură MathCAD efectuează verificări de consistenţă. Dacă se încearcă efectuarea sumei
sau diferenţei între valori incompatibile din punct de vedere al unităţilor de măsură se
va afişa un mesaj de eroare.
De asemenea pe lânga (SI) sunt disponibile şi alte sisteme de unităţi de măsură: CGS,
U.S. şi MKS. Fiecare dintre aceste standarde constituie un tabel ce conţine unităţile de
bază specifice şi unităţile ce măsoară:

unghiuri şi lungimi masa şi timp arii şi volume


viteze şi acceleraţii forţe, energii şi puteri presiuni şi vâscozităţi
electricitate frecvenţa temperatura

Alegerea / schimbarea sistemulul de unităţi de măsură se face prin meniul Tools/Worksheet


options.../Unit system.

Exemplul 7.13 Să se calculeze mărimea forţei ce acţionează asupra unui corp de masa 5
kg şi căreia îi imprimă o acceleratie de 2 m
s2
.

m
masa := 5 · kg acc := 2 · F := masa · acc
s2
F = 10N

Transformarea unităţilor

Pentru transformarea unei mărimi dintr-un sistem în altul este suficientă cunoaşterea
notaţiilor unităţilor respective în cele două sisteme. Transformarea se face prin:

1. tastarea mărimii şi a unităţii de măsură corespunzătoare;


56 CAPITOLUL 7. PREZENTARE GENERALĂ

2. a operatorul de afişare / calcul (=) ;

3. în poziţia marcată se introduce noua unitatea de măsură;

4. clic în afara regiunii de lucru.

1 · m = 1 × 103 mm

Definirea altor unităţi de măsură

Se pot defini unităţi de măsură noi prin

1. se tastează numele noii unităţi de măsură;

2. operatorul de atribuire (:=);

3. definiţia noii unităţi de măsură.

Exemplul 7.14

1
g := · kg 3 · kg = 3 × 103 g
1000
mi n := 60 · s h := 60 · mi n 1 · h = 3.6 × 103 s

7.2 Reprezentări grafice


Prin intermediul paletei Graph sau prin meniul Insert/Graph, se pot realiza urmă-
toarele reprezentări grafice

• X-Y Plot – Reprezentare grafică 2D în coordonate carteziene. Comanda se poate da


şi prin combinaţia de taste Shift+2 (@).

• Polar Plot – Reprezentare grafică 2D în coordonate polare. Comanda se poate da şi


prin combinaţia de taste Ctrl+7.

• Surface plot – Reprezentare grafică 3D în coordonate carteziene. Comanda se poate


da şi prin combinaţia de taste Ctrl+2.

• Contur Plot – Reprezentare prin linii de nivel Comanda se poate da şi prin combi-
naţia de taste Ctrl+5.

• 3D Bar Plot

• 3D Scatter Plot

• Vector Field Plot


7.2. REPREZENTĂRI GRAFICE 57

Reprezentarea grafică 2D în
coordonate carteziane

Să presupunem că dorim să reprezentam funcţia x → f (x). După definirea funcţiei,
în urma comenzii de realizare a reprezentării grafice apare un cadru cu două poziţii mar-
cate, care se completeză cu x (pe axa orizontală) şi respectiv f (x) (pe axa verticală). În
cadru apar, corespunzător fiecărei axe, alte două poziţii marcate, pentru fixarea inter-
valelor. Completarea acestor poziţii marcate este opţională. Un clic în afara cadrului sau
Enter declanşează realizarea reprezentării grafice.

f (x)

MathCAD permite reprezentarea funcţiilor cunoscute prin valori discrete:


(x i , y i )1≤i ≤n , y i = f (x i ), ∀i . În acest caz cele două poziţii marcate iniţiale se completează
cu x i şi respectiv y i .
Pentru a obţine în acelaşi cadru reprezentarea grafică pentru mai multe funcţii, se
introduc variabilele şi funcţiile separate prin virgulă.

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

x, x, y

Reprezentarea grafică 2D în
coordonate polare

Dacă curba are ecuaţia polară r = r (t ) atunci în urma comenzii de realizare a reprezen-
tării grafice apare un cadru cu două poziţii marcate, care se completeză cu t şi respectiv
r (t ). În cadru apar alte două poziţii marcate, pentru fixarea intervalului în care variază t ..
Completarea acestor poziţii marcate este opţională. Un clic în afara cadrului sau Enter
declanşează realizarea reprezentării grafice.
58 CAPITOLUL 7. PREZENTARE GENERALĂ

'$ '$
r (t )

&% &%
t

Formatarea graficelor 2D
MathCAD realizează reprezentările grafice cu o serie de parametri impliciţi. Aceste
setări pot fi schimbate de utilizator şi de asemenea se pot adăuga titluri şi etichete. Pen-
tru a formata o zonă grafică se execută dublu clic pe zona respectivă sau se selectează
zona grafică şi apoi din meniul Format/Graph/X-Y Plot sau Polar Plot. În urma acţi-
unii executate se deschide o fereastră de dialog prin intermediul căreia se poate modifica

• Natura axelor de coordonate;

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

• Culoarea de desenare.

Reprezentare grafică 3D în
coordonate carteziene

Reprezentare grafică prin linii de nivel

Reprezentare grafică 3D Bar

Reprezentare grafică 3D Scatter

Reprezentare grafică Vector Field

7.3 Crearea unei animaţii


Prin intermediul variabilei predefinite FRAME pot fi create şi apoi rulate scurte clipuri
animate. Orice obiect MathCAD care poate fi făcut să depindă de variabila FRAME poate
fi animat. Sunt incluse aici nu numai punctele din grafice ci şi rezultatele numerice.
Clipurile animate pot fi rulate la diverse viteze şi de asemenea pot fi salvate pentru a fi
apoi rulate în cadrul altor aplicaţii.
Pentru realizarea unei animaţii în MathCAD trebuie urmaţi paşii:

1. Se defineşte o expresie care depinde de valoarea variabilei FRAME;

2. Se selectează opţiunea Record din meniul Tools/Animation;


7.4. EDITARE DE TEXT 59

3. După deschiderea căsuţei de dialog se selectează din foaia de lucru regiunea ce se


doreşte să apară în animaţie;

4. În cadrul căsuţei de dialog se fixează limitele inferioară, respectiv superioară a vari-


abilei FRAME, precum şi viteza de rulare (numărul de cadre pe secundă);

5. Se porneşte animaţia prin apăsarea butonului Animate.

O animaţie creată poate fi salvată ca fişier .avi şi poate fi vizualizat şi independent de
MathCAD. Pentru aceasta se selectează butonul Save as din cadrul căsuţei de dialog.
Pentru a rula în MathCAD un fişier avi existent din meniul Tools/Animation se alege
opţiunea Playback.

Exemplul 7.15 În intervalul [−1, 1], să se transforme graficul funcţiei g (x) = x în f (x) =
x 2 prin efectul "morphing".

Astfel definim

f (x) := x 2 g (x) := x M axF R AM E := 60

F R AM E F R AM E
h(x) := · f (x) + (1 − ) · g (x)
M axF R AM E M axF R AM E
a := −1 b := 1

şi construim graficul funcţiei h(x)(F R AM E = 0!). Efectuăm operaţiile menţionate mai
sus şi obţinem rezultatele din Fig. 7.2.

7.4 Editare de text


Într-un document MathCAD pot fi incluse texte şi comentarii asupra calculelor ce se
efectuează. O regiune text se obţine tastând " (ghilimele). În măsura în care se adaugă
text, regiunea se extinde la dreapta. Tastând Enter se trece pe linia următoare. Regiunea
text se părăseşte prin plasarea cursorului în afara ei.
Meniul Format oferă facilităţi de formatare a textului.

7.5 Salvarea / restaurarea datelor numerice


Comunicaţii între medii de programare
Date numerice sub forma unei matrice se pot salva şi / sau încăca în / din fişiere
ASCII asigurând astfel un canal de comunicaţie cu un alt mediu de programare.
În acest sens sunt definite funcţiile
60 CAPITOLUL 7. PREZENTARE GENERALĂ

• READPRN(fişier ) citeşte date structurate dintr-un fişier. Funcţia returnează o ma-


trice, fiecare linie din fişier devine o linie în matrice. Numărul de elemente de pe
fiecare linie trebuie să fie acelaşi. În general funcţia se foloseşte în instrucţiuni de
forma:

A := RE ADP R N (fişier)

• WRITEPRN(fişier ) scrie o matrice într-un fişier. Fiecare linie a matricei devine linie
în fişierul specificat. Modalitatea de apel a funcţiei este:

W R I T E P R N (fişier) := A

• APPENDPRN(fişier ) adăugarea o matrice la sfârşitul unui fişier deja existent. Fiecare


linie a matricei devine o nouă linie în fişier. Forma de apel a funcţiei este:

AP PE N DP R N (fişier) := A

În toate cazurile de mai sus, fişier este un string care identifică fişierul
volum:\cale\numeFişier.extensie.
Amintim posibilitatea inserării în MathCAD de componente MSOffice, dar şi pentru
alte produse informatice.

7.6 Instrumente de calcul simbolic

Există două componente prin care se pot efectua calcule simbolice:

• Utilizînd comenzile meniului Symbolic, accesibil din bara superioară de meniuri


(MenuBar) (Fig. 7.3);

• Utilizînd funcţiile casetei Symbolic, ce permite obţinerea rezultatelor simbolice la


fel de uşor ca cele numerice (Fig. 7.3).

Utilizarea meniului Symbolic. Operaţiile meniului Symbolic sunt conţinute în tabelul


următor:
7.6. INSTRUMENTE DE CALCUL SIMBOLIC 61

Numele comenzii Semnificaţia


Evaluate Evaluare
Simplify Simplifică o expresie
Expand Dezvoltarea unei expresii
Factor Descompunere în factori
Collect Dezvoltă după o expresie
Polynomial Coefficients Coeficienţii polinomului
Variable ... Variabila ...
Solve Rezolvă ecuaţia
Substitute Substituie
Differentiate Derivează
Integrate Integrează
Expand to Series ... Dezvoltare în serie
order of approximation până la ordinul
Convert to partial fraction Dezvoltare în fracţii simple
Matrix ... Operaţii matriceale ...
Transpose Matricea transpusă
Invert Matricea inversă
Determinant Determinantul matricei
Transformations ... Transformări integrale ...
Fourier Transformarea Fourier
Inverse Fourier Transformarea Fourier inversă
Laplace Transformarea Laplace
Inverse Laplace Transformarea Laplace inversă
Z Transformarea z
Inverse Z Transformarea z inversă

Pentru a putea aplica comenzile meniului Symbolic trebuie să selectăm varia-bila
sau expresia asupra căreia are loc acţiunea.
Selectarea unui element se obţine prin clic asupra elementului sau utilizând tas-
tatura, cu ajutorul tastelor direcţionale poziţionăm cursorul pe elementul dorit. Elemen-
tul selecţionat este încadrat. Cu ajutorul tastei Space o zona selectată se poate extinde şi
restrânge iar cu tastele direcţionale selecţia se poate muta de pe un termen / operand pe
altul.
Pentru acţionarea comenzilor meniului Symbolic se procedează după cum urmează:

1. Se tastează expresia/ecuaţia asupra căreia va acţiona comanda.

2. Se selecteaza expresia sau variabila activă.

3. Se selectează comanda dorită din meniul Symbolic şi se lansează în execuţie prin
clic sau tastând Enter.
62 CAPITOLUL 7. PREZENTARE GENERALĂ

Rezultatul apare sub expresia în cauză.


Pentru editarea unei ecuaţii între membrul stâng şi membrul drept se pune egalul
simbolic, care se obţine tastând Ctrl+=.

Utilizarea funcţiilor casetei Symbolic. Funcţiile casetei Symbolic se apelează printr-


un clic, în dreptul cursorului MathCAD apare funcţia apelată împreună cu poziţii mar-
cate ce urmează a fi completate cu expresii şi/sau variabile asupra cărora are loc acţi-
unea.
Evaluarea unei asemenea expresii se realizează prin comanda de simplificare sim-
bolică → ce se obţine tastând Ctrl + . urmat de clic în afara regiunii expresiei sau tastând
Enter.
În plus, dispunem de o serie de operatori de calcul simbolic:

Funcţiunea Se obţine tasând


Calculul unei sume Ctrl + $
Calculul unui produs Ctrl + #
Calculul unei limite Ctrl + l
Limită la dreapta Ctrl + Shift + a
Limită la stânga Ctrl + Shift + b
Derivare Ctrl + ? şi ?
Calculul unei primitive Ctrl + i
Calculul unei integrala Ctrl + &

Cu ajutorul clauzei assume se pot impune restricţii asupra unor variabile.

7.7 Elemente de programare funcţională

Posibilitatea de a crea noi funcţii împreună cu operaţia de compunere fac din pro-
gramarea funcţională modul natural de lucru în MathCAD.
Pentru programarea unui test de decizie se poate folosi operatorul de control if(
cond , exp 1 , exp 2 ). Dacă expresia cond este adevărată atunci valoarea returnată de op-
erator este exp 1 iar în caz contrar exp 2 . cond este o expresie logică.
În MathCAD orce valoare nenulă reprezintă valoarea logică adevărat şi 0 reprezintă
valoarea logică fals.
Operatorii relaţionali şi operatorii logici se pot obţine prin paleta Boolean sau tastând
7.8. ELEMENTE DE PROGRAMARE PROCEDURALĂ 63

Operatori relaţionali Se obţine tastând


= Ctrl + =
< >
> <
≤ Ctrl + 9
≥ Ctrl + 0
6 = Ctrl + 3

Operatori logici Se obţine tastând


¬ (negaţia) Ctrl + Shift + 1
∧ (disjuncţia) Ctrl + Shift + 7
∨ (conjuncţia) Ctrl + Shift + 6
L
(sau exclusiv) Ctrl + Shift + 5

Exemplul 7.16 Să se calculeze limita şirului (a n )n∈N definită prin formula de recurenţă
p p
a n+1 = an + 2 a0 = 2

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

Codul MathCAD este

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


p p
q
a 0 := 2 a 1 := 2 + 2
h p i
a n+1 := if |a n − a n−1 | ≥ ε, a n + 2, a n

l i m := a l ast (a) lim = 2

7.8 Elemente de programare procedurală


MathCAD este dotat cu un limbaj de programare vizual deosebit de eficient. Funcţiile
astfel create pot fi incorporate în expresiile supuse calculului simbolic.
Realizarea unui program se obţine cu instrumentele casetei de programare (din bara/panoul
cu uneltele MathCAD) (Fig. 7.4).
Un program MathCAD va apare ca o funcţie
°
°
° i nst r uc t i uni l e
° pr og r amul ui
NumeF unct i e(v ar i abi l e f or mal e) := °
°
° ...
°
° expr esi a r et ur nat a
64 CAPITOLUL 7. PREZENTARE GENERALĂ

Fiecare instrucţiune a panoului de programare se introduce exclusiv în documentul


(foaia de calcul) în care se editează programul printr-un clic al mouse-ului. Introducerea
are loc pe poziţia cursorului MathCAD.
Astfel dacă dorim să începem editarea unui program este suficient să tastăm

NumeF unc t i e(v ar i abi l e f or mal e) := c

urmat de clic pe Add Line.


Rezultatul va fi °
° c
NumeF unc t i e(v ar i abi l e f or mal e) := °
°

Semnul c desemnează cursorul MathCAD.


Cele două poziţii marcate permit extinderea numărului de rânduri (din nou clic pe
Add Line) şi urmează a fi completate cu instrucţiunile programului.
În procesul editării se utilizează regulile MathCAD pentru operaţii, operatori, indici,
etc.

• ← corespunde instrucţiunii de atribuire, variabilei din membrul stâng i se atribuie


valoarea expresiei din membrul drept.

• if este instrucţiunea condiţională. Selectând această instrucţiune, po-ziţia marcată


de cursorul MathCAD se transformă în

if

Cele două poziţii marcate se completează cu

1. expresia care se obţine dacă condiţia este adevărată (poziţia marcată din stânga);
2. condiţia instrucţiunii if (poziţia marcată din dreapta).

Dacă prima poziţie marcată se extinde cu o linie atunci schema grafică devine
if
°
°
°
°

În acest caz poziţiile marcate se completează cu activităţile corespunzătoare cazu-


lui în care condiţia este îndeplinită. Dacă condiţia este falsă atunci se continuă cu
instrucţiunea următoare.

• otherwise folosit după if permite specificarea acţiunilor de efectuat în cazul în care


condiţia instrucţiunii condiţionale este falsă. Selectarea instrucţiunii otherwise
transformă poziţia marcată de cursorul MathCAD în

ot her wi se

Noua poziţie marcată se completează cu activităţile corespunzătoare cazului în


care condiţia este falsă.
7.8. ELEMENTE DE PROGRAMARE PROCEDURALĂ 65

• on error este instrucţiunea de tratare a excepţiei de depăşire flotantă. Selectând


instrucţiunea on error poziţia marcată de cursorul MathCAD devine

on er r or

Poziţiile marcate se completează cu

1. expresia returnată în caz de eroare;


2. expresia care poate genera eroare.

Următorul exemplu este edificator. Pentru funcţia

1
f (x) := ∞ on er r or
x
se obţine
f (1) = 1 f (0) := 1 · 10307

Ultima valoare este cel mai mare număr cu care operează MathCAD.

• while şi for reprezintă instrucţiunile de ciclare cu test iniţial şi respectiv cu contor.
Selectând instrucţiunea while, poziţia marcată de cursorul MathCAD devine

whi l e

Cele două poziţii marcate se completează cu

1. testul iniţial buclei;


2. instrucţiunile ciclului.

• Selectând instrucţiunea for, poziţia marcată din dreptul cursorului MathCAD se


înlocuieşte prin
f or ∈

Cele trei poziţii marcate se completează cu

1. indicele ciclului;
2. intervalul în care variază indicele;
3. instrucţiunile buclei.

• Instrucţiunea break se foloseşte pentru întreruperea unei instrucţiuni de ciclare


while, for. Bucla curentă este oprită şi execuţia continuă de la instrucţiunea urmă-
toare.
66 CAPITOLUL 7. PREZENTARE GENERALĂ

• Instrucţiunea continue se foloseşte pentru scurtcircuitarea parţială a unei instrucţi-


uni de ciclare while, for; execuţia se reia de la prima instrucţiune a buclei, sărindu-
se peste secvenţa de cod cuprinsă între instrucţiunea continue şi sfârşitul buclei.

• Instrucţiunea return are ca efect scurtcircuitarea programului. Instruc- ţiunile care


urmează nu mai sunt executate. Selectarea acestei instrucţiuni introduce pe poz-
iţia marcată de cursorul MathCAD

r et ur n

Noua poziţie marcată se completează cu valoarea returnată de funcţie.

Bineînţeles, într-un program MathCAD se poate utiliza întreaga familie de funcţii nu-
merice ale produsului.
Exemplificăm posibilităţile oferite prin calculul şirului primelor N numere prime
(7.5).
7.8. ELEMENTE DE PROGRAMARE PROCEDURALĂ 67

Figure 7.2: Animaţie tip "morphing"


68 CAPITOLUL 7. PREZENTARE GENERALĂ

Figure 7.3: Meniul şi caseta Symbolic.

Figure 7.4: Caseta cu instrumentele de programare.


7.8. ELEMENTE DE PROGRAMARE PROCEDURALĂ 69

Figure 7.5: Program MathCAD: Calculul şirului primelor N numere prime.


Capitolul 8

Algebră liniară numerică

Cap. 7 Cap. 9

8.1 Factorizarea unei matrice


Funcţiile
• M = lu(A) calculează factorizarea LU a matricei A ∈ M n (R) : P A = LU .
Matricea M s-a obţinut prin alăturarea matricelor P, L,U . Matricea A trebuie să fie
nesingulară.

• M = qr(A) calculează descompunerea QR a matricei A ∈ M n,k (R) : Q 0 A = R.


Matricea M s-a obţinut prin alăturarea matricelor Q şi R.

Exemplul 8.1 Să se calculeze factorizarea LU a matricei


 
1 2 3 4
 2 3 4 1 
A :=  .
 
 3 4 1 2 
4 1 2 3

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

70
8.2. REZOLVAREA SISTEMELOR ALGEBRICE DE ECUAŢII LINIARE 71

0 0 0 1 1 0 0 0 4 1 2 3
     
 0 0 1 0 
 L =  0.75 1 0 0 
U =  0 3.25 −0.5 −0.25 
 
P =
 0

1 0 0   0.5 0.769 1 0   0 0 3.385 −0.308 
1 0 0 0 0.25 0.538 0.818 1 0 0 0 3.636

Exemplul 8.2 Să se calculeze factorizarea QR a matricei

6 6 1
 

X = 3 6 1 
2 1 1
M:=qr(X)
Q:=submatrix(M,0,2,0,2)
P:=submatrix(M,0,2,3,5)
0.857 0.286 0.429 7 8 1.571
   

Q =  0.429 −0.857 −0.286  R =  0 −3 −0.143 


0.286 0.429 −0.857 0 0 −0.714

8.2 Rezolvarea sistemelor algebrice de ecuaţii liniare


Pentru rezolvarea sistemelor algebrice de ecuaţii liniare de forma Ax = b în care
numărul necunoscutelor coincide cu numărul ecuaţiilor, MathCAD oferă două modal-
ităţi de abordare.
Mai întai se defineşte matricea A a sistemului şi apoi vectorul coloană b prin atribuire.
Dacă matricea A a sistemului este nesingulară soluţia x se calculează cu ajutorul for-
mulei x := A −1 ·b. Acelaşi rezultat se obţine şi prin intermediul comenzii x := l sol ve(A, b).
În cazul în care determinantul matricei sistemului este nul, aceasta însemnând că sis-
temul algebric de ecuaţii liniare dat are necunoscute secundare, o soluţie particulară a
acestuia se poate obţine prin intermediul aceleiaşi comenzi x := l sol ve(A, b).

Exemplul 8.3 Să se rezolve sistemul algebric de ecuaţii liniare:




 x1 + 2x 2 + 3x 3 + 4x 4 = 11

 2x + 3x + 4x + x
1 2 3 4 = 12

 3x 1 + 4x 2 + x 3 + 2x 4 = 13

 4x + x
1 2 + 2x 3 + 3x 4 = 14

Pentru rezolvarea sistemului se defineşte matricea pătratică A de dimensiune patru


şi vectorul b, se calculează determinantul matricei A şi apoi se calculează soluţia sis-
temului.
   
1 2 3 4 11
 2 3 4 1   12 
A :=  b := 
   
 3 4 1 2   13 
 
4 1 2 3 14
72 CAPITOLUL 8. ALGEBRĂ LINIARĂ NUMERICĂ

 
2
 1 
|A| = 160 x := A −1 · b x =
 
1

 
1
Acelaşi rezultat se obţine şi prin
 
2
 1 
x := l sol ve(A, b) x =
 
1

 
1

Exemplul 8.4 Să se rezolve sistemul algebric de ecuaţii liniare:




 x + y + z + t = 10

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

 5x + 5y − z − 4t = −4

 x + y + 3z + 4t = 28

Rezolvarea sistemului dat constă în executarea următorilor paşi


   
1 1 1 1 10
 1 1 −1 2   −8 
A :=  b := 
   
5 5 −1 −4 −4 
 
  
1 1 3 4 28
 
26.4
 −25.4 
|A| = 0 x := l sol ve(A, b) x =
 
9

 
0

Soluţia astfel obţinută reprezintă o soluţie particulară a sistemului dat.


Capitolul 9

Rezolvarea sistemelor şi ecuaţiilor


algebrice

Cap. 8 Cap. 10

9.1 Rezolvarea sistemelor algebrice de ecuaţii neliniare


Pentru rezolvarea sistemelor algebrice neliniare de forma

 f 1 (x 1 , . . . , x n ) = 0

..
 .

f n (x 1 , . . . , x n ) = 0

sau scris sub formă condensată f (x) = 0 cu

x1 f 1 (x 1 , . . . , x n )
   
 .  ..
x =  ..  f (x) = 
 
. 
xn f n (x 1 , . . . , x n )

MathCAD oferă două funcţii: find şi minerr. Pentru găsirea unei soluţii este nece-
sară precizarea unei aproximaţii iniţiale. Pornind de la această aproximaţie MathCAD
construieşte prin intermediul unui proces iterativ noi aproximaţii ale soluţiei. Dacă val-
orile aproximaţiei iniţiale nu sunt alese din domeniul de convergenţă procesul iterativ

73
74 CAPITOLUL 9. SISTEME ŞI ECUAŢII ALGEBRICE

diverge. Astfel, alegerea aproximaţiei iniţiale poate reprezenta în anumite cazuri partea
cea mai dificilă din rezolvarea problemei.
Rezolvarea unui sistem algebric de ecuaţii neliniare constă în construirea unui bloc
de rezolvare care trebuie să conţină cuvântul cheie given şi una din funcţiile find, re-
spectiv minerr. Cuvântul cheie given trebuie să preceadă în blocul de rezolvare ecuaţiile
sistemului.

Exemplul 9.1 Să se rezolve sistemul algebric de ecuaţii liniare:

x 12

 10x 1 + − 2x 2 x 3 − 0.1 = 0
10x 2 + x 22 − 2x 1 x 3 + 0.2 = 0
x 32

10x 3 + − 2x 1 x 2 − 0.3 = 0

Rezolvarea constă în efectuarea următorilor paşi pe o foaie de lucru:

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

given

10 · x + y 2 − 2 · y · z − 0.1=0
10 · y + y 2 − 2 · x · z + 0.2=0
10 · z + z 2 − 2 · x · y − 0.3=0

9.841 × 10−3
 

find(x, y, z) =  −0.02 
0.03

Semnul "egal" scris între cei doi membrii ai fiecărei ecuaţii se obţine prin apăsarea si-
multană a tastelor Ctrl şi simbolul =. Algoritmul pentru funcţia find implică un proces
special de rezolvare în care metoda este aleasă dintr-un grup de metode pe care progra-
mul le pune la dispoziţie. Alegerea unei metode se face apăsând butonul din dreapta
mouse-ului pe numele funcţiei find şi apoi prin selectarea unei opţiuni din meniul de
rezolvare a sistemului. De aici se poate alege opţiunea AutoSelect prin intermediul căreia
MathCAD va face o alegere automată a metodei de rezolvare a sistemului în funcţie de
caz (sistem liniar, neliniar, sau problemă de programare neliniară). Pentru cazul neliniar
există trei metode care pot fi alese:

1. metoda gradientului conjugat,

2. metoda Levenberg-Marquardt,

3. metoda quasi-Newton.
9.2. REZOLVAREA ECUAŢIILOR ALGEBRICE 75

9.2 Rezolvarea ecuaţiilor algebrice


În acestă secţiune vom trata modalitatea de rezolvare a unei ecuaţii algebrice de
forma f (x) = 0 cu f : I ⊂ R → R.
Pentru rezolvarea ecuaţiilor algebrice se utilizează funcţia root. Mai întâi se de-
fineşte funcţia f (x) şi apoi se alege o valoare iniţială α în vecinătatea căreia se caută
soluţia ecuaţiei.

Exemplul 9.2 Să se rezolve ecuaţia 2x = x 2 .

Ecuaţia are soluţiile pozitive x = 2 şi x = 4. Determinăm soluţia negativă

f (x) := 2x − x 2
α := −0.5

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


Pentru a găsi toate soluţiile unei ecuaţii algebrice se recomandă trasarea graficu-
lui funcţiei. Astfel se pot determina puncte din vecinătatea soluţiilor, puncte ce pot
reprezenta aproximaţii pentru soluţiile căutate.
Dacă se cunoaşte un interval [a, b] astfel încât f (a) f (b) < 0 ( f continuă), atunci
pentru determinarea unei soluţii a ecuaţiei f (x) = 0 se poate utiliza funcţia root cu
parametri f (x), x, a, b. În acest caz, x nu mai trebuie definit, el apărând ca un parametru
formal.

Exemplul 9.3

Soluţia problemei anterioare este

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

9.3 Rezolvarea ecuaţiilor polinomiale


Ecuaţia polinomială reprezintă un caz particular de ecuaţie algebrică. În cazul ecuaţi-
ilor polinomiale se cere determinarea tuturor rădăcinilor reale sau complexe.
Pentru a rezolva în MathCAD o ecuaţie polinomială de grad n se defineşte un vector
coloană cu n + 1 componente ce reprezintă coeficienţii polinomului începand cu coe-
ficientul monomului de grad 0 şi continuând în ordinea crescatoare a gradelor până la
coeficientul monomului de grad maxim.
76 CAPITOLUL 9. SISTEME ŞI ECUAŢII ALGEBRICE

Rădăcinile polinomului sunt returnate de funcţia polyroots care are ca argument


vectorul coloană definit anterior. MathCAD pune la dispoziţie doi algoritmi pentru re-
zolvarea ecuaţiilor polinomiale:

1. metoda lui Laguerre,

2. metoda matricei companion.

Implicit, polyroots găseşte rădăcinile ecuaţiei polinomiale utilizând metoda lui Laguerre.
Dacă se doreşte rezolvarea ecuaţiei polinomiale prin intermediul metodei matricei com-
panion, atunci se apasă butonul din dreapta mouse-ului pe numele funcţiei şi din me-
niul respectiv se alege metoda de rezolvare dorit.

Exemplul 9.4 Să se determine rădăcinile polinomului

p = 2x 4 + 7x 3 − 2x 2 − 13x + 6.

Rezolvarea este:
 
6  
−3
 −13 
   −2 
v :=  −2 pol yr oot s(v) = 
   
0.5
 
 
7
 
 
1
2
Capitolul 10

Rezolvarea problemelor de
interpolare

Cap. 9 Cap. 11

Fie F o familie interpolatoare de ordin n pe axa reală. Dându-se nodurile (x i )1≤i ≤n


şi numerele (y i )1≤i ≤n , dacă ϕ ∈ F este funcţia de interpolare care satisface condiţiile
ϕ(x i ) = y i , 1 ≤ i ≤ n, se cere să se calculeze ϕ(z), unde z este un punct dat.

10.1 Interpolare polinomială


Pentru F = P n−1 soluţia problemei de interpolare Lagrange este polinomul
n n z −x
X Y j
L(P n−1 ; x 1 , . . . , x n ; y 1 , . . . , y n )(z) = yi
i =1 j =1 xi − x j
j 6=i

Pentru implementare pe calculatoare se foloseşte formula baricentrică a polinomu-


lui lui Lagrange
Pn Qn z−x j
i =0 y i j =1 x i −x j
j 6=i
L(Pn−1 ; x 1 , ..., x n ; y 1 , ..., y n )(z) = P Q z−x j
n n
i =0 j =1 x i −x j
j 6=i

Valoarea acestui polinom este calculată prin intermediul funcţiei din Fig. 10.1
Semnificaţia parametrilor funcţiei L(x, v x, v y) este:

77
78 CAPITOLUL 10. REZOLVAREA PROBLEMELOR DE INTERPOLARE

Figure 10.1: Polinomul de interpolare Lagrange


10.2. INTERPOLARE CU FUNCŢII SPLINE CUBICE 79

• x matrice cu punctele în care se doreşte calcularea valorii polinomului Lagrange


de interpolare.

• (v x, v y) = (v x i , v y i )i datele problemei de interpolare. Componentele vectorului


v x trebuie să fie distincte două câte două.

Exemplul 10.1 Să se calculeze L(P n ; x 0 , . . . , x n ; f )(z) pentru

f (x) = x 2
xi = i , i ∈ {0, 1, . . . , 5}
z = 0.5, 3, 5, 10

Rezolvarea este:

f (x) := x 2 n := 5 i := 0..n
0.5
 

v x i := i v y i := f (v x i ) z :=  3.5 
10
0.25
 

L(z, v x, v y) =  12.25 
100

10.2 Interpolare cu funcţii spline cubice


În cazul în care mulţimea interpolatoare este mulţimea funcţiilor spline cubice se
folosesc funcţiile MathCAD

• cspline De completat ce face cspline

• pspline De completat ce face pspline

• lspline De completat ce face lspline

combinată cu utilizarea funcţiei interp.


Sintaxa funcţiilor 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

• c este un vector cu parametrii funcţiei spline;

• (v x, v y) = (v x i , v y i )i sunt datele problemei de interpolare. Componentele vec-


torului v x trebuie date în ordine crescătoare şi sunt distincte două câte două.
80 CAPITOLUL 10. REZOLVAREA PROBLEMELOR DE INTERPOLARE

Sintaxa func¸iei interp este

y = i nt er p(c, v x, v y, x)

unde în plus y este valoarea funcţiei spline cubice de interpolare calculată în x.

Exemplul 10.2 Să se calculeze valorile funcţiei spline cubice de interpolare în punctele
0.5, 3.5, 10 pentru

f (x) = x3
xi = i, i ∈ {0, 1, ..., 5}

Rezolvare este:

f (x) := x 3 n := 5 i := 0..n
0.5
 

x i := i y i := f (x i ) z :=  3.5 
10
0.125
 

c := cspl i ne(x, y) i nt er p(c, x, y, z) =  42.875 


1 × 103
Capitolul 11

Metoda celor mai mici pătrate

Cap. 10 Cap. 12

Determinarea unui polinom de aproximare construit prin metoda celor mai mici pă-
trate de grad m pentru datele (x i , y i )1≤i ≤n (m << n) se obţine cu ajutorul funcţlor Math-
CAD regress şi interp.
Funcţia c = regress(vx,vy,k) returnează un vector c utilizat de funcţia y = interp(c,vx,vy,x),
ce calculează valoarea polinomului de aproximare de grad k a datelor (v x i , v y i )i în x. Ul-
timele k + 1 componente ale vectorului c conţin coeficienţii polinomului de aproximare
construit prin metoda celor mai mici pătrate.

Exemplul 11.1 Să se calculeze polinoamele de aproximare de grad unu şi doi, constituite
prin metoda celor mai mici pătrate, pentru datele (x i , y i )0≤i ≤20 unde x i = −2+0.2i , y i =
f (x i ), f (x) = |x|. Să se reprezinte grafic funcţiile astfel obţinute.

Din 11.1 deducem polinomele de aproximare construite prin metoda celor mai mici
pătrate de gradul 1 şi respectiv 2:

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

81
82 CAPITOLUL 11. METODA CELOR MAI MICI PĂTRATE

Figure 11.1: Polinoamele de aproximare de grad 1 şi 2


Capitolul 12

Integrare numerică

Cap. 11

12.1 Integerarea numerică a funcţiilor reale


de o variabilă reală
MathCAD permite calculul aproximativ al integralelor definite. Pentru calcularea val-
orii integralei definite
Z b
f (x)d x
a

unde funcţia f : [a, b] ⊂ R −→ R este continuă în domeniul de definiţie.


Pentru a calcula valoarea unei integrale definite, se selectează din paleta Calculus
simbolul integralei definite, după care se completează poziţiile marcate:

• limitele intervalului de integrare,

• funcţia de integrat,

• variabila în raport cu care se face integrarea.

Integrarea se face în raport cu o singură variabilă, iar funcţia poate fi de mai multe vari-
abile. Restul parametrilor în afara variabilei de integrare vor fi consideraţi constante şi
în consecinţă vor trebui să fie definiţi în prealabil. În mod implicit integrala se evaluează

83
84 CAPITOLUL 12. INTEGRARE NUMERICĂ

numeric pe baza unei metode alese de AutoSelect. Dacă se doreşte evaluarea integralei
printr-o anumită metodă, se execută clic dreapta pe simbolul integralei, se deselectează
opţiunea AutoSelect şi se alege una dim metodele pe care MathCAD le pune la dispoziţie:

• Romberg,

• Adaptive,

• Infinite Limit,

• Singular Endpoint.

Parametrul utilizat în testele de precizie este TOL şi are valoarea implicită 0.001.

Exemplul 12.1 Să se calculeze integralele:


Z 3
1. x2 · ex d x
1
π
si n(x)
Z
2
2. dx
0 x

Rezolvare:
1. Z 3
T OL ≡ 10−6 x 2 · e x dx = 97.709
1
2. π
sin(x)
Z
2
T OL ≡ 10−9 dx = 1.371
0 x

12.2 Calculul numeric al integralelor duble


Pentru calculul integralelor duble de forma
ZZ
f (x, y)d xd y
D

unde
D = {(x, y) : a ≤ x ≤ b, f i n f (x) ≤ y ≤ f sup(x)}.
Calcularea integralei constă în transformarea acesteia în integrale iterate, de exemplu
Z b Z f sup(x)
f (x, y)dydx.
a f i n f (x)
RR
Exemplul 12.2 Să se calculeze D x yd xd y unde domeniul D este delimitat de curbele
p
y = x 2 şi y = x.
12.2. CALCULUL NUMERIC AL INTEGRALELOR DUBLE 85

p
Reprezentând grafic domeniul de integrare, deducem f i n f (x) = x 2 , f sup(x) = x, a =
0, b = 1.
p
Z 1Z x
x · ydydx = 0.0833.
0 x2
Part III

CULEGERE DE PROBLEME

86
Capitolul 13

Metode numerice în algebra liniară

I. Să se calculeze factorizarea LU a matricei:

 
10 6 −2 1
 10 10 −5 0 
1.
 
−2 2 −2 1
 
 
1 3 −2 3

5 3
 
−11
2.  4 −5 4 
3 −13 19
 
2 −1 3 4
 4 −2 5 6 
3.
 
6 −3 7 8
 
 
8 −4 9 10
 
1 1 0 0 0 0

 1 2 1 0 0 0 

 0 1 3 1 0 0 
4.
 
0 0 1 4 1 0
 
 
 
 0 0 0 1 5 1 
7
0 0 0 0 1 33

II. Să se calculeze descompunerea / factorizarea QR a matricei:

87
88 CAPITOLUL 13. METODE NUMERICE ÎN ALGEBRA LINIARĂ

4 5 2
 

1.  3 0 3 
0 4 6

2 1 3
 

2.  1 3 1 
2 8 5
 
3 4 7 −2
 5 4 9 3 
3.
 
1 −1 0 3 
 

1 −1 0 0

III. Să se rezolve sistemele algebrice de ecuaţii liniare:




 x1 + x2 − x3 − x4 = 1

 4x − 4x + 6x − 2x
1 2 3 4 = −4
1.

 x 1 + 3x 2 − 2x 3 − 2x 4 = 3

 6x − 6x + 9x − 3x
1 2 3 4 = −6


 x1 − 2x 2 + 3x 3 + 4x 4 = 22

 −4x
1 + x2 + 2x 3 + 3x 4 = 6
2.

 3x 1 + 4x 2 − x3 + 2x 4 = −4

 2x
1 + 3x 2 + 4x 3 − x4 = 6


 6x + 4y + z + 2t = 3

 6x + 5y + 3z + 5t = 6
3.

 12x + 8y + z + 5t = 8

 6x + 5y + 3z + 7t = 8


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

 x + y + 2z + 3t = −2
4.

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

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


 2x + y + z + t = 1

 3x − 2y − 5z + 4t = −30
5.

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

 x − y + z − t = 2
89



 x + y + z + t = 4

 2x + 2z + t = 4
6.

 −2x + 2y − t = 4

 3x + y − z = 0


 2x 1 + 3x 2 + 2x 3 + x4 = 2

 x
1 + x2 + 3x 3 + 2x 4 = 6
7.

 −3x 1 + 2x 2 − x3 − x4 = 0

 x
1 − x2 + x3 + 3x 4 = 6


 x + y + z + t = 2

 2y + 2z + t = 2
8.

 −2x + 2y − t = 2

 3x + y − z = 2


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

 3x − y − 4z − 6t = 0
9.

 2x + 3y − 6z − 9t = −7

 x − 2y + 8z − 12t = 3


 x + y + z − 2t + 7u = 10



 2x + 5z − 2u = 32
10. 3x + y − t = 1




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



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

 x − y + 2z − 2t = −5
11.

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

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


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

 2x − 3y + 5z − 2t = 3
12.

 3x + 4y − 2z − t = 1

 4x − y + 6z − 3t = 8


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

 2x − y − 2z − 3t = 8
13.

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

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


 2x − y + z − t = 1

 2x − y − 3t = 2
14.

 3x − y + t = −3

 2x + 2y − 2z + 5t = −6
90 CAPITOLUL 13. METODE NUMERICE ÎN ALGEBRA LINIARĂ



 x + 2y + 3z + 4t + 5u = 13

 2x

 + y + 2z + 3t + 4u = 10
15. 2x + 2y + z + 2t + 3u = 11




 2x + 2y + 2z + t + 2u = 6
2x + 2y + 2z + 2t + u = 3



 x + 2y − 3z + 4t − u = −1

 2x

 − y + 3z − 4t + 2u = 8
16. 3x + y − z + 2t − u = 3




 4x + 3y + 4z + 2t + 2u = −2
x − y − z + 2t − 3u = −3



 x + y + z + t = 10

 x + y − z + 2t = −8
17.
 5x
 + 5y − z − 4t = −4

 x + y + 3z + 4t = 28
Capitolul 14

Sisteme şi ecuaţii algebrice

I. Să se rezolve ecuaţiile polinomiale:

1. x 6 − 2x 5 + x 3 − 6x + 6 = 0

2. 2x 6 − x 5 − 5x 4 + 2x 3 + 20x 2 − 9x − 9 = 0

3. x 5 − 56x 4 − 10x 3 + 560x 2 + x − 56 = 0

4. x 5 − x 4 − 2x 3 + 4x 2 − 4 = 0

5. x 5 − 4x 4 − 9x 3 + 18x 2 + 14x − 20 = 0

6. x 6 − 5x 5 + 5x 4 − 2x 3 + 13x 2 + 3x + 9 = 0

7. x 5 − 12x 4 + 50x 3 − 88x 2 + 96x − 128 = 0

8. x 6 − 6x 5 + 8x 4 + 3x 3 − 16x 2 + 18x − 8 = 0

9. x 5 − 3x 4 + 2x 3 − x 2 + 5x − 2 = 0

10. x 5 − 4x 3 − 8x 2 + 32 = 0

11. 2x 5 − 6x 4 + 2x 3 − 6x 2 + 2x − 6 = 0

12. x 5 + 5x 4 + 5x 3 − 5x 2 − 30x + 24 = 0

13. x 6 + 4x 5 + x 4 − 2x 3 + x 2 − 20x + 6 = 0

14. x 6 − 7x 5 + 14x 4 − 8x 3 − x 2 + 3x − 2 = 0

15. x 8 − ax 7 + 546x 6 − 4536x 5 + 22449x 4 − 67284x 3 + 118124x 2 − 109584x + 40320 = 0


pentru a=-36, a=-36.0001

II. Să se rezolve ecuaţiile algebrice:

91
92 CAPITOLUL 14. SISTEME ŞI ECUAŢII ALGEBRICE

1. 2x − ln x − 4 = 0

2. ln (8x) − 9x + 3 = 0

3. x − 2 cos x = 0 = 0

4. 0.5e −0.6x − x = 0

1
5. ln x = x

6. ln x = x 2 − 1

7. x 2 − 2 cos x = 0

8. x ln x − 14 = 0

9. x x + 2x − 6 = 0

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

11. ln 7x − 8x + 1 = 0

12. e −0.5x − x = 0

III. Să se rezolve sistemele algebrice de ecuaţii neliniare (se va utiliza atât funcţia
Scilab fsolve cât şi ode) :

2x 3 − y 2 − 1 = 0
½
1.
x y3 − y − 4 = 0
93

x2 − y = 0
½
2.
x(y + 1) = 0

tan(x y) = x 2
½
3.
0.5x 2 + 2y 2 = 1

y
e −x = x 2 − y + 1
½
4.
(x + 0.5)2 + y 2 = 0.6

x 3 + y 3 − 6x + 3 = 0
½
5.
x 3 − y 3 − 6y + 2 = 0

x2 + y 2 − 1 = 0
½
6.
x3 − y = 0

2x 2 − x y − 5x + 1 = 0
½
7.
x + 3 ln x − y 2 = 0

2x 2 − x y − y 2 + 2x − 2y + 6 = 0
½
8.
y −x −1 = 0

x3 − y 2 − 1 = 0
½
9.
x y3 − y − 4 = 0

x 3 + sin 3x − y = 0
½
10.
4x 2 + y 2 − 4e −x = 0
½
sin(x) − y = 1.32
11.
cos(y) − x = −0.85

x + 3 ln x − y 2 = 0
½
12.
2x 2 − x y − 5x + 1 = 0
 2
 x + x − 2y z − 0.1 = 0
13. y − y 2 + 3xz + 0.2 = 0
z − z 2 + 2x y − 0.3 = 0

½
x + tan(x y) = 0
14.
(y 2 − 7.5)2 + ln x = 0

x3 − y + 1 = 0
½
15.
0.25x 2 + y 2 − 1 = 0
94 CAPITOLUL 14. SISTEME ŞI ECUAŢII ALGEBRICE

½
sin(x + 0.4) + 3.5y − 1.5 = 0
16.
cos(y + 0.2) + 0.5x = 0
½
tan(x) − cos(1.5y) = 0
17.
2y 3 − x 2 − 4x − 3 = 0

3x 2 + 14y 2 − 1 = 0
½
18.
sin(3x + 0.1y) + x = 0

1 + x 2 − y 2 + e x cos y = 0
½
x 0 = −1
19.
2x y + e x sin y = 0 y0 = 4

sin x + cos y + e x y = 0
½
20.
arctan (x + y) − x y = 0
Capitolul 15

Probleme de interpolare

I. Să se calculeze L(P n , x 0 , x 1 , ..., x n ; f )(z) pentru

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

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

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

f (x) = e x
4. x i = −3 + i , i ∈ {0, 1, 2, 3, 4, 5, 6}
z = 1.5

f (x) = sin (x)


5. x i = − π2 + i 10
π
, i ∈ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
π
z = 13

f (x) = cos (x)


π
6. x i = i 10 , i ∈ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
π
z= 7
p
f (x) = x
7. x i = i 2 , i ∈ {0, 1, 2, 3, 4, 5}
z =5

95
96 CAPITOLUL 15. PROBLEME DE INTERPOLARE

2
f (x) = x x+1
8 x i = 1 + 5i , i ∈ {0, 1, 2, 3, 4, 5}
z = 0.3, z = 3.5
II. Să se calcueze valoarea funcţiei spline cubice de interpolare pentru datele prob-
lemei 1.
Capitolul 16

Calculul unui element de aproximare


prin metoda celor mai mici pătrate

I. Să se calculeze polinoamele de aproximare de grad unu, doi si trei constituite prin
metoda celor mai mici pătrate pentru datele Problemei 1 din capitolul Interpolare.
II. Să se calculeze funcţiile de aproximare constituite prin metoda celor mai mici
pătrate pentru metoda Gauss-Newton de forma şi datele indicate (t = 0 : 9):

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

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

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

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


III. Să se calculeze funcţiile de aproximare constituite prin metoda celor mai mici
pătrate pentru metoda Levenberg-Marquardt pentru cazurile exerciţiului II.

97
Capitolul 17

Integrare numerică

I. Să se calculeze integralele:

R1 Rπ
1. x 2 e x dx 2. x 2 cos xdx
0 0

R5 p R2
3. x 2 − 9dx 4. x 2 ln xdx
4 1

π π
R4 2
R2 sin 2x
5. x tan xdx 6. 1+sin2 x
dx
0 0

R2 p R1 2
7. 4x − x 2 dx 8 arcsin xx 2 −1
+1
dx
0 0

π
Rπ 2
R2 1+sin 2x+cos 2x
9. cos x cos 4xdx 10. sin x+cos x dx
0 π
6

R1 p R1
p 2x dx
2
11. x3 1 + e x dx 12. 2
−1 0 3+4x

p π
R3 1
R4 tan x
13. arctan x dx 14. p dx
p 1+ 2 cos x
3 0
3

II. Să se calculeze integralele duble:

98
99

(x 2 + y)dxdy D : (delimitat de) y = x 2 ; y 2 = x.


RR
1.
D

x2
D : y = x1 ; y = x; x = 1; x = 2.
RR
2. y2
dxdy
D

x
D : y = x; y = (x − 1)2 .
RR
3. x 2 +y 2
dxdy
D

RR p
4. 4x 2 − y 2 dxdy D : y = x; y = 0; x = 1.
D

p 1 p dxdy D : x = 1, y = 0, x − y = 21 .
RR
5. x+ y
D

2x
RR
6. p dxdy D : y = x, x = 0, y = 1.
D 1+y 4 −x 4

(x 2 y D : x ≥ 0, y ≥ 0, x 2 + y 2 = 1.
RR p
7. 1 − x 2 − y 2 dxdy
D

RR p
8. x y − y 2 dxdy D este triunghiul cu vârfurile
D
O(0, 0), A(10, 1), B (1, 1).
Bibliografie

[1] BLAGA P., COMAN GH., POP S., TRÂMBIŢAŞ R., VASARU D., 1994, Analiză numer-
ică. Îndrumar de laborator. Univ. "Babeş–Bolyai" Cluj-Napoca (litografiat).

[2] CIRA O., MĂRUŞTER Ş., 2008, Metode numerice pentru ecuaţii neliniare. Ed.
Matrix-Rom, Bucureşti.

[3] CURTEANU S., 2001, Calculul numeric şi simbolic în Mathcad. Ed. Matrix-Rom,
Bucureşti.

[4] DINU M., LINCĂ Gh., 1999, Algoritmi şi teme speciale de analiză numerică. Ed.
Matrix rom, Bucureşti.

[5] GAVRILĂ C., 2007, SCILAB Aplicaţii, Modele şi simulare Scicos Ed. Matrix-Rom, Bu-
cureşti.

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

[7] MARINESCU GH., BADEA L., GRIGORE G., JAMBOR C., MAZILU P., RIZZOLI I.,
ŞTEFAN C., 1978, Probleme de analiză numerică. E.D.P., Bucureşti.

[8] MARINESCU GH., RIZZOLI I., POPESCU I., ŞTEFAN C., 1987, Probleme de analiză
numerică rezolvate cu calculatorul. Ed. Acad. R.S.R., Bucureşti.

[9] MARTIN O., 1998, Probleme de analiză numerică. Ed. Matrix rom, Bucureşti.

[10] PLIS A. I., SLIVINA N.A., 1983, Laboratornyi praktikum po bysxei


matematike. Vysxa Xkola, Moskva.

[11] SCHEIBER E., LIXĂNDROIU D., CISMAŞIU C., 1982, Analiză numerică. Îndrumar
de laborator. Univ. Braşov (litografiat).

[12] SCHEIBER E., SÂNGEORZAN L., GROVU M., 1993, Analiză numerică. Îndrumar de
laborator. Univ. "Transilvania" Braşov (litografiat).

100

S-ar putea să vă placă și