LabNum.pdf

download LabNum.pdf

of 126

Transcript of LabNum.pdf

  • 5/25/2018 LabNum.pdf

    1/126

    UniversitateaTransilvaniadin Brasov

    Facultatea de Matematica-Informatica

    E. SCHEIBER

    Laborator de ANALIZ A NUMERIC A

    SCILAB & MathCAD

    Brasov

  • 5/25/2018 LabNum.pdf

    2/126

    Tema de LABORATOR

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

    Lucrarea consta din 2 teme:

    Rezolvarea a cte 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 foaieA5se 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

  • 5/25/2018 LabNum.pdf

    3/126

    3

    La o tema, un student rezolva problema avnd numarul de ordineI D. DacaI Deste mai mare dect numarul problemelor atunci problema ce trebuie rezol-vata se obtine cu formula

    I D mod1 NumarulProblemelor+1.

    Se vor folosi urmatoarele produse informatice

    Scilab - produs gratuit descarcabil din internet;

    ndrumarul de laborator de Analiza numerica/Calcul numeric prezintamodulde rezolvare a problemelor.

    1Restul mpartirii.

  • 5/25/2018 LabNum.pdf

    4/126

    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. romna).

    Exemplu de aplicatie Scilab

    Metoda tangentei pentru rezolvarea ecuatiei algebrice f(x)=0, f : R Rconsta n construirea sirului (xk)kNdefinit prinxk+1 = xk f(xk)f(xk) .

    Documentatia cuprinde:

    4

  • 5/25/2018 LabNum.pdf

    5/126

    5

    1. Formula de calcul.

    x0

    R

    xk+1 = xk f(xk)f(xk)

    , kN

    2. Problema de test.

    Sa se rezolve ecuatie 2x x2 = 0, x0 = 1S-au calculatx1 = 2.6294457, x2 = 1.8807153.

    3. Algoritmul metodei este dat pe pagina urmatoare.

    Algorithm 1Pseudocodul metodei

    1: procedureMETODA TANGENTEI2: generarea aproximaiei iniialexv3: i ter 04: do

    5: i ter i ter +16: x xv f(xv)f(xv)7: nr m |x xv|8: xv x9: while(nr m eps) sii ter < nmi)

    10: ifnr m< epsthen11: er

    0

    12: else

    13: er 114: end if

    15: returnx16: end procedure

    4. Textele sursa.

    Proiectul este alcatuit din 2 programeScilab:

    (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;

  • 5/25/2018 LabNum.pdf

    6/126

    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

  • 5/25/2018 LabNum.pdf

    7/126

    7

    n timp, la elaborarea acestuindru-

    mar de laboratorau contribuit: Silviu Dumitrescu

    Cristina Luca

    Vlad Monescu

  • 5/25/2018 LabNum.pdf

    8/126

    Cuprins

    I Scilab 11

    1 Elemente de programare n SCILAB 12

    1.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 nScilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

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

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

    2 Algebra liniara numerica 31

    2.1 Factorizarea unei matrice . . . . . . . . . . . . . . . . . . . . . . . . . 31

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

    3 Rezolvarea sistemelor si ecuatiilor algebrice 37

    3.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 42

    4.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

  • 5/25/2018 LabNum.pdf

    9/126

    CUPRINS 9

    7 Integrare numerica 55

    7.1 Integrarea functiilor de o variabila reala . . . . . . . . . . . . . . . . . 557.2 Calculul numeric al integralelor duble. . . . . . . . . . . . . . . . . . 57

    II MathCAD 62

    8 Prezentare generala 63

    8.1 Efectuarea calculelor numerice . . . . . . . . . . . . . . . . . . . . . . 648.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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

    8.1.6 Unitati de masura. . . . . . . . . . . . . . . . . . . . . . . . . . 738.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 89

    9.1 Factorizarea unei matrice . . . . . . . . . . . . . . . . . . . . . . . . . 899.2 Rezolvarea sistemelor algebrice de ecuatii liniare . . . . . . . . . . . 90

    10 Sisteme si ecuatii algebrice 92

    10.1 Sisteme algebrice neliniare . . . . . . . . . . . . . . . . . . . . . . . . 9210.2 Rezolvarea ecuatiilor algebrice . . . . . . . . . . . . . . . . . . . . . . 9410.3 Rezolvarea ecuatiilor polinomiale . . . . . . . . . . . . . . . . . . . . 94

    11 Rezolvarea problemelor de interpolare 96

    11.1 Interpolare polinomiala . . . . . . . . . . . . . . . . . . . . . . . . . . 9611.2 Interpolare cu functii spline cubice . . . . . . . . . . . . . . . . . . . 97

    12 Derivare numerica 101

    12.1 Derivarea functiilor de o variabila reala . . . . . . . . . . . . . . . . . 10112.2 Cazul functiilor de mai multe variabile . . . . . . . . . . . . . . . . . 102

    13 Metoda celor mai mici patrate 103

  • 5/25/2018 LabNum.pdf

    10/126

    10 CUPRINS

    14 Integrare numerica 105

    14.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

  • 5/25/2018 LabNum.pdf

    11/126

    Part I

    Scilab

    11

  • 5/25/2018 LabNum.pdf

    12/126

    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 ghid

    de utilizarerapida. Se presupune ca utilizatorul poseda cunostinte de progra-mare, avnd experienta de lucru n cel putin un limbaj de programare procedu-rala.

    Scilabeste un produs de calcul numeric produs de INRIA Franta disponi-bil n mediile Windows si Linux. Produsul este distribuit gratuit. Produsul estensotit de o documentatie cuprinzatoare.

    Ca produs informatic Scilabaretrasaturi comune cu produsul comercial Mat-lab.

    1.1 Obiecte Scilab

    Constante

    12

  • 5/25/2018 LabNum.pdf

    13/126

    1.1. OBIECTE SCILAB 13

    Tip Mnemonic Valoare

    real %pi

    real %e ereal %eps 2.21016%inf

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

    %nan Not A Number

    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+ 5ise 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:

  • 5/25/2018 LabNum.pdf

    14/126

    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)

    x sinc(x) sin xx

    floor(x) [x] ceil(x) xerf(x) 2

    x0 et2dt gamma(x) (x)

    =

    0 tx1etdt

    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 parametrulr lipseste atunci ratia 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

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

    Un sir de numere (ai)1inse poate defini prin

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

    2. a= [a1, a2, . . . , an],undea1, a2, . . . , ansunt termenii sirului.

  • 5/25/2018 LabNum.pdf

    15/126

    1.1. OBIECTE SCILAB 15

    Indicele primului termen al unui sir este 1.

    i=1:4

    1 2 3 4

    a=i^2

    1 4 9 1 6

    b=[1,4,9,16]

    a==b

    T T T T

    Matrice

    Definirea unei matrice.

    Exemplu: Matriceaa=

    1 2 34 5 6

    se defineste nScilabprin

    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 aritmeticaprog=

    a: r: Meste 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 : 2

    a=

    ! 0.2 0.6 1.0 1.4 1.8 !

    b=-1 : -1 : -4

    b=

    ! -1 -2 -3 -4 !

    FunctiaScilabsize(variabilaMatrice) returneaza numarul liniilor sinumarul coloanelorvariabileiMatrice.

    Definirea unei matrice rarase face cu functiaScilab

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

  • 5/25/2018 LabNum.pdf

    16/126

    16 CAPITOLUL 1. ELEMENTE DE PROGRAMARE N SCILAB

    undeali,ci= vi. i.Functiafull(a)afiseaza o matrice raraan formatul obisnuit.

    Matrice speciale.

    * zeros(m,n) defineste o matrice nula cumlinii sincoloane;

    * ones(m,n) defineste o matrice cu toate elementele egale cu 1avndmlinii sincoloane;

    * eye(m,n) defineste o matrice unitate cumlinii sincoloane;

    * rand(m,n) defineste o matrice cumlinii sincoloane avnd caelemente numere (semi)aleatoare cuprinse ntre 0 si 1.

    Selectarea unui elementse 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= a1 b

    . \ a.\b= ( bi,jai,j)i,j/ b/a

    =b

    a1

    . / b/a= ( bi,jai,j)i,j transpunere

    Functii matriceale.

  • 5/25/2018 LabNum.pdf

    17/126

    1.1. OBIECTE SCILAB 17

    Mnemonic Semnificatia

    triu(A) Matricea superior triunghiulara a luiA

    tril(A) Matricea inferior triunghiulara a luiAdiag(A) Vectorul cu elementele diagonale ale luiAsize(A) Sir cu dimensiunile luiAlength(A) Numarul elementelor luiAmax(A) Cel mai mare element al luiAmin(A) Cel mai mic element al luiAmatrix(A,m,n) Transforma matricea A ntr-o matrice cum

    linii sincoloane

    Extinderea unei matrice.Date fiind o matriceasi un vector liniev

    * adaugarea linieivca prima linie a matriceiase obtine prin

    [v; a]

    * adaugarea linieivca ultima linie a matriceiase obtine prin

    [a; v]

    * adaugarea vectoruluivca prima coloana a matriceiase obtineprin

    [v, a] sau [v; a]

    * adaugarea vectoruluivca ultima coloana a matriceiase obtine

    prin [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 ,.

    Extragereaunei submatrice.O zona compactafixata prin liniile l1: l2si coloanelec1: c2, inclusiv, se extrage din matriceaaprin

    a(l1: l2,c1: c2)

    Pentru extragerea unei zone necompacte aflata la intersectia liniilorl1, l2, . . . , lpcu coloanelec1,c2, . . . , cq dintr-o matriceaavndmliniisincoloane se definesc vectori linie

    l i n= (l i ni)1im, l i ni=

    %t dacai {l1, . . . , lp}%f n caz contrar

  • 5/25/2018 LabNum.pdf

    18/126

    18 CAPITOLUL 1. ELEMENTE DE PROGRAMARE N SCILAB

    col= (colj)1jn, colj=

    %t dacaj {c1, . . . , cq}%f n caz contrar

    Extragerea rezulta dina(l i n,col)

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

    Polinoame si functii rationale

    Scilabposeda o modalitate deosebita de lucru cu polinoame definite pesteRsau C.

    Pentru a defini un polinom n nedeterminata (variabila) Xse poate defininti 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 functieiScilabpoly

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

    Dacavector= (a1, a2, . . . , an) si string=coefatunci se obtine polinomul degradn1

    polinom= a1 + a2X+. . . + anXn1,iar dacastring=rootsatunci se obtine polinomul de gradn

    polinom= (Xa1)(Xa2) . . . (Xan)

    A doua varianta este cea implicita.

    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

  • 5/25/2018 LabNum.pdf

    19/126

    1.1. OBIECTE SCILAB 19

    DacaAesteomatricepatrataatunci poly(A, X) genereaza polinomul car-acteristic matriceiA, adica det(X IA).

    Dacapsiqsunt doua polinoame n nederminataXatuncip/qdefineste ofunctie rationala.

    Scilabefectueaza operatiile uzuale cu polinoame si functii rationale n modsimbolic.

    Dacar este o functie rationala atuncir(num) furnizeaza numaratorul sir(den) furnizeaza numitorul luir.

    Functiacoeff(polinom)returneaza sirul coeficientilor polinomului.

    coeff(p)

    -6. 11. -6. 1.

    Dacapeste un polinom atunci functiaScilab horner(p, x) returneazap(x).

    Lista.O lista se defineste prin

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

    undeeisunt obiecteScilab.

    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. !

    Ali-lea element al unei listeleste accesibil cul(i).

    l(i)=nullsterge ali-lea element din lista l.

  • 5/25/2018 LabNum.pdf

    20/126

    20 CAPITOLUL 1. ELEMENTE DE PROGRAMARE N SCILAB

    1.2 Elemente de programare in Scilab

    Programarea nScilabse face n cadrul functiilor definite n exterior. Pentru

    editarea acestor functiiScilabposeda un editor propriu, dar se poate fi utilizatorice editor de fisiere.

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

    rezultatul este afisat. ncheierea unei comenzi cu caracterul ; are ca efect in-hibarea afisarii rezultatului.

    Pentru exprimarea conditiilor se utilizeaza

    Operatori relationali Operatori logiciSimbol Semnificatie Simbol Semnificatie

    == = & si= = | sau= > >

    Instructiunea de atribuirevariabila=expresie

    Instructiuni conditionate1.

    ifconditietheninstructiuni

    elseifconditietheninstructiuni

    else

    instructiuniend

    Exemplul 1.1 Rezolvarea ecuatiei x2 + ax+b= 0n 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

  • 5/25/2018 LabNum.pdf

    21/126

    1.2. ELEMENTE DE PROGRAMARE IN SCILAB 21

    2.

    selectexpresie

    caseexpresie1theninstructiuni...else

    instructiuniend

    casesithentrebuie scrise pe aceeasi linie.

    Instructiuni de ciclare

    1.

    forn= n1 : pas: n2,instructiuni,endDacapas= 1, atunci acest parametru este optional.

    Exemplul 1.25

    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)*3

    case 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

    2.

    whileconditie

    ,do

    then

    instructiuni,end

    whilesidosauthentrebuie scrise pe aceasi linie.

  • 5/25/2018 LabNum.pdf

    22/126

    22 CAPITOLUL 1. ELEMENTE DE PROGRAMARE N SCILAB

    Exemplul 1.55

    i=1 i

    s=0;

    i=0;

    while i

  • 5/25/2018 LabNum.pdf

    23/126

    1.3. FUNCTII(SUBPROGRAME) N SCILAB 23

    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)

    Functiasavesalveaza orice tip de obiect. Dacaa,bsunt variabileScilabatunci sintaxa utilizata va fisave(cale\numeFisier.bin,a,b).

    Rencarcarea 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 numelef.scesauf.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 avnd extensia .sci aflate ntr-un catalog localizat princalesunt reunite ntr-o biblioteca prin comanda

    genlib(numeBiblioeca,cale)

  • 5/25/2018 LabNum.pdf

    24/126

    24 CAPITOLUL 1. ELEMENTE DE PROGRAMARE N SCILAB

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

    O biblioteca odata creata, resursele ei pot fi utilizate dupa rencarcarea 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 then

    u=0.5*(-a+sqrt(delta));

    v=0.5*(-a-sqrt(delta));disp(Real roots)

    else

    u=-a/2;

    v=sqrt(-delta);

    disp(Complex conjugate roots)

    end

    endfunction

    Functiadisp(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:n

    r=r*x+c(i);

    end

    endfunction

    function r=polyval2(x,c)

    [l,n]=size(c);i=0:n-1;

    u=x^i;

    r=u*c;

    endfunction

  • 5/25/2018 LabNum.pdf

    25/126

    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:n

    t(i)=t(i-1)+t(i-2);

    end

    endfunction

    Exemplul 1.9 Functie pentru calculul limitei sirului(an)nNdefinit prin a0 =

    2,an+1 =an+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(dnmi)

    cont=%f

    end

    end

    if(d

  • 5/25/2018 LabNum.pdf

    26/126

    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 produsuluiScilabamintim

    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

    suntdoua matrice de acelasi tip. Functia construieste n acelasi panou (fer-eastra grafica) graficele ancurbe ce trec respectiv prin punctele

    (xi,j,yi,j)1im, j {1,..., n}.

    fplot2d.Utilizarea functiei este

    fplot2d(x,f)

    unde

    xeste un sir de numere reale;

    f este o functieScilab

    iar rezultatul este graficul functieifconstruitpe baza valorilor ei n puncteleluix.

    comet.Reprezentare grafica animata. Utilizarea este asemanatoare cu ceaa fuctieiplot2d.

    paramfplot2d realizeaza o animatie reprezentnd evolutia graficele functi-ilorft(x),x [a,b] cnd parametrultparcurge o multime de valori. Modulde utilizare

  • 5/25/2018 LabNum.pdf

    27/126

    1.5. GRAFICA NSCILAB 27

    paramfplot2d(f, x, t)

    unde

    f(x, t) este o functieScilab.

    xsitsunt siruri.

    Exemplul 1.10 Reprezentarea grafica a functiilorsin x sicos 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)1im siY=(Y1jnsunt vectori dati n ordine crescatoare, iarZ= (Zi,j), i {1,..., m}, j {1,..., n} reprezinta valoarea functiei calculata

    n (Xi,Yj).

    Pozitia observatorului este indicata prin parametrii theta=

    longitudine, alpha=90 latitudine. Valorile implicite sunttheta= 35, alpha= 45.

    Daca suprafata este definita prinz=f(x,y), x [a,b],y [c,d] atunci sedefineste functiaScilab

    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)=. . .end

    end

    z=f(x,y);

    endfunction

  • 5/25/2018 LabNum.pdf

    28/126

    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 dez=

    1 x2 y2, pentru care construimfunctiaScilab

  • 5/25/2018 LabNum.pdf

    29/126

    1.5. GRAFICA NSCILAB 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

  • 5/25/2018 LabNum.pdf

    30/126

    30 CAPITOLUL 1. ELEMENTE DE PROGRAMARE N SCILAB

    Exercitii

    1. Sa se reprezinte grafic functiile n intervalele indicate

    a. |x| x [4,4]b. ex

    2x [4,4]

    c. 4xsin x32+x2 x [0,4]

    d. x

    x2 1 x [4,4]

    2. Sa se reprezinte evolutia functiilor

    a. xt 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= 10.05i,i {0,1,...,20}

    3. Sa se reprezinte:

    a. z= x2a2

    + y2

    b2 a= 4,b= 3 x [3,3],y [3,3]

    Paraboloidul eliptic

    b. z= x2a2

    y2

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

  • 5/25/2018 LabNum.pdf

    31/126

    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:P A= LU.

    [Q,R] = qr(A) calculeaza factorizarea QR a matriceiA: 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

  • 5/25/2018 LabNum.pdf

    32/126

    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.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 Sa se calculeze factorizarea QR a matricei

    X

    =

    6 6 13 6 1

    2 1 1

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

    [Q,R]=qr(X)

    R =

    7. 8. 1.5714286

    0. 3. 0.1428571

    0. 0. 0.7142857

    Q =

    0.8571429 - 0.2857143 - 0.4285714

    0.4285714 0.8571429 0.2857143

    0.2857143 - 0.4285714 0.8571429

  • 5/25/2018 LabNum.pdf

    33/126

    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-15

    0. - 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 matriceleAsib;

    2. se calculeazax=A1b.

    ExpresiaA1 se poate introduce ntocmai (A(-1)) sau se poateutiliza functiaScilabinv(A).

    FunctiaScilabdet(A)calculeaza determinantul matriceiA.

    Exemplul 2.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

    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=

    160

    x=inv(A)*b

  • 5/25/2018 LabNum.pdf

    34/126

    34 CAPITOLUL 2. ALGEBRA LINIARA NUMERICA

    x=

    ! 2 !

    ! 1 !

    ! 1 !

    ! 1 !

    n general, pentru sistemul algebric de ecuatii liniareAx+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 sistemuluiAx+b= 0 estex+kcunde c este un vector oarecare a caruidimensiune coincide cu numarul coloanelor matriceik.

    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

    avnd solutiax1 = 1,x2 = 1 x4,x3 = 2.Scris matriceal, solutia sistemului este

    x1x2x3x4

    =

    1120

    +

    0101

    c=

    1120

    +

    01

    2012

    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

  • 5/25/2018 LabNum.pdf

    35/126

    2.2. REZOLVAREA SISTEMELOR ALGEBRICE DE ECUATII LINIARE 35

    0.7071068

    2.776D-16

    - 0.7071068

    x =

    - 1.

    0.5

    2.

    0.5

    Observatie.kaproximeaza vectorul de norma euclidiana 1

    012

    01

    2

    .Notnd cuusivcele doua solutii particulare puse n evidenta mai sus

    u=

    1120

    v=

    10.52

    0.5

    gasim

    u v=

    0

    0.50

    0.5

    = 12k KerA

    n cazul unui sistem algebric de ecuatii liniare incompatibil se poate calculaelementul care minimizeaza functionala J(x)= bAx22. Acest element estesolutia sistemului algebric de ecuatii liniare compatibil ATAx=ATbsi este datde functiaScilabx=lsq(A,b).

    Exemplul 2.5 Sa se rezolve sistemul algebric de ecuatii liniare

    2x y + 3z = 7x + y + z = 4

    3x 3y + 5z = 8

    n sensul celor mai mici patrate.

  • 5/25/2018 LabNum.pdf

    36/126

    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.4871795

    1.2948718

    1.5512821

    Functialinsolve(A,b)returneaza [ ].

  • 5/25/2018 LabNum.pdf

    37/126

    Capitolul 3

    Rezolvarea sistemelor si ecuatiilor

    algebrice

    Cap. 2 Cap. 4

    3.1 Rezolvarea sistemelor algebrice de ecuatii neliniare

    Pentru rezolvarea sistemului algebric de ecuatii neliniare

    f1(x1, . . . , xn) = 0...fn(x1, . . . , xn) = 0

    sau scris sub forma concentrataf(x) = 0 cu

    x=

    x1..

    .xn f(x) =

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

    .fn(x1, . . . , xn) ,

    se utilizeaza functiaScilab

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

    37

  • 5/25/2018 LabNum.pdf

    38/126

    38 CAPITOLUL 3. REZOLVAREA SISTEMELOR SI ECUATIILOR ALGEBRICE

    unde semnificatia parametrilor este:

    x0 reprezinta o aproximatie initiala a solutiei sistemului.

    f identificatorul functieiScilabcare definette sistemul neliniarf(x) = 0.

    f jacidentificatorul functieiScilabal jacobianului finctiei f, adica

    f j ac(x) =

    f1x1

    (x) . . . f1xn

    (x)

    . . . . . . . . .fnx1

    (x) . . . fnxn

    (x)

    toltoleranta, parametrul utilizat n testele de precizie (scalar real).

    xaproximatia calculata a solutiei sistemului algebric.

    yreprezinta valoarea functiei f calculata nx; y=f(x).

    in 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 jacobianuluif jac);

    2. apelarea functieiScilabfsolve.

    Exemplul 3.1 Sa se rezolve sistemul algebric de ecuatii neliniare

    10x1 + x21 2x2x3 0.1 = 010x2 x22 + 3x1x3 + 0.2 = 010x3 + x23 + 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)

  • 5/25/2018 LabNum.pdf

    39/126

    3.2. REZOLVAREA ECUATIILOR ALGEBRICE 39

    info=

    1.

    q=

    1.0E-15*

    ! - .2636780 !

    ! .2775558 !

    ! .9436896 !

    p=

    ! .0098702 !

    ! - .0200485 !

    ! .0299499 !

    3.2 Rezolvarea ecuatiilor algebriceDacan= 1, adica dimensiunea spatiului este 1, atuncif(x) = 0 cu f :I R

    Rreprezinta o ecuatie algebrica.Pentru rezolvarea ecuatiilor algebrice se utilizeaza de asemenea functia Scilab

    fsolve.

    Exemplul 3.2 Sa se rezolve ecuatia2x = x2.

    Rezolvarea ecuatiei f(x) = 2x x2 = 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 functiei f(x)

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

    info=

    1.

    y=

  • 5/25/2018 LabNum.pdf

    40/126

    40 CAPITOLUL 3. REZOLVAREA SISTEMELOR SI ECUATIILOR ALGEBRICE

    0

    x=

    2.

    Dacax0 = 5 atuncix= 4, iar pentrux0 = 1 gasimx= 0.7666647.Graficul functiei f este reprezentat n Fig.3.1.

    Figure 3.1:y= 2x x2

    3.3 Rezolvarea ecuatiilor polinomiale

    n cazul particularal ecuatiilor polinomiale se cere determinarea tuturor radacinilor

    reale sau complexe.Pentru aflarea radacinilor unui polinom se procedeaza astfel:

    1. Se defineste polinomulScilab pde variabilax.

    2. Radacinile polinomuluipsunt calcutate ajutorul functieiScilab

  • 5/25/2018 LabNum.pdf

    41/126

    3.3. REZOLVAREA ECUATIILOR POLINOMIALE 41

    x=roots(p)

    unde

    peste polinomulScilabcu coeficienti reali sau complecsi de grad celmult 100.

    xeste un tablou cu radacinile polinomuluip.

    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,coef);x=roots(p)

    x=

    ! - .5 + .8660254i !

    ! - .5 - .8660254i !

    ! - .5 + .8660254i !

    ! - .5 - .8660254i !

  • 5/25/2018 LabNum.pdf

    42/126

    Capitolul 4

    Rezolvarea problemelor de

    interpolare

    Cap. 3 Cap. 5

    Fie Fo familie interpolatoare de ordin npe axa reala. Dndu-se nodurile(xi)1

    i

    nsi numerele (yi)1

    i

    n, daca

    Feste functia de interpolare care satis-

    face conditiile(xi) =yi, 1 i n, se cere sa se calculeze(z), undezeste unpunct dat.

    4.1 Interpolare polinomiala

    Pentru F= Pn1solutia problemei de interpolare Lagrange este polinomul

    L(Pn1; x1, . . . , xn;y1, . . . ,yn)(z) =n

    i=1yi

    nj=1j=i

    z xjxi xj

    Valoarea acestui polinom este calculat de functiaScilab

    function f=lagrange(xd,x,y)

    [mx,nx]=size(x);

    42

  • 5/25/2018 LabNum.pdf

    43/126

    4.1. INTERPOLARE POLINOMIAL A 43

    [my,ny]=size(y);

    ierror=0;

    if (nx~=ny)|(mx~=1)|(my~=1),

    ierror=1;

    disp(data dimension error)

    abort

    end

    xx=gsort(x);

    for k=1:nx-1,

    if xx(k)==xx(k+1),

    ierror=1;

    break,

    end

    endif 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);

  • 5/25/2018 LabNum.pdf

    44/126

    44 CAPITOLUL 4. REZOLVAREA PROBLEMELOR DE INTERPOLARE

    end

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

    end

    end

    end

    endfunction

    Semnificatiile parametrilor formali si a rezultatului sunt:

    xdeste o matrice de numere. n fiecare element al matriceixdse cal-culeaza valoarea polinomului de interpolare Lagrange.

    x= (xi)1in, sirul nodurilor de interpolare;

    y= (xi)1in, sirul valorilor interpolate;

    feste o matrice de aceleasi dimensiuni cax d si are ca elemente valorilepolinomului de interpolare Lagrange calculate n elementele corespunza-toare ale matriceixd.

    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) = x2xi = 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 !

  • 5/25/2018 LabNum.pdf

    45/126

    4.2. INTERPOLARE CU FUNCTII SPLINE CUBICE 45

    4.2 Interpolare cu functii spline cubice

    DacaF

    =S3, multimea functiilor spline cubice atunci pentru rezolvarea prob-

    lemei de interpolare utilizam functiileScilab

    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)1in, sirul nodurilor de interpolare;

    y= (xi)1in, sirul valorilor interpolate; spline_typeeste un string care precizeaza conditiile la limita utilizate si

    poate fi:

    not_a_knot - alegerea implicita: Dacax1 < x2 < . . . < xn1 < xnatunciconditiile la limita sunt

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

    clamped:s(x1) = der1s(xn) = der2

    natural:

    s(x1) = 0s(xn) = 0

    periodic: Dacay1 =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.

  • 5/25/2018 LabNum.pdf

    46/126

    46 CAPITOLUL 4. REZOLVAREA PROBLEMELOR DE INTERPOLARE

    dparametri functiei spline cubice de interpolare;

    xdeste o matrice de numere. n fiecare element al matriceixdse cal-

    culeaza valoarea functiei spline cubice de interpolare. Aceste elemente tre-buie sa fie cuprinse n intervalul determinat de nodurile dinx.

    f0,f1,f2,f3 sunt matrice de aceleasi dimensiuni caxdsi au ca elementevalorile functiei spline cubice de interpolare si respectiv a derivatelor deordinul 1, 2 si 3, calculate n elementele corespunzatoare ale matriceixd.

    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 !

  • 5/25/2018 LabNum.pdf

    47/126

    Capitolul 5

    Derivare numerica

    Cap. 4 Cap. 6

    5.1 Derivarea functiilor de o variabila reala

    Pentru calculul derivatei f(x0) unde f :I

    Reste o functie derivabila,Iun

    interval iarx0 Int(I),Scilabofera 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

    Dacaf :RnRm atuncijacobianulsihessianulse obtin cu functiaScilab

    47

  • 5/25/2018 LabNum.pdf

    48/126

    48 CAPITOLUL 5. DERIVARE NUMERICA

    [J[, H]] = derivative(f, x[,h,order])unde

    x- punctul n care se calculeaza jacobianulJsi hessianulH;

    hR pasul utilizat n formula de derivare numerica;

    order {1,2, 4} ordinul formulei de derivare numerica (valoarea implicitaeste2).

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

    x2yx3 +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

    RezolvareaScilabeste

    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.

  • 5/25/2018 LabNum.pdf

    49/126

    Capitolul 6

    Construirea unei functii

    de aproximare prin metoda

    celor mai mici patrate

    Cap. 5 Cap. 7

    Cazulliniar.Determinarea unui polinom de aproximare construit prin metodacelor mai mici patrate de gradmpentru datele (xi,yi)1in(m

  • 5/25/2018 LabNum.pdf

    50/126

    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

    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 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)0i20unde 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.047619

    1.110D-16

    c2=lq(2,x,y)

    c2=

    0.3883622

    1.110D-16

    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)

  • 5/25/2018 LabNum.pdf

    51/126

    51

    Astfel, polinoamele de aproximare de gradul nti 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 functieix2 prin polinom de grad 1 si 2.

    Cazul neliniar.

    Pentru determinarea functiei de aproximarey=(t, x1, . . . , xn) care minimizeaza

    expresia

    (x1, . . . , xn) =m

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

    cu metoda Gauss-Newton se utilizeaza functiaScilableastsq:

  • 5/25/2018 LabNum.pdf

    52/126

    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 c tdefineste termenii din suma (6.1);

    d f ct este jacobianul functiei f ct;

    f optvaloarea functiei calculata nxopt;

    xoptvaloarea optima gasita a parametrilorx;

    gopt gradientul functiei calculata nxopt.

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

    t=0:5

    y=2*exp(-t)

    Definim functiileScilab

    function y=f1(x,t)

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

    Necunoscutelea,bdevin componentele vectoruluix(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 =

  • 5/25/2018 LabNum.pdf

    53/126

    53

    0. 0.

    xopt =

    2. - 1.

    fopt =

    0.

    Dacasefixeaza gradientul functieif c t:d f ct = (f c ta ,

    f c tb ) = (

    f c tx1

    ,f c tx2

    ) = (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 functiascilab lsqrsolve:[xopt[,v]]=lsqrsolve(x0,fct,m)[xopt[,v]]=lsqrsolve(x0,fct,m,dcft)

    unde

    x0 este aproximatia initiala a parametrilor;

    f c tdefineste termenii din suma (6.1);

    mreprezinta numarul termenilor din suma (6.1);

    d f ct este jacobianul functiei f ct;

    xoptvaloarea optima gasita a parametrilorx;

    vvaloarea fiecarui termen din suma (6.1) calculata nxopt.

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

    function [t,y]=data(m)

    t=1:m;

    y=2*exp(-t);

    endfunction

  • 5/25/2018 LabNum.pdf

    54/126

    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.110223

    0.5551115

    0.2775558

    0.0693889

    0.0346945

    0.0086736

    xopt =

    2. - 1.

  • 5/25/2018 LabNum.pdf

    55/126

    Capitolul 7

    Integrare numerica

    Cap. 6 Cap. 8

    7.1 Integrarea numerica a functiilor

    de o variabila realaPentru calculul integralei

    I=b

    af(x)dx

    undef : [a,b] Reste o functie continua,Scilabofera mai multe programe:

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

    xvaluarea calculata a integralei;

    expeste expresia functiei de integrat, dat ca un sir de caractere; vareste variabila de integrare dat ca string;

    aextremitatea stnga a intervalului de integrare;

    bextremitatea dreapta a intervalului de integrare;

    55

  • 5/25/2018 LabNum.pdf

    56/126

    56 CAPITOLUL 7. INTEGRARE NUMERICA

    ea, erreprezinta o eroare absoluta si o eroare relativa. Preciznd acestiparametri, regula de oprire a programului este |xI| max{ea,er|I|}.

    Exemplul 7.1 Sa se calculeze integralele:

    1.1

    016 x15dx

    2.

    2

    0

    sin(x)

    x dx

    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

    xvaluarea calculata a integralei;

    er rvaloarea estimata a erorii absolute;

    aextremitatea stnga a intervalului de integrare;

    bextremitatea dreapta a intervalului de integrare;

    f identificatorul functieiScilabde integrat;

    ea, erreprezinta o eroare absoluta si o eroare relativa. Preciznd acestiparametri, regula de oprire a programului este |xI| max{ea,er|I|}.

    Utilizndintg,integralele exemplului anterior se calculeaza astfel:

    1.

  • 5/25/2018 LabNum.pdf

    57/126

    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-14

    x=

    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-14

    x=1.3707622

    Daca f(x, p1, p2, . . .) este o functieScilabavnd pe prima pozitie variabila deintegrare atunci

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

    calculeaza integrala ba

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

    7.2 Calculul numeric al integralelor duble

    Pentru domeniulDdefinit prin

    D= {(x,y) : a x b, f in f (x) yf sup(x)}

    integrala D

    f c t(x,y)dxdy

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

    formali este: cale calea la catalogul care contine subprogramene (functiile) necesare

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

    t oltoleranta utilizata n regula de oprire;

  • 5/25/2018 LabNum.pdf

    58/126

    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

  • 5/25/2018 LabNum.pdf

    59/126

    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);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

    endfor j=1:m-1,

    x=a+(j-0.5)*hx;

    fi=finf(x);

    fs=fsup(x);

  • 5/25/2018 LabNum.pdf

    60/126

    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);

    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);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

    endfor 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,

  • 5/25/2018 LabNum.pdf

    61/126

    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 Sasecalculeze

    Dx ydxdy unde domeniul D este delimitat de curbeley= x2 si y = 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

  • 5/25/2018 LabNum.pdf

    62/126

    Part II

    MathCAD

    62

  • 5/25/2018 LabNum.pdf

    63/126

    Capitolul 8

    Prezentare generala

    Cap. 7 Cap. 9

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

    MathCAD permite att programarefunctionala, adica prin compunerea functi-ilor, ct si programare procedurala, fiind nzestrat cu o paleta de programare efi-cienta.

    MathCAD ofera posibilitatea de calcul simbolic, nglobndo bibliotecaMaplede 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 reprezentare

    grafica ocupa un spatiu numitregiune.Regiunile sunt disjuncte doua cte doua.Procesul de calcul consta n evaluarea regiunilor Si are loc de sus n jos, jar penivel orizontal de la stnga spre dreapta. Regiunile pot fi vizualizate prin clic pebutonulView/Region,care functioneaza n regim "aprins/stins".

    Un calcul se poate opri fortat prin butonulEsc.

    63

  • 5/25/2018 LabNum.pdf

    64/126

    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 tastnd : sau prin alegerea din panoulEvaluation 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=

  • 5/25/2018 LabNum.pdf

    65/126

    8.1. EFECTUAREA CALCULELOR NUMERICE 65

    Exemplul 8.2

    x:= 3 x= 3h(x) :

    =5x3

    2 h(0)

    = 2

    7+3 x= 14

    3. Operatorul de definire globala Se obtine tastndShift+ sau prin panoulEvaluation Toolbar. Sintaxa este:

    parametrul MathCAD expresieOperatorulde definire globala permite fixarea sau modificarea unor parametriiMathCAD la nivel global, adica avnd 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 panoulGreek;

    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.3

    a1_2 _ind %p_presiunea c on st a .bc d ab

    8.1.3 Constante MathCAD

    MathCAD recunoaste cteva constante uzuale:,e- baza logaritmului natu-

    ral, - infinit, i(sauj) - unitatea imaginara. Pe lnga aceste constante mai existasi o serie de constante sistem predefinite (globale):

    TOLacarei valoare implicita este 0.001 si care reprezinta toleranta utilizatan testele de convergenta.

  • 5/25/2018 LabNum.pdf

    66/126

    66 CAPITOLUL 8. PREZENTARE GENERALA

    CTOL a carei valoare implicita este 0.001 si care reprezinta toleranta deconstrngere 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 avnd 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+2n punctul0.5se defineste

    x:= 0.5 y:= x2 3 x+2Rezultatul se obtine tastnd 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 literaosauO(deexemplu 15o), iar n cazul bazei hexazecimale numarul va fi urmat de literahsauH(de exemplu A1Eh).

    Pentru a defini o constanta complexa se utilizeaza forma algebricaa+ bi.nloculluiisepoatefolosicaunitateimaginara si j. Pentrua defini unitateaimaginara se tasteaza 1i sau 1j.

    Operatorii algebrici uzuali sunt

  • 5/25/2018 LabNum.pdf

    67/126

    8.1. EFECTUAREA CALCULELOR NUMERICE 67

    Operator algebric Se obtine tastnd

    + (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..4defineste progresia aritmetic a

    x=0

    0.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.5definesc urmatoarele progresi-ile aritmetice

  • 5/25/2018 LabNum.pdf

    68/126

    68 CAPITOLUL 8. PREZENTARE GENERALA

    i= j=0.51.5

    2.5

    54

    3

    3. Variabila indice

    O variabila domeniu ale carei valori sunt numere naturale consecutive senumestevariabila 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 rezultnd k:= 2..5

    4. Sir

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

    variabila_sirvariabila_indice :=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 sira= (ai)iI

  • 5/25/2018 LabNum.pdf

    69/126

    8.1. EFECTUAREA CALCULELOR NUMERICE 69

    Apelare Semnificatie

    length(a) Numarul elementelor sirului

    last(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 dimensiunense considera matrice cunlinii si o coloana.

    Pentru a introduce o matrice n documentul curent se selecteaza din me-

    niulInsert/Matrixsau 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 facndu-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 ORIGIN 1.Referirea unui element al unui tablou se face indicnd 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:= i2 +j

    2

    atunci se obtine

    X=

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

  • 5/25/2018 LabNum.pdf

    70/126

    70 CAPITOLUL 8. PREZENTARE GENERALA

    Exemplul 8.10

    DacaA:=

    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 tastndCtrl+6sau prin paletaMatrixM.

    Exemplul 8.11

    Fie

    u =

    12

    A=

    1 02 1

    Pentrui:= 0..4 calculam

    u:=A u

    obtinnd

    u = 12 u = 10

    iar

    u=

    1 1 1 1 1 12 0 2 0 2 0

    u1,4 = 2 u0,4 = 1

    DacaMeste o matrice, expresiaMdesemneaza coloana ia matriceiM.

    Operatori matriceali

    Operator algebric Se obtine tastnd+ (adunare) + (scadere) (nmultire)

    (ridicare la putere)

  • 5/25/2018 LabNum.pdf

    71/126

    8.1. EFECTUAREA CALCULELOR NUMERICE 71

    Functii uzuale aplicabile (operatori aplicabili) unei matriceA= (ai,j)iI,jJ

    Apelare Semnificatie

    rows(A) Numarul liniilor matriceicols(A) Numarul coloanelor matriceitr(A) urma matriceiAT transpusa matricei|A| determinantul matriceiA1 inversa matriceirank(A) rangul matriceinorm1(A) norma Minkovski, maxj

    i|ai,j|

    norm2(A) norma euclidiana,

    maxeigenvals(aT a)norme(A) norma Frobenius,

    i,ja

    2i,j

    normi(A) norma Cebsev, 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

  • 5/25/2018 LabNum.pdf

    72/126

    72 CAPITOLUL 8. PREZENTARE GENERALA

    Apelare Semnificatie

    sin(x) sin x

    cos(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)1in, obtinnd zi= f(xi,yi), i {1,2,. .. ,n}.. MathCAD oferaposibilitatea efectuarii acestor calcule prin vectorizare, un procedeu care este

    multmai rapid dect prin folosirea indecsilor. Sintaxa utilizata este

    x:=

    x1...

    xn

    y:=

    y1...

    yn

    z= f(x,y)

    Operatorul de vectorizare se obtine tastnd Crtl + -fie din paletaMatrixcu cursorul MathCAD plasat pe relatia de calcul.

    Exemplul 8.12 Rezolvarea ecuatiilor de gradul doi avnd coeficientii

    a:=

    1111

    b:=

    3210

    c:=

    2114

  • 5/25/2018 LabNum.pdf

    73/126

    8.1. EFECTUAREA CALCULELOR NUMERICE 73

    Formulele

    x:=

    b+

    b2 4 ac2 a

    y:=

    b

    b2 4 a c2 a

    produc rezultatele

    x=

    11

    0.5+0.866i2i

    y=

    21

    0.50.866i2i

    8.1.6 Unitati de masura

    Variabilele MathCAD pot reprezenta marimi fizice, n care caz valoarea nu-

    merica este urmatadeounitatedemasura. 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 dinSistemul In-ternational (SI). Acest lucru nseamna ca la folosirea semnului egal un rezultat cecontine si unitati de masuravafiafisat 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 lnga (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 vscozitatielectricitate frecventa temperatura

    Alegerea / schimbarea sistemulul de unitati de masurasefaceprinmeniul Tools/Worksheetoptions.../Unit system.

    Exemplul 8.13 Sa se calculeze marimea fortei ce actioneaza asupra unui corp de

    masa 5 kg si c areia i imprima o acceleratie de 2 ms2 .

    masa:= 5 kg acc := 2 ms2

    F:= masa ac cF= 10N

  • 5/25/2018 LabNum.pdf

    74/126

    74 CAPITOLUL 8. PREZENTARE GENERALA

    Transformarea unitatilor

    Pentru transformarea unei marimi dintr-un sistem n altul este suficienta cunoaster

    notatiilor 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:= 11000

    kg 3 kg= 3103g

    mi n:= 60 s h:= 60 mi n 1 h= 3.6103s

    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.

  • 5/25/2018 LabNum.pdf

    75/126

    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 2 D n

    coordonate 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 cux(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 sauEnterdeclanseaza realizarea reprezen-tarii grafice.

    x

    f(x)

    MathCAD permite reprezentarea functiilor cunoscute prin valori discrete:(xi,yi)1in, yi=f(xi),i. n acest caz cele doua pozitii marcate initiale se com-pleteaza cuxisi respectivyi.

    Pentru a obtine n acelasi cadrureprezentarea grafica pentrumai multe functii,se introduc variabilele si functiile separate prin virgula.

    x, x,y

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

  • 5/25/2018 LabNum.pdf

    76/126

    76 CAPITOLUL 8. PREZENTARE GENERALA

    Reprezentarea grafica 2 D n

    coordonate polare

    Daca curba are ecuatia polarar= r(t) atunci n urma comenzii de realizare areprezentarii grafice apare un cadru cu doua pozitii marcate, care se completezacut si respectivr(t). n cadru apar alte doua pozitii marcate, pentru fixarea in-tervalului n care variazat.. Completarea acestor pozitii marcate este optionala.Un clic n afara cadrului sauEnterdeclanseaza realizarea reprezentarii grafice.

    tr(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 meniulFormat/Graph/X-Y PlotsauPolar 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.

  • 5/25/2018 LabNum.pdf

    77/126

    8.3. CREAREA UNEI ANIMATII 77

    Reprezentare grafica 3 D n

    coordonate 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 potfi create si apoi rulatescurteclipuri 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 optiuneaRecorddin meniulTools/Animation;

    3. Dupadeschidereacasutei de dialog se selecteaza din foaia de lucruregiunea

    ce 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 butonuluiAnimate.

    O animatie creata poate fi salvatacafisier .avi si poate fi vizualizat si independentde MathCAD. Pentru aceasta se selecteaza butonul Save as dincadrulcasutei dedialog.

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

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

  • 5/25/2018 LabNum.pdf

    78/126

    78 CAPITOLUL 8. PREZENTARE GENERALA

    Astfel definim

    f(x) :

    =x2 g(x) :

    =x M axF RAME :

    =60

    h(x) := FRA M EMaxFRAME

    f(x)+ (1 FRA M EMaxFRAME

    ) g(x)

    a:= 1 b:= 1si construim graficul functieih(x)(FRA M E= 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 tastnd " (ghilimele). n masura n carese adauga text, regiunea se extinde la dreapta. TastndEnterse trece pe liniaurmatoare. Regiunea text se paraseste prin plasarea cursorului n afara ei.

    MeniulFormatofera facilitati de formatare a textului.

    8.5 Salvarea / restaurarea datelor numerice

    Comunicatii ntre medii de programare

    Date numerice sub forma unei matrice se pot salva si / sau ncaca n / dinfisiere ASCII asigurnd 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:= READPRN(fisier)

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

    W R I T E P R N (fisier) :=A

  • 5/25/2018 LabNum.pdf

    79/126

    8.6. INSTRUMENTE DE CALCUL SIMBOLIC 79

    APPENDPRN(fisier) adaugarea o matrice la sfrsitul unui fisier deja existent.Fiecare linie a matricei devine o noualinienfisier. Forma de apel a functieieste:

    AP PE NDPRN(fisier) :=A

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

    Amintim posibilitatea inserarii n MathCAD de componente MSOffice, dar si

    pentru alte produse informatice.

    8.6 Instrumente de calcul simbolic

    Exista doua componente prin care se pot efectua calcule simbolice:

    Utiliznd comenzile meniului Symbolic, accesibil din bara superioara demeniuri (MenuBar) (Fig.8.3);

    Utiliznd 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 continuten tabelul urmator:

  • 5/25/2018 LabNum.pdf

    80/126

    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 pna 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 TransformareazInverseZ Transformareazinversa

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

    Selectarea unui element se obtine prin clic asupra elementului sau utilizndtastatura, cu ajutorul tastelor directionale pozitionam cursorul pe elementul dorit.Elementul selectionat este ncadrat. Cu ajutorul tastei Space o zona selectata sepoate extinde si restrnge 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.

  • 5/25/2018 LabNum.pdf

    81/126

    8.7. ELEMENTE DE PROGRAMARE FUNCTIONAL A 81

    3. Se selecteaza comanda dorita din meniul Symbolic si se lanseaza n exe-cutie prin clic sau tastndEnter.

    Rezultatul apare sub expresia n cauza.Pentru editarea unei ecuatii ntre membrul stng si membrul drept se puneegalul simbolic, care se obtine tastndCtrl+=.

    Utilizareafunctiilor casetei Symbolic.Functiilecasetei Symbolic se apeleazaprintr-un clic, n dreptul cursorului MathCADapare 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 tastndCtrl + . urmat de clic n afara regiunii expresieisau tastndEnter.

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

    Functiunea Se obtine tasnd

    Calculul unei sume Ctrl+ $Calculul unui produs Ctrl+ #Calculul unei limite Ctrl + lLimita la dreapta Ctrl + Shift + aLimita la stnga Ctrl + Shift + bDerivare Ctrl + ? si ?Calculul unei primitive Ctrl + i

    Calculul unei integrala Ctrl+ &

    Cu ajutorul clauzeiassumese 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 condeste adevarata atunci valoarea retur-

    nata de operator esteexp1iar n caz contrarexp2.condeste o expresie logica.n MathCAD orce valoare nenula reprezinta valoarea logicaadevarat si0reprez-

    inta valoarea logica fals.Operatorii relationali si operatorii logici se pot obtine prin paletaBoolean

    sau tastnd

  • 5/25/2018 LabNum.pdf

    82/126

    82 CAPITOLUL 8. PREZENTARE GENERALA

    Operatori relationali Se obtine tastnd

    = Ctrl + =

    < >> < Ctrl + 9 Ctrl + 0= Ctrl + 3

    Operatori logici Se obtine tastnd

    (negatia) Ctrl + Shift + 1 (disjunctia) Ctrl + Shift + 7 (conjunctia) Ctrl + Shift + 6

    (sau exclusiv) Ctrl + Shift + 5Exemplul 8.16 Sa se calculeze limita sirului(an)nNdefinita prin formula de re-curent a

    an+1 =

    an+2 a0 =

    2

    cu o precizie= 106 n sensul|an an1| < .

    Codul MathCAD este

    N:=

    100 n:=

    1..N :=

    106

    a0:=

    2 a1:=

    2+

    2

    an+1:= if|an an1| ,

    an+2, an

    l i m:= alast (a) l i m= 2

    8.8 Elemente de programare procedurala

    MathCADeste 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 unelteleMathCAD) (Fig.8.4).

    Un program MathCAD va apare ca o functie

  • 5/25/2018 LabNum.pdf

    83/126

    8.8. ELEMENTE DE PROGRAMARE PROCEDURAL A 83

    NumeFunctie(vari abile f ormale) :=

    instructiunile

    programului. . .expresia returnata

    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 cursoruluiMathCAD.

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

    NumeFunctie(vari abile f ormale) :=

    urmat de clic pe Add Line.Rezultatul va fi

    NumeFunctie(vari abile f ormale) :=

    Semnul desemneaza cursorulMathCAD.Cele doua pozitii marcate permit extinderea numarului de rnduri (din nou

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

    indici, etc.

    corespunde instructiunii de atribuire, variabilei din membrul stng i seatribuie valoarea expresiei din membrul drept.

    ifeste instructiunea conditionala. Selectnd aceasta instructiune, po-zitiamarcata de cursorulMathCADse transforma n

    i f

    Cele doua pozitii marcate se completeaza cu

    1. expresia care se obtine daca conditia este adevarata (pozitia marcatadin stnga);

    2. conditia instructiuniiif(pozitia marcata din dreapta).

  • 5/25/2018 LabNum.pdf

    84/126

    84 CAPITOLUL 8. PREZENTARE GENERALA

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

    i fn 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.

    otherwisefolosit dupa ifpermite specificarea actiunilor de efectuat n cazuln care conditia instructiunii conditionale este falsa. Selectarea instructiu-niiotherwisetransforma pozitia marcata de cursorulMathCADn

    otherwise

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

    on erroreste instructiunea de tratare a exceptiei de depasire flotanta. Selec-tnd instructiuneaon errorpozitia marcata de cursorulMathCADdevine

    on err 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 err or 1x

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

    Ultima valoare este cel mai mare numar cu care opereazaMathCAD.

    whilesiforreprezinta instructiunile de ciclare cu test initial si respectiv cucontor.

    Selectnd instructiunea while, pozitia marcata de cursorul MathCADdevine

    while

    Cele doua pozitii marcate se completeaza cu

  • 5/25/2018 LabNum.pdf

    85/126

    8.8. ELEMENTE DE PROGRAMARE PROCEDURAL A 85

    1. testul initial buclei;

    2. instructiunile ciclului.

    Selectnd instructiunea for, pozitia marcata din dreptul cursoruluiMath-CADse nlocuieste prin

    f or

    Cele trei pozitii marcate se completeaza cu

    1. indicele ciclului;

    2. intervalul n care variaza indicele;

    3. instructiunile buclei.

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

    Instructiunea continuese foloseste pentru scurtcircuitarea partiala a uneiinstructiuni de ciclarewhile, for;executia se reia de la prima instructiune abuclei, sarindu-se peste secventa de cod cuprinsa ntre instructiuneacon-tinuesi sfrsitul buclei.

    Instructiuneareturnare ca efect scurtcircuitarea programului. Instruc- ti-unile care urmeaza nu mai sunt executate. Selectarea acestei instructiuni

    introduce pe pozitia marcata de cursorulMathCAD

    return

    Noua pozitie marcata se completeaza cu valoarea returnata de functie.

    Binenteles, ntr-un program MathCADse poate utiliza ntreaga familie de functiinumerice ale produsului.

    Exemplificam posibilitatile oferite prin calculul sirului primelorNnumereprime (8.5).

  • 5/25/2018 LabNum.pdf

    86/126

    86 CAPITOLUL 8. PREZENTARE GENERALA

    Figure 8.2: Animatie tip "morphing"

  • 5/25/2018 LabNum.pdf

    87/126

    8.8. ELEMENTE DE PROGRAMARE PROCEDURAL A 87

    Figure 8.3: Meniul si caseta Symbolic.

    Figure 8.4: Caseta cu instrumentele de programare.

  • 5/25/2018 LabNum.pdf

    88/126

    88 CAPITOLUL 8. PREZENTARE GENERALA

    Figure 8.5: ProgramMathCAD: Calculul sirului primelorNnumere prime.

  • 5/25/2018 LabNum.pdf

    89/126

    Capitolul 9

    Algebra liniara numerica

    Cap. 8 Cap. 10

    9.1 Factorizarea unei matrice

    Functiile

    M= lu(A) calculeaza factorizarea LU a matriceiA Mn(R) :P A= LU.MatriceaMs-a obtinut prin alaturarea matricelorP, L,U. Matricea Atre-buie sa fie nesingulara.

    M= qr(A) calculeaza descompunerea QR a matriceiA Mn,k(R) :QA= R.MatriceaMs-a obtinut prin alaturarea matricelor QsiR.

    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

  • 5/25/2018 LabNum.pdf

    90/126

    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 00.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 13 6 1

    2 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.4290.429 0.857 0.286

    0.286 0.429 0.857

    R=

    7 8 1.5710 3 0.143

    0 0 0.714

    9.2 Rezolvarea sistemelor algebrice de ecuatii liniare

    Pentru rezolvarea sistemelor algebrice de ecuatii liniare de forma Ax

    =bn

    care numarul necunoscutelor coincide cu numarul ecuatiilor, MathCAD oferadoua modalitati de abordare.

    Mai ntai se defineste matriceaAa sistemului si apoi vectorul coloanabprinatribuire. Daca matriceaAa sistemului este nesingulara solutiaxse calculeazacu ajutorul formuleix:=A1 b. Acelasi rezultat se obtine si prin intermediulcomenziix:= lsolve(A,b). n cazul n care determinantul matricei sistemuluieste nul, aceasta nsemnnd ca sistemul algebric de ecuatii liniare dat are ne-cunoscute secundare, o solutie particulara a acestuia se poate obtine prin inter-mediul aceleiasi comenzix:= lsolve(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

  • 5/25/2018 LabNum.pdf

    91/126

    9.2. REZOLVAREA SISTEMELOR ALGEBRICE DE ECUATII LINIARE 91

    Pentru rezolvarea sistemului se defineste matricea patraticaAde dimensiunepatru si vectorulb, 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:=A1 b x=

    2111

    Acelasi rezultat se obtine si prin

    x:= lsolve(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:=

    108428

    |A| = 0 x:= lsolve(A,b) x=

    26.4

    25.4

    90

    Solutia astfel obtinuta reprezinta o solutie particulara a sistemului dat.

  • 5/25/2018 LabNum.pdf

    92/126

    Capitolul 10

    Rezolvarea sistemelor si ecuatiilor

    algebrice

    Cap. 9 Cap. 11

    10.1 Rezolvarea sistemelor algebrice de ecuatii neliniarePentru rezolvarea sistemelor algebrice neliniare de forma

    f1(x1, . . . , xn) = 0...fn(x1, . . . , xn) = 0

    sau scris sub forma condensataf(x) = 0 cu

    x=

    x1...

    xn f(x) =

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

    fn(x1, . . . , xn)

    MathCAD ofera doua functii: findsiminerr. Pentru gasirea unei solutii estenecesara precizarea unei aproximatii initiale. Pornind de la aceasta aproximatieMathCAD construieste prin intermediul unui proces iterativ noi aproximatii ale

    92

  • 5/25/2018 LabNum.pdf

    93/126

    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 sistemalgebric de ecuatii neliniare consta n construirea unuibloc de rezolvare care trebuie sa contina cuvntul cheie given si una din functiilefind, respectivminerr. Cuvntul cheiegiventrebuie sa preceada n blocul derezolvare ecuatiile sistemului.

    Exemplul 10.1 Sa se rezolve sistemul algebric de ecuatii neliniare:

    10x1 + x21 2x2x3 0.1 = 010x2 + x22 2x1x3 + 0.2 = 010x3 + x23 2x1x2 0.3 = 0

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

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

    10 x+y2 2 y z0.1=010 y+y2 2 x z+0.2=010 z+ z2 2 xy0.3=0

    find(x,y, z) =

    9.8411030.02

    0.03

    Semnul"egal"scris ntre cei doi membrii ai fiecarei ecuatii se obtine prinapasarea simultana a tastelor Ctrlsi 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 faceapasnd butonul din dreapta mouse-ului pe numele functiei find siapoiprinse-lectarea unei optiuni di