Utilizarea Calculatoarelor i (Conf. Univ. Dr. c. Gavrila)

download Utilizarea Calculatoarelor i (Conf. Univ. Dr. c. Gavrila)

of 95

Transcript of Utilizarea Calculatoarelor i (Conf. Univ. Dr. c. Gavrila)

I. PREZENTAREA GENERAL I. PREZENTAREA GENERAL I. PREZENTAREA GENERAL I. PREZENTAREA GENERAL A PROGRAMULUI SCILABA PROGRAMULUI SCILABA PROGRAMULUI SCILABA PROGRAMULUI SCILAB I. 1. Ce este Scilab I. 1. Ce este Scilab I. 1. Ce este Scilab I. 1. Ce este Scilab- -- -ul? ul? ul? ul? Structural,SCILAB-uleste,cumicimodificri,ovariant gratuitaMATLAB-uluiavndversiunipentruUnixipentru Windows. La adresa www.scilab.org se gsete documentaie gratuit peINTERNETreferitoarelaScilabprecumiprogramul corespunztor. Pentrunceput,Scilab-ulsepoatefolosipentruefectuarea calculelorelementare,operaiilorcuvectoriimatrice(cu elemente reale i complexe) i reprezentrilor grafice de curbe i suprafee.Deasemenea,Scilabulpoatefiunmediuagreabilde realizareacalculelornumericepentrucdispunedeoseriede metode uzuale din acest domeniu, de exemplu: -rezolvarea sistemelor liniare, -calculul valorilor i vectorilor proprii, -rezolvarea ecuaiilor difereniale, -rezolvarea sistemelor neliniare, -noiuni de baz din algebra liniar, -algoritmi de optimizare Programarea n Scilab se efectueaz destul de uor, pentru anumitesecvenemaicomplicatesepotfolosisubprograme realizatenCsaufortran(77).Scilab-ulincludeaplicaii specifice,numiteTOOLBOX-uri-coleciiextinsedefuncii SCILABcaredezvoltmediuldeprogramaredelaoversiunela alta, pentru a rezolva probleme din domenii variate. I. 2. Mediul Scilab I. 2. Mediul Scilab I. 2. Mediul Scilab I. 2. Mediul Scilab MediulScilablucreazcumaimultetipurideferestre:o fereastrdecomenzi,ofereastrpentrufiieresaugrafice,o fereastr pentru help. Cnd se lanseaz n execuie se deschide implicitfereastradecomandcare,coninemeniurileFile,Edit,File,Edit,File,Edit,File,Edit, Preferences, Control, Editor, ApplicationsPreferences, Control, Editor, ApplicationsPreferences, Control, Editor, ApplicationsPreferences, Control, Editor, Applications i? ?? ? (help) i o bar de butoane unde nfereastradecomenzi,instruciunilesescriupe prompterul-->iseexecutapsndEnter;instruciunilese execut de la stanga la dreapta i de sus n jos n ordinea n care s-au scris. Buton Buton Buton ButonSemnificaie Semnificaie Semnificaie Semnificaie Deschide o nou fereastr de comand Deschide Scipad-ul (editorul Scilab-ului) Deschide un fiier Copieaz Lipete Schimb directorul Consol Scilab Alege font Meniul FileFileFileFile conine: unde,unfiierspecificatesteexecutatcuExec Exec Exec Execincrcatcu Load Load Load Load. Activat meniul EditorEditorEditorEditor face s se dechid editorul Scilab-ului ncaresepotscrieprogramecaresepotexecutafolosind Execute/Load into Scilab Execute/Load into Scilab Execute/Load into Scilab Execute/Load into Scilab. FolosindScicos Scicos Scicos ScicosdinApplications Applications Applications Applicationssepotrealizadiverse diagrame i simulri n fereastra care se deschide. Pentrurealizareadiagramelorsepotalegeobiectefolosind opiuneaPalettes Palettes Palettes PalettesdinEdit Edit Edit Edit(sauclicdreaptacumouse-ul),de exemplu: Sepotintroduceinstruciunicuajutorulferestreidedialog obinute prin accesarea opiunii ContextContextContextContext (clic dreapta cu mouse-ul). ntr-ofereastrasemntoaresepoteditaipersonaliza graficele. II. INTRODUCERE N S II. INTRODUCERE N S II. INTRODUCERE N S II. INTRODUCERE N SCILAB CILAB CILAB CILAB II.II.II.II. 1. Noiuni Scilab 1. Noiuni Scilab 1. Noiuni Scilab 1. Noiuni Scilab Scilabulesteunpachetdeprogramedenaltperforman, dedicat calcului numeric i reprezentrilor grafice n domeniul tiinei iingineriei,precumisimulrilorstocastice.Matriceaeste elementuldebaz;cuaceastasepotrezolvaproblemefrafi necesar scrierea unui program ntr-un limbaj de programare. Tabel 1. Funcii SCILAB de interes general: Tabel 1. Funcii SCILAB de interes general: Tabel 1. Funcii SCILAB de interes general: Tabel 1. Funcii SCILAB de interes general: DenumireDenumireDenumireDenumire funcie funcie funcie funcie Aciune funcie Aciune funcie Aciune funcie Aciune funcie exit, quitComanda pentru ieirea din SCILAB helpFurnizeazinformaiion-linedespre SCILAB whoListeaz variabilele curente cdSchimb directorul de lucru dirAfieaz lista directorului clcterge fereastra de comenzi errorAfieaz mesaje de eroare existVerific dc o variabil sau un fiier exist dispAfieaz o matrice sau un text clearterge variabile i funcii $Indexulultimuluielementaluneimatrice sau a unui vector aproposCaut n help un cuvnt specificat type(a)Tipul variabilei a pauseIntrerupeexecutiauneifunctiisauaunui script Tabel 2. Operatorii aritmetici SCILAB: Tabel 2. Operatorii aritmetici SCILAB: Tabel 2. Operatorii aritmetici SCILAB: Tabel 2. Operatorii aritmetici SCILAB: Operaia Operaia Operaia OperaiaScalari Scalari Scalari ScalariMatrice Matrice Matrice MatriceTablouri Tablouri Tablouri Tablouri Priorita Priorita Priorita Prioritatea tea tea tea Adunare+++4 Scdere---4 nmulire**.*3 mprire la stnga \\ .\3 mprire la dreapta//./3 Ridicare la putere^^.^2 Transpunere.1 Tabel 3.Tabel 3.Tabel 3.Tabel 3. Operatorii relaionali SCILAB: Operatorii relaionali SCILAB: Operatorii relaionali SCILAB: Operatorii relaionali SCILAB: Operator Operator Operator Operator Semnificaie Semnificaie Semnificaie Semnificaie < > >Mai mare =Mai mare sau egal == == == ==Identic ~= ~= ~= ~=Diferit Observatie Observatie Observatie Observatie:Operatoriiaritmeticiauprioritatefatadeoperatorii relaionali. Tabel 4. Operato Tabel 4. Operato Tabel 4. Operato Tabel 4. Operatorii logici SCILAB: rii logici SCILAB: rii logici SCILAB: rii logici SCILAB: Operator Operator Operator OperatorSimbol SCILAB Simbol SCILAB Simbol SCILAB Simbol SCILABPrioritatea Prioritatea Prioritatea Prioritatea NU~ ~~ ~1 I&2 SAU| || |3 Tabel 5. Constante uzuale SCILAB: Tabel 5. Constante uzuale SCILAB: Tabel 5. Constante uzuale SCILAB: Tabel 5. Constante uzuale SCILAB: Constanta Constanta Constanta Constanta Semnificaiea Semnificaiea Semnificaiea Semnificaiea %i %i %i %iNumarul imaginar1 %pi %pi %pi %pi ... 1415926 . 3 = == = %e %e %e %eConstanta lui Euler e=2.7182818... %eps %eps %eps %eps eps1610 2 . 2 %inf %inf %inf %inf %s %s %s %sExpresie polinomiala s=poly(0,s) %t (%f) %t (%f) %t (%f) %t (%f)Variabila booleana true (false) true (false) true (false) true (false) Tabel 6. Variabile SCILAB: Tabel 6. Variabile SCILAB: Tabel 6. Variabile SCILAB: Tabel 6. Variabile SCILAB: Nr.crt. Nr.crt. Nr.crt. Nr.crt.Tipul variabilei Tipul variabilei Tipul variabilei Tipul variabileiExemplu Exemplu Exemplu Exemplu 1.Numeric - scalar si matrice (real sau complex) a=2.5;b=2.5e3 A=[1 2 3;4 5 6] 2.Sir de caractere-->sir="Acestaesteunsirde caractere"; -->length(sir) ans=31. 3.Boolean-->2*%t ans=2. -->7*%f ans=0. 4.List (list, mlist, tlist) -->l=list(1,2,3,4,5) l= l(1)1.l(2) 2. l(3)3. l(4)4. l(5)5. 5.Polinomial-->p=poly([1 2 3 4],'x','coeff') p= 2 3 1 + 2x + 3x + 4x Tabel 7. Funcii uzuale SCILAB: Tabel 7. Funcii uzuale SCILAB: Tabel 7. Funcii uzuale SCILAB: Tabel 7. Funcii uzuale SCILAB: Apelarea funciei Apelarea funciei Apelarea funciei Apelarea funcieiSemnificaia matematic Semnificaia matematic Semnificaia matematic Semnificaia matematic sin(x)sin x sinc(x) xx) sin( cos(x)cos x tan(x)tg x cotg(x)ctg(x) sinh(x)sh x cosh(x)ch x tanh(x)th x asin(x)arcsin x acos(x)arccos x atan(x)arctg x exp(x)ex log(x), log10(x)ln(x), lg(x) floor(x)[x] ceil(x)[x]+1 Re(z), Im(z)Re z, Im z lenght(v)Numrul elem. vectorului v size(a)Dimensiunea matricei a max(v)Cel mai mare elem. al vect. v min(v)Cel mai mic elem. al vect. v sqrt(x)x Exemple Exemple Exemple Exemple 1.S se calculeze: a) 1152 ) 21 lg( ) 5 ln( 24+ + Soluie: -->(%pi/4)^5-sqrt(2)+log(5)-log10(21)+2^11 ans=2047.1719 b) sin(x) sin(x) sin(x) sin(x)- -- -tg tg tg tg2 22 2(x)+2arctg(3x) (x)+2arctg(3x) (x)+2arctg(3x) (x)+2arctg(3x)- -- -ch(x) ch(x) ch(x) ch(x) pentru xxxx dat. 2.Fienumerelecomplexez1=2+5i z1=2+5i z1=2+5i z1=2+5isiz2= z2= z2= z2=- -- -3+i 3+i 3+i 3+i,ssecalculeze: z1+z2, z1*z2, z1/z2, z1 z1+z2, z1*z2, z1/z2, z1 z1+z2, z1*z2, z1/z2, z1 z1+z2, z1*z2, z1/z2, z17 77 7. Soluie: -->z1=2+5*%i z1=2. + 5.i -->z2=-3+%i z2=- 3. + i -->z1+z2 ans=-1. + 6.i 3.S se calculeze valoarea expresiilor urmatoare pentru un x xx x dat: a) 5 1) sin( 23 + ++ + xx ; Soluie: -->x=2; 2*sin(%pi*x)-sqrt((x^3+1)/5) ans=- 1.3416408 b) 32112 + ++ +xx ; c) 3211ln ) ( 2 + ++ +xx arctgSoluie: -->x=5; 2*atan(x^2)+log(1/(x-1)^3) ans=- 1.0972478d)) 1 lg( 85 + ++ + x x ; e) 32211) arcsin( 2 + ++ + xx f) 25211log sin 7 + ++ +xx ; g)( (( ( ) )) ) 252 + ++ + x chxtg ; h) 221 2 3 + ++ + + ++ + = == = x x P ; i)( (( ( ) )) )8) ln( 2 x x sh + ++ + ; Exemplu list Exemplu list Exemplu list Exemplu list: multe obiecte n Scilab se introduc cu funciile tlist tlist tlist tlist sau mlist mlist mlist mlist;deexemplu,dacsedefineteo variabil cuun anumitnumr decmpuri,aceastaserealizeazuorutilizndoperatorul. .. .. Variabila x xx x de tip tlist tlist tlist tlist se definete uor astfel: -->x.culoare=4; -->x.valoare=rand(1,3); -->x.nume='un_nume'; -->x x= culoare: 4 valoare: [0.8784126,0.1138360,0.1998338] nume: "un_nume" II. 2.II. 2.II. 2.II. 2. Manevrarea vectorilor i matricelor Manevrarea vectorilor i matricelor Manevrarea vectorilor i matricelor Manevrarea vectorilor i matricelor Definirea matricelor Definirea matricelor Definirea matricelor Definirea matricelor: Introducerea explicit a listei de elemente; Generarea prin instruciuni i funcii; Crearea de fiiere script; ncrcarea din fiiere de date externe.Introducerea explicit aIntroducerea explicit aIntroducerea explicit aIntroducerea explicit a unei matrice unei matrice unei matrice unei matrice: Elementele unei linii sunt separate prin virgul sau spaiu; Listaelementelormatriceitrebuiencadratntreparanteze drepte; Liniile se separ prin punct i virgul (;). Exemplu pentru definirea unei matrice Exemplu pentru definirea unei matrice Exemplu pentru definirea unei matrice Exemplu pentru definirea unei matrice:-->A=[1 1 1;2 4 8;3 9 27]Exemplu pentru definirea unui vector Exemplu pentru definirea unui vector Exemplu pentru definirea unui vector Exemplu pentru definirea unui vector: -->b=[ 2 10 44 190] b= ! 2.10.44.190. ! Tabel 8. Funcii pentru construirea unui vector sau unei matrice tip Tabel 8. Funcii pentru construirea unui vector sau unei matrice tip Tabel 8. Funcii pentru construirea unui vector sau unei matrice tip Tabel 8. Funcii pentru construirea unui vector sau unei matrice tip Funcia Funcia Funcia FunciaSemnificaia Semnificaia Semnificaia SemnificaiaExemplu Exemplu Exemplu Exemplu eyeMatricea unitate I=eye(4,4) I= ! 1.0.0. ! ! 0.1.0. ! ! 0.0.1. ! diagMatrice diagonal B=diag(b) B= ! 2.0. 0. 0. ! ! 0.10.0. 0. ! ! 0.0. 44.0. ! ! 0.0. 0. 190. ! zerosMatricecu toate elementele 0 -->C=zeros(3,2) C= ! 0.0. ! ! 0.0. ! ! 0.0. ! onesMatricecu toate elementele 1 -->D=ones(2,3) D= ! 1.1.1. ! ! 1.1.1. ! randMatricecu elemente aleatoare -->M=rand(3,4) M= !0.21132490.33032710.84974520.0683740 ! ! 0.75604390.66538110.68573100.5608486 ! ! 0.00022110.62839180.87821650.6623569 ! triuPartea triunghiular superioara unei matrice -->U=triu(D) U= ! 1.1.1. ! ! 0.1.1. ! ! 0.0.1. ! trilPartea triunghiular inferioara unei matrice -->V=tril(D) V= ! 1.0.0. ! ! 1.1.0. ! ! 1.1.1. ! linspaceVectorcu incrementare constant ntredoua valori -->v=linspace(0,1,5) v= ! 0.0.250.50.751. ! Observaie: acelas lucru se obtine daca -->x=0:0.25:1 x= ! 0.0.250.50.751. ! Pentru-->y=1:5 se obtine y=! 1.2.3.4.5. ! polyMatrice polinomiala Definirea unui polinom prin radacini: -->p=poly([1 3],'s') p=3 - 4s + s2 Definirea unui polinom prin coeficienti: -->poly([1 2],'s','c') ans=1 + 2s Exemple Exemple Exemple Exemple i exrciii i exrciii i exrciii i exrciii 1.Ssedefineascmatricele ( ) 6 54 32 1== b si a,apoisase construiasc matricea =642531cfolosind matricele a aa a si b bb b.Soluie: -->a=[1 2;3 4];b=[5 6]; -->c=[a;b] c=! 1.2. ! ! 3.4. ! ! 5.6. !2.Sseconstruiascmatricead dd dprinextragerealiniilor2 22 2i3 33 3din matricea c cc c pstrnd toate coloanele (prima coloan) a matricei c cc c. Soluie: -->d=c(2:3,:) d=! 3.4. ! ! 5.6. ! 3.S se calculeze suma elementelor matricei a aa a. Soluie: -->sum(a) ans=10. 4.S se calculeze a aa a5 55 5. 5.S se calculeze a aa aT TT T. 6.S se calculeze a aa a- -- -1 11 1. 7.S se calculeze urma matricei a aa a. 8.S se calculeze rangul matricei a aa a. 9.Fie A AA A o matrice patratic; ce reprezint diag(diag(A)) diag(diag(A)) diag(diag(A)) diag(diag(A))? -->d=c(2:3,1) d=! 3. ! ! 5. ! 10.Fiex xx xomatrice(vector),scrieiinstruciuneacarecalculeaz matricea y yy y a carui element (i,j) (i,j) (i,j) (i,j) este egal cu f(x f(x f(x f(xi,j i,j i,j i,j) )) ) unde: a)f(x) = 2x f(x) = 2x f(x) = 2x f(x) = 2x2 22 2- -- -3x+1; 3x+1; 3x+1; 3x+1; Soluie: -->x=[2 -5 7 4 -1]; -->2*x^2-3*x+1 ans=! 3.66.78.21.6. ! b) 1 3 2 ) (2+ ++ + = == = x x x f ; c)f(x) = (x f(x) = (x f(x) = (x f(x) = (x- -- -1)/(x+4); 1)/(x+4); 1)/(x+4); 1)/(x+4); Soluie: -->(x-1)./(x+4) ans=! 0.16666676.0.54545450.375- 0.6666667 ! Observaie Observaie Observaie Observaie: atenie la operaiile element cu element cnd se lucreaz cuunvectorsauomatrice;trebuieadugatunpunctnfaa operatorilor de multiplicare, *, imprire, /, sau ridicare la putere, ^. Exemplul 1 Exemplul 1 Exemplul 1 Exemplul 1: la exerciiul de mai sus dac nu se pune punctul naitea semnului / scilabul d un raspuns eronat: -->(x-1)/(x+4) ans=0.4155844 Exemplul2 Exemplul2 Exemplul2 Exemplul2:Dacsedefinescdoumatriceptratice,AiB, observai diferena dintre A*B (se nmulete matricea A cu matricea B) i A .*B (se nmulete termen cu termen A(i,j)*B(i,j)) -->A=[1 2 3;2 3 4;3 4 5]; -->B=[5 6 7;6 7 8;7 8 9]; -->A*B ans= 38.44.50. 56.65.74. 74.86.98. -->A .*B ans= 5. 12.21. 12.21.32. 21.32.45. d) 21 1) (xx f+ ++ += == =11.S se defineasc o matrice ptratic de ordinul 5, a aa a; s se indice matriceletriunghiularecorespunzatoareacesteia(superioar, respectiv inferioar). II.II.II.II. 3.3.3.3. Programare n Scilab Programare n Scilab Programare n Scilab Programare n Scilab SCILAB-ul poate lucra n urmatoarele moduri: -n modul linie de comand; fiecare linie este prelucrat imediat i rezultatele sunt afiate; -Cuprogrameconinutenfiiere.Unfiierconstdintr-osuccesiunede instruciuni SCILAB, cu posibilitatea apelrii altor fiiere precum i a apelrii recursive. Un program SCILAB poate fi scris sub forma fiierelor: -Script Script Script Script: conine o secvent de comenzi SCILAB; se execut n fereastradecomandprinapelareanumeluifiierului: exec(nume_fisier) sau direct, n editorul Scilab-ului folosind din meniul Execute opiunea Load into Scilab.Funcie Funcie Funcie Funcie: prima linie conine cuvntul function, iar ultima linie conine cuvntul endfunction;poatelucracuargumente.Sepotdefinimai multe funcii n acelai fiier. Tabel 9.Tabel 9.Tabel 9.Tabel 9. Instruciuni i funcii de control Instruciuni i funcii de control Instruciuni i funcii de control Instruciuni i funcii de control Instruciune Instruciune Instruciune InstruciuneSemnificaia Semnificaia Semnificaia Semnificaia ifInstruciune pentru execuia condiional elseInstruciune asociat cu if if if if elseifInstruciune asociat cu if if if if caseInstruciune folosit pentru a face o alegere forInstruciunepentrucreareaciclurilorcu numr specificat de pai whileInstruciunepentrucreareaciclurilorcu condiie logic breakInstruciunepentruterminareaforatntr-un ciclu returnReturneaz execuia la funcia precizat errorInstruciunepentruafiareaunuimesajde eroare endInstruciunepentruncheiereaciclurilorfor,for,for,for, while while while while i if if if if Tabel 10. Sintaxa instruciunilor SCILAB Tabel 10. Sintaxa instruciunilor SCILAB Tabel 10. Sintaxa instruciunilor SCILAB Tabel 10. Sintaxa instruciunilor SCILAB Instruciune Instruciune Instruciune InstruciuneSintax Sintax Sintax Sintax ifif expresie_logic expresie_logic expresie_logic expresie_logic grup instruciuni end elseif expresie_logic expresie_logic expresie_logic expresie_logic grup instruciuni A else grup instruciuni B end elseififexpresie_logic_1 expresie_logic_1 expresie_logic_1 expresie_logic_1grupinstruciuniA elseifexpresie_logic_2 expresie_logic_2 expresie_logic_2 expresie_logic_2grup instruciuni B end caseselect expr_0 case expr_1 Instr_1 case expr_n Instr_n else Instr end forforindex=expresie\\expresie= iniial: pas: final grup_instruciuni end whilewhile expresie grup_instruciuni end II. 3.1. Fiiere de tip script II. 3.1. Fiiere de tip script II. 3.1. Fiiere de tip script II. 3.1. Fiiere de tip script Definireaireprezentareagraficafunciilorcuacolad Definireaireprezentareagraficafunciilorcuacolad Definireaireprezentareagraficafunciilorcuacolad Definireaireprezentareagraficafunciilorcuacolad:cuajutorul Scipad-ului (editorul Scilab-ului) se editeaz un fiier script care se salveaz, de exemplu, Functie.sce i conine urmtoarele instruciuni: a=-4;b=4;d=0.01;c=0; x=a:d:b; k=max(size(x)); for i=1:k if (x(i)>=a)&(x(i)=c)&(x(i)%pi)&(x(i)0.00001 x=c; c=(2+x^2)/(2*x); -4 -3 -2 -1 0 1 2 3 4-4-3-2-101 end c Se lanseaz n execuie n fereastra de comand scriind:-->exec("SirRecurent.sce") i se obtine rezultatul: c= 1.4142136 Exemple Exemple Exemple Exemple 1.S se genereze o matrice A, cu n linii i n+1 coloane, ale crei elemente sunt: = == = = == == == =rest inj i dacaj i dacaA, 01 , 1, 2. Soluie: n=10; for i=1:n for j=1:n+1 if i==j A(i,j)=2; elseif abs(i-j)==1 A(i,j)=-1; else A(i,j)=0; end end end A In fereastra de comand o sa apar matricea definit mai sus A= A= A= A= ! 2. ! 2. ! 2. ! 2.- -- - 1.0.0.0.0.0.0.0.0.0. ! 1.0.0.0.0.0.0.0.0.0. ! 1.0.0.0.0.0.0.0.0.0. ! 1.0.0.0.0.0.0.0.0.0. ! !!!! - -- - 1.2. 1.2. 1.2. 1.2.- -- - 1.0.0.0.0.0.0.0.0. ! 1.0.0.0.0.0.0.0.0. ! 1.0.0.0.0.0.0.0.0. ! 1.0.0.0.0.0.0.0.0. ! ! 0. ! 0. ! 0. ! 0.- -- - 1.2. 1.2. 1.2. 1.2.- -- - 1.0.0.0.0.0.0.0. ! 1.0.0.0.0.0.0.0. ! 1.0.0.0.0.0.0.0. ! 1.0.0.0.0.0.0.0. ! ! 0.! 0.! 0.! 0.0. 0. 0. 0.- -- - 1.2. 1.2. 1.2. 1.2.- -- - 1.0.0.0.0.0.0. ! 1.0.0.0.0.0.0. ! 1.0.0.0.0.0.0. ! 1.0.0.0.0.0.0. ! ! 0.0.0. ! 0.0.0. ! 0.0.0. ! 0.0.0.- -- - 1.2. 1.2. 1.2. 1.2.- -- - 1.0.0.0.0.0. ! 1.0.0.0.0.0. ! 1.0.0.0.0.0. ! 1.0.0.0.0.0. ! ! 0.0.0.0. ! 0.0.0.0. ! 0.0.0.0. ! 0.0.0.0.- -- - 1.2. 1.2. 1.2. 1.2.- -- - 1.0.0.0.0. ! 1.0.0.0.0. ! 1.0.0.0.0. ! 1.0.0.0.0. ! ! 0.0.0.0.0. ! 0.0.0.0.0. ! 0.0.0.0.0. ! 0.0.0.0.0.- -- - 1.2. 1.2. 1.2. 1.2.- -- - 1.0. 1.0. 1.0. 1.0.0.0. !0.0. !0.0. !0.0. ! ! 0.0.0.0.0.0. ! 0.0.0.0.0.0. ! 0.0.0.0.0.0. ! 0.0.0.0.0.0.- -- - 1.2. 1.2. 1.2. 1.2.- -- - 1.0.0. ! 1.0.0. ! 1.0.0. ! 1.0.0. ! ! 0.0.0.0.0.0.0. ! 0.0.0.0.0.0.0. ! 0.0.0.0.0.0.0. ! 0.0.0.0.0.0.0.- -- - 1.2. 1.2. 1.2. 1.2.- -- - 1.0. ! 1.0. ! 1.0. ! 1.0. ! ! 0.0.0.0.0.0.0.0. ! 0.0.0.0.0.0.0.0. ! 0.0.0.0.0.0.0.0. ! 0.0.0.0.0.0.0.0.- -- - 1.2. 1.2. 1.2. 1.2.- -- - 1. ! 1. ! 1. ! 1. ! 2.Ssescrieunprogramutilizndwhile while while whilecarecalculeazsuma elementelorvectoruluix=(52x=(52x=(52x=(52 910910910910 19191919 1) 1) 1) 1)pncnd ntlnete un numr mai mare ca 8 88 8. Soluie: x=[5 2 -9 10 -1 9 -1]; s=0; k=1; while (x(k) s= > s= > s=- -- - 2. 2. 2. 2. 3.S se calculeze limita urmtorului ir definit recurent:0 ,11 , lim21 0 + ++ += == = = == =+ ++ + nxxx si x unde xnnn nn Soluie: x=1; eps=0.00001; c=x/sqrt(x^2+1); while abs(c-x)>eps x=c; c=x/sqrt(x^2+1); end c In fereastra de comand o s apar rezultatul: c=0.0271363 c=0.0271363 c=0.0271363 c=0.0271363 4.S se calculeze i s se afieze( (( ( ) )) ) = == = = == =+ ++ + = == = 1011012 33 1 2k kk k ASolutie: s=0;p=1; for i=1:10 s=s+(2*i-1)^3; p=p*3*i^2; end a=s+p In fereastra de comand o s apar rezultatul: a=7.776D+17 a=7.776D+17 a=7.776D+17 a=7.776D+17 Exerciii Exerciii Exerciii Exerciii 1.Ssecalculezesumaelementelorunuivectorcaresunt cuprinse ntre valorile a aa a i b bb b cu afactorial(-0.5) ans= 1. Dac argumentul nu este ntreg i pozitiv funcia factorial ntoarce un rezultat oarecare, 1. Dac vom folosi funcia factorial1 se va obine: -->factorial1(5) ans= 120. -->factorial1(0.5) WARNING:argumentul nu este ntreg pozitiv; se va calcula 0! ans= 1. -->factorial1(-5) WARNING:argumentul nu este ntreg pozitiv; se va calcula 5! ans= 120. Recursivitate Recursivitate Recursivitate Recursivitate: o funcie se poate apela pe ea nsi. Exemplul 2 Exemplul 2 Exemplul 2 Exemplul 2: calculul factorialului recursiv function [f]=fact(n) if n=1 s=s+a(i,j)^2 end end end endfunction 2.S se calculeze media aritmetic a elementelor de pe diagonala principal a unei matrice ptratice de ordinul n nn n, cu na=[-2 1 0;1 -2 1;0 1 -2]; -->[v,d]=spec(a) d=! - 3.41421360. 0.! !0. - 2.0.! !0. 0.- 0.5857864 ! v =! 0.5 - 0.7071068- 0.5! ! - 0.70710682.082D-17- 0.7071068 ! ! 0.50.7071068 - 0.5!5.S se calculeze suma elementelor diferite de o valoare dat, v, ale unei matrice. Soluie: function [s]=sdv(a,v) [m,n]=size(a) s=0; for i=1:m for j=1:n if a(i,j)~=v s=s+a(i,j) end end end endfunction 6.S se determine elementul maxim al unui matrice de numere reale. 7.Ssecalculezeprodusulelementelordiferitedezerodepe diagonala principal (secundar) ale unei matrice. Soluie: function [p]=prodDS(a) n=size(a,'c') p=1; for i=1:n if a(i,n-i+1)~=0 p=p*a(i,n-i+1) end end endfunction 8.S se calculeze suma elementelor unei matrice situate deasupra (dedesubtul) diagonalei principale (secundare). Soluie: function [s]=sdeasupra(a) n=size(a,'r') s=0; for i=1:n-1 for j=i+1:n s=s+a(i,j) end end endfunction 9.S se realizeze un program care calculeaz produsul a dou matrice. Solutie: function [c]=f(a,b) [m,n]=size(a) [n,p]=size(b) for i=1:m for j=1:p c(i,j)=0 for k=1:n c(i,j)=c(i,j)+a(i,k)*b(k,j) end end end endfunction 10.Ssedeterminenumruldecoloanecutoateelementele negative dintr-o matrice de tipm n . Solutie: function [cn]=colneg(a) [m,n]=size(a); cn=0; j=1; while j0 j=j+1; i=1; else i=i+1; if i>m cn=cn+1; j=j+1; end end end end endfunction 11.Ssedetermineolinieauneimatricedetipn m care conine elementul a crui valoare absolut este mai mare dect toate celelalte elemente ale matricei. Solutie: function [L]=linie(a) [m,n]=size(a) v=a(1,1) for i=1:m for j=1:n if abs(a(i,j))>v L=i end end end endfunction 12.Sedaunumerelea i jij, , ,..., ; , , ..., = = 1 2 100 1 2 50sib jj= 1 2 50 , , ..., .S se realizeze un program care calculeaz:c a b ii ij jj= == , , ,..., 1 2 100150. Soluie: function [c]=f(a,b) [m,n]=size(a) for i=1:m c(i)=0 for j=1:n c(i)=c(i)+a(i,j)*b(j) end end endfunction III. 1. Rezolvarea ecuaiilor III. 1. Rezolvarea ecuaiilor III. 1. Rezolvarea ecuaiilor III. 1. Rezolvarea ecuaiilor III III III III. 1.1. Rezolvarea ecuaiilor algebrice . 1.1. Rezolvarea ecuaiilor algebrice . 1.1. Rezolvarea ecuaiilor algebrice . 1.1. Rezolvarea ecuaiilor algebrice Forma canonic a unei ecuaii algebrice este: 0 ...0 111= == = + ++ + + ++ + + ++ + + ++ + a x a x a x annnn unde n nn n este gradul polinomului (pentru a rezolva ecuaia n Scilab ) 100 ni kasunt coeficienii polinomului care pot fi numere reale sau complexe. Pentruarezolvaoecuaiealgebricmainti,sedefinete expresiapolinomuluicuajutorulfuncieipoly poly poly polyapoi,cuajutorul funciei root root root rootssss se determin rdcinile ecuaiei. Exemplu Exemplu Exemplu Exemplu: S se rezolve ecuaia0 20 22 122 3 4= == = + ++ + x x x x . -->p=poly([0,-20,22,-12,1],'x','coef') p= 2 3 4 - 20x + 22x - 12x + x -->sol=roots(p) sol= ! 0! ! 1. + i ! ! 1. - i ! ! 10.! III. 1.2. Rezolvarea ecuaiilor transcendente III. 1.2. Rezolvarea ecuaiilor transcendente III. 1.2. Rezolvarea ecuaiilor transcendente III. 1.2. Rezolvarea ecuaiilor transcendente Oriceecuaiesepoatescriesubformaf(x)=g(x) f(x)=g(x) f(x)=g(x) f(x)=g(x)echivalent cu f(x)f(x)f(x)f(x) g(x) = 0 g(x) = 0 g(x) = 0 g(x) = 0. Dup ce se reprezint grafic funcia f(x)f(x)f(x)f(x) g(x) g(x) g(x) g(x) pe intervalul de interes putem s evalum valorile aproximative n care funcia se anuleaz. Se alege drept valoare iniial pentru x xx x valoarea pentrucare,conformgraficului,funciaseanuleaz.Pentrua determina soluia ecuaiei se apeleaz funcia fsolve fsolve fsolve fsolve a Scilab-ului. Exemplu Exemplu Exemplu Exemplu: S se resolve ecuaiax x 2 1 ) sin( = == =--> x=0:0.1:2; --> y1=sin(x); --> y2=1-2.*x; --> plot(x,y1-y2) Se va obine urmtorul grafic: 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0-3.0-2.5-2.0-1.5-1.0-0.50.00.51.0 Seobservcsoluiaecuaieiseaflaproapedex=0.3;pentru aflarea soluiei cu o eroare dat se va folosi urmtoarea secven: function y=f(x) y=sin(x)+2.*x-1 endfunction [s]=fsolve(0.3,f,10^(-10)) obinndu-se pentru soluie valoarea: s=0.3354180s=0.3354180s=0.3354180s=0.3354180Pentru verificare se calculeaz f(s) care se obine n acest caz 0. Exerciii Exerciii Exerciii Exerciii: Sa se rezolve urmatoarele ecuatii: 1.x4-2x3-x+2=0; 2.x3+3x+1=0; 3. xe x 2 ) 1 (2; 4.| || | | || |\ \\ \| || | 2cos 2xx . III. 2. Rezolvarea sistemelor de ecuaii liniar III. 2. Rezolvarea sistemelor de ecuaii liniar III. 2. Rezolvarea sistemelor de ecuaii liniar III. 2. Rezolvarea sistemelor de ecuaii liniare ee eS se rezolve urmtoarele sisteme liniare de ecuaii: a) a) a) a) = == = + ++ + + ++ + = == = + ++ + + ++ + = == = + ++ += == = + ++ +9 98 919 918 94 3 24 3 14 2 13 2 1x x xx x xx x xx x xb) b) b) b) = == = + ++ + + ++ + + ++ += == = + ++ + + ++ + + ++ += == = + ++ + + ++ + + ++ += == = + ++ + + ++ + + ++ +14 3 2 413 2 4 312 4 3 211 4 3 24 3 2 14 3 2 14 3 2 14 3 2 1x x x xx x x xx x x xx x x xSolutie; rezolvarea sistemului de la punctual a) in Scilab -->a=[9 1 -1 0;1 9 0 -1;-1 0 9 1;0 -1 1 9]; b=[18;19;8;9]; -->x=a^(-1)*b x=! 1.8831169 ! ! 2.025974! ! 0.9740260 ! ! 1.1168831 ! 1.S se calculeze factorul Cholesky al matricei:| || || || || || || || || || | | || |\ \\ \| || | = == =9 1 1 01 9 0 11 0 9 10 1 1 9A;FactorizareaCholeskyconstndescompuneramatriceintr-un produs de forma A=R A=R A=R A=Rt tt tR; (R=chol(A)) R; (R=chol(A)) R; (R=chol(A)) R; (R=chol(A)) apoi s se rezolve sistemul de la ex.1 punctul a. Solutie: -->a=[9 1 -1 0;1 9 0 -1;-1 0 9 1;0 -1 1 9]; b=[18;19;8;9]; -->R=chol(a) R=! 3.0.3333333- 0.33333330. ! ! 0.2.9814240.0372678- 0.3354102 ! ! 0.0.2.9811910.3396294 ! ! 0.0.0.2.9617819 ! -->y=(R')^(-1)*b y=! 6.! ! 5.7019733 ! ! 3.2830838 ! ! 3.3079642 ! -->x=R^(-1)*y x=! 1.8831169 ! ! 2.025974! ! 0.9740260 ! ! 1.1168831 ! 2.S se factorizeze LU (lower upper) matricea:| || || || || || || || || || | | || |\ \\ \| || | = == =9 1 1 01 9 0 11 0 9 10 1 1 9A;FactorizareaLU:omatriceptratestedescompussubforma produsului a dou matrice triunghiulare, una inferior triunghiular, cu elemente1pediagonalaprincipalicealaltsuperiortriunghiular ([L,U]=lu(A) [L,U]=lu(A) [L,U]=lu(A) [L,U]=lu(A)) apoi s se rezolve sistemul de la ex.1 punctul a. Solutie: -->a=[9 1 -1 0;1 9 0 -1;-1 0 9 1;0 -1 1 9]; b=[18;19;8;9]; -->[L U]=lu(a) U=! 9.1. - 1. 0.! ! 0.8.88888890.1111111- 1.! ! 0.0. 8.8875 1.0125! ! 0.0. 0. 8.7721519 ! L=! 1. 0.0. 0. ! ! 0.11111111.0. 0. ! ! - 0.11111110.01251. 0. ! ! 0. - 0.11250.11392411. ! -->y=L^(-1)*b y=! 18. ! ! 17. ! ! 9.7875! ! 9.7974684 ! -->x=U^(-1)*y x=! 1.8831169 ! ! 2.025974! ! 0.9740260 ! ! 1.1168831 ! III. 3 III. 3 III. 3 III. 3. Rezolvarea sistemelor de ecuaii. Rezolvarea sistemelor de ecuaii. Rezolvarea sistemelor de ecuaii. Rezolvarea sistemelor de ecuaii ne ne ne neliniar liniar liniar liniare ee eFie sistemul = == = + ++ += == = + ++ + + ++ + + ++ + + ++ +0 5 , 3 20 4 ) sin(3 22 2ay xa x x y axy x S se rezolve sistemul pentru a=1 folosind ca punct de start (1,1). Rezolvarea cu funcia fsolve fsolve fsolve fsolve a SCILAB-ului: function y=f(x) y=zeros(2,1); y(1)=x(1)^2+x(1)*x(2)+x(2)^2+x(1)+sin(x(1))-4; y(2)=2*x(1)^2+x(2)^3-3.5; endfunction [s]=fsolve([1;1],f,0.0001) Se obtine rezultatul: s=! 0.4905521 ! s=! 0.4905521 ! s=! 0.4905521 ! s=! 0.4905521 ! ! 1.4452428! 1.4452428! 1.4452428! 1.4452428 ! ! ! ! Utilizarea Calculatoarelor:Utilizarea Calculatoarelor:Utilizarea Calculatoarelor:Utilizarea Calculatoarelor: L LL Laboratoarele aboratoarele aboratoarele aboratoarele 6 si 7 6 si 7 6 si 7 6 si 7 Reprezentri grafice n Scilab Reprezentri grafice n Scilab Reprezentri grafice n Scilab Reprezentri grafice n Scilab Tabel: Tabel: Tabel: Tabel: Reprezentri grafice n SCIL Reprezentri grafice n SCIL Reprezentri grafice n SCIL Reprezentri grafice n SCILAB: AB: AB: AB: Funcia Funcia Funcia FunciaSemnificaia Semnificaia Semnificaia Semnificaia plot plot plot plotReprezintgraficocurban2Dunindpunctele de coordonate (x,y) plot2d plot2d plot2d plot2dReprezint grafic o funcie n 2D fplot2d fplot2d fplot2d fplot2dReprezintgraficofuncien2Ddefinite anterior paramfplot2d paramfplot2d paramfplot2d paramfplot2dReprezint grafic cu animaie o funcie n 2Dplot3d plot3d plot3d plot3dReprezint grafic o suprafa n 3D contour2d contour2d contour2d contour2dReprezint grafic liniile de contur n2D contour contour contour contourReprezintgraficliniiledeconturaleunei suprafee Observaie Observaie Observaie Observaie:Instruciuneaplotvadesenantr-oaltfereastr graficul;pentrumaimulteinformaiiiexempletastainfereastra de comand: apropos Graphics. Exemplu plot Exemplu plot Exemplu plot Exemplu plot x=linspace(0,2*%pi,101); y=exp(x).*sin(4*x); plot(x,y,'x','y','y=exp(x)*sin(4x)') 0 1 2 3 4 5 6 7-400-300-200-1000100200y=exp(x)*si n(4x)xy Exemplu plot2d Exemplu plot2d Exemplu plot2d Exemplu plot2d t=(0:0.1:6*%pi); plot2d(t',sin(t)'); xtitle('plot2d and xgrid ','t','sin(t)'); xgrid(); 0 2 4 6 8 10 12 14 16 18 20-1.0-0.8-0.6-0.4-0.20.00.20.40.60.81.0pl ot2d and xgri d tsi n(t) Variante ale instruciunii Variante ale instruciunii Variante ale instruciunii Variante ale instruciunii plot2d plot2d plot2d plot2d: :: : plot2d2, plot2d3 plot2d2, plot2d3 plot2d2, plot2d3 plot2d2, plot2d3 Acesteinstruciuniseutilizeazexactcaplot2d plot2d plot2d plot2d:sefolosete aceeai sintax i aceleai argumente opionale. plot2d2 plot2d2 plot2d2 plot2d2:permitedesenareauneifunciinscar;nlocs trasezeunsegmentdedreaptntrepunctele( (( ( ) )) )i i y x , i ( (( ( ) )) )1 1,+ ++ + + ++ + i iy x , plot2d2 plot2d2 plot2d2 plot2d2 traseaz un segment orinzontal ntre( (( ( ) )) )i i y x ,i( (( ( ) )) )i iy x ,1 + ++ +, apoi un segment vertical ntre( (( ( ) )) )i iy x ,1 + ++ + i( (( ( ) )) )1 1,+ ++ + + ++ + i iy x . Exemplu Exemplu Exemplu Exemplu: n=10; x=(0:n)'; y=x; xbasc() plot2d2(x,y,style=2,frameflag=5,rect=[0,-1,n+1,n+1]) xtitle("Exemplu de grafic cu plot2d2") 0 2 4 6 8 10 12-11357911Exempl u de grafi c cu pl ot2d2 plot2d3 plot2d3 plot2d3 plot2d3 deseneaz diagrame cu bare verticale: pentru fiecare punct( (( ( ) )) )i i y x , plot2d plot2d plot2d plot2d3 33 3 traseazunsegmentverticalntre( (( ( ) )) ) 0 ,ixi( (( ( ) )) )i i y x , . .. . Exemplu Exemplu Exemplu Exemplu: n=6; x=(0:n)'; y=binomial(0.5,n)'; xbasc() plot2d3(x,y,style=2,frameflag=5,rect=[-1,0,n+1,0.32]) xtitle("Exemplu de grafic cu plot2d3") -1 0 1 2 3 4 5 6 70.000.040.080.120.160.200.240.280.32Exempl u de grafi c cu pl ot2d3 ExempluExempluExempluExemplu fplot2d fplot2d fplot2d fplot2d deff("[y]=f(x)","y=sin(x)+cos(x)") x=[0:0.1:10]*%pi/10; fplot2d(x,f) clf(); fplot2d(1:10,'parab') ExempluExempluExempluExemplu paramfplot2d paramfplot2d paramfplot2d paramfplot2d deff('y=f(x,t)','y=t*sin(x)') x=linspace(0,2*%pi,50);theta=0:0.05:1; paramfplot2d(f,x,theta); 0 1 2 3 4 5 6 7-1.0-0.8-0.6-0.4-0.20.00.20.40.60.81.0 1 2 3 4 5 6 7 8 9 100102030405060708090100 Trasarea pe acelai grafic a mai m Trasarea pe acelai grafic a mai m Trasarea pe acelai grafic a mai m Trasarea pe acelai grafic a mai multor curbe care nu au acelaiultor curbe care nu au acelaiultor curbe care nu au acelaiultor curbe care nu au acelai numr de puncte numr de puncte numr de puncte numr de puncte x1=linspace(0,1,61)'; x2=linspace(0,1,31)'; x3=linspace(0.1,0.9,12)'; y1=x1.*(1-x1).*cos(2*%pi*x1); y2=x2.*(1-x2); y3=x3.*(1-x3)+0.1*(rand(x3)-0.5);//la fel cu y2 dar cu o mica perturbatie ymin=min([y1;y2;y3]);ymax=max([y1;y2;y3]); dy=(ymax-ymin)*0.05; dreptunghi=[0,ymin-dy,1,ymax+dy]; xbasc() plot2d(x1,y1,style=1,frameflag=5,rect=dreptunghi) plot2d(x2,y2,style=2,frameflag=0) plot2d(x3,y3,style=-1,frameflag=0) xtitle("Mai multe curbe pe acelasi grafic") 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0-0.3-0.2-0.10.00.10.20.30.4Maimul te curbe pe acel asigrafi c++++++++++++ Exe Exe Exe Exemplumplumplumplu plot3d plot3d plot3d plot3d t=[0:0.3:2*%pi]';z=sin(t)*cos(t'); plot3d(t,t,z) -1.001.0Z0123456X0123456Y ExempluExempluExempluExemplu plot3d1 plot3d1 plot3d1 plot3d1: coloreaz numai dup valorile lui z zz z x=linspace(0,2*%pi,31); z=cos(x)'*cos(x); C=hotcolormap(32); xset("colormap",C) xset("hidden3d",30) xbasc() plot3d1(x,x,z,flag=[1 4 4]) -1.001.0Z01234567X01234567Y Exemplu Exemplu Exemplu Exemplu:Reprezentareacolor,nplanaliniilordeconturaleunei suprafee folosind Sgrayplot: x=-10:10; y=-10:10;m =rand(21,21); Sgrayplot(x,y,m,"111",[-20,-20,20,20]) t=-%pi:0.1:%pi; m=sin(t)'*cos(t);clf() Sgrayplot(t,t,m) Exemplu Exemplu Exemplu Exemplu: Reprezentarea liniilor de contur n plan a unei suprafee contour2d(1:10,1:10,rand(10,10),5,rect=[0,0,11,11]) xset("fpf","%.2f") clf() contour2d(1:10,1:10,rand(10,10),5,rect=[0,0,11,11]) 0.0 2.2 4.4 6.6 8.8 11.00.02.24.46.68.811.00.170.170.170.170.170.170.170.170.170.170.330.330.330.330.330.330.330.330.330.330.330.330.330.330.330.500.500.500.50 0.500.500.500.500.500.500.500.660.660.660.660.660.660.660.660.660.660.660.660.660.660.660.830.830.830.830.830.830.83 -3 -2 -1 0 1 2 3-3-2-10123+ ExempluExempluExempluExemplu contour contour contour contour t=%pi*[-10:10]/10; deff("[z]=surf(x,y)","z=sin(x)*cos(y)"); z=feval(t,t,surf); rect=[-%pi,%pi,-%pi,%pi,-1,1]; contour(t,t,z,10,35,45," ",[0,1,0],rect) xset("fpf","%.2f") ;xbasc() contour(t,t,z,10,flag=[0,1,0],ebox=rect) Reprezentri grafice n plan Reprezentri grafice n plan Reprezentri grafice n plan Reprezentri grafice n plan 1.S se defineasc urmatoarele funcii cu acolad: <