111
Universitatea Transilvania din Bra¸ sov Facultatea de S ¸tiint ¸e Catedra de Informatic˘ a E. SCHEIBER S. DUMITRESCU V. MONESCU Laborator de ANALIZ ˘ A NUMERIC ˘ A SCILAB & MathCAD Bra¸ sov

Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Universitatea Transilvania din BrasovFacultatea de Stiinte

Catedra de Informatica

E. SCHEIBERS. DUMITRESCU V. MONESCU

Laborator de ANALIZA NUMERICA

SCILAB & MathCAD

Brasov

Page 2: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

2

Page 3: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Cuprins

I Scilab 5

1 Elemente de programare ın SCILAB 71.1 Obiecte Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2 Elemente de programare in Scilab . . . . . . . . . . . . . . . . . . . . 121.3 Functii(subprograme) ın Scilab . . . . . . . . . . . . . . . . . . . . . 131.4 Grafica ın Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.5 Java cu Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2 Rezolvarea sistemelor algebrice de ecuatii liniare 21

3 Rezolvarea sistemelor si ecuatiilor algebrice 253.1 Rezolvarea sistemelor algebrice de ecuatii neliniare . . . . . . . . . . 253.2 Rezolvarea ecuatiilor algebrice . . . . . . . . . . . . . . . . . . . . . . 273.3 Rezolvarea ecuatiilor polinomiale . . . . . . . . . . . . . . . . . . . . 28

4 Rezolvarea problemelor de interpolare 314.1 Interpolare polinomiala . . . . . . . . . . . . . . . . . . . . . . . . . 314.2 Interpolare cu functii spline cubice . . . . . . . . . . . . . . . . . . . 33

5 Metoda celor mai mici patrate 35

6 Integrare numerica 396.1 Integrarea functiilor de o variabila reala . . . . . . . . . . . . . . . . 396.2 Calculul numeric al integralelor duble . . . . . . . . . . . . . . . . . 41

7 Integrarea numerica a e.d.o. 477.1 Rezolvarea problemelor Cauchy . . . . . . . . . . . . . . . . . . . . . 47

7.1.1 Aplicatie: rezolvarea sistemelor algebrice neliniare . . . . . . 497.2 Rezolvarea problemelor bilocale . . . . . . . . . . . . . . . . . . . . . 51

8 Tranformata Fourier discreta 57

3

Page 4: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

4 CUPRINS

II MathCAD 59

9 Prezentare generala 619.1 Efectuarea calculelor numerice . . . . . . . . . . . . . . . . . . . . . 62

9.1.1 Operatori MathCAD . . . . . . . . . . . . . . . . . . . . . . . 629.1.2 Identificatori MathCAD . . . . . . . . . . . . . . . . . . . . . 639.1.3 Constante MathCAD . . . . . . . . . . . . . . . . . . . . . . 639.1.4 Tipuri de date MathCAD . . . . . . . . . . . . . . . . . . . . 649.1.5 Vectorizare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699.1.6 Unitati de masura . . . . . . . . . . . . . . . . . . . . . . . . 70

9.2 Reprezentari grafice . . . . . . . . . . . . . . . . . . . . . . . . . . . 719.3 Crearea unei animatii . . . . . . . . . . . . . . . . . . . . . . . . . . 739.4 Editare de text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749.5 Salvarea / restaurarea datelor numerice . . . . . . . . . . . . . . . . 749.6 Instrumente de calcul simbolic . . . . . . . . . . . . . . . . . . . . . 769.7 Elemente de programare functionala . . . . . . . . . . . . . . . . . . 799.8 Elemente de programare procedurala . . . . . . . . . . . . . . . . . . 80

10 Sisteme algebrice liniare 85

11 Sisteme si ecuatii algebrice 8711.1 Sisteme algebrice neliniare . . . . . . . . . . . . . . . . . . . . . . . . 8711.2 Rezolvarea ecuatiilor algebrice . . . . . . . . . . . . . . . . . . . . . . 8911.3 Rezolvarea ecuatiilor polinomiale . . . . . . . . . . . . . . . . . . . . 89

12 Rezolvarea problemelor de interpolare 9112.1 Interpolare polinomiala . . . . . . . . . . . . . . . . . . . . . . . . . 9112.2 Interpolare cu functii spline cubice . . . . . . . . . . . . . . . . . . . 93

13 Metoda celor mai mici patrate 95

14 Integrare numerica 9714.1 Integrare numerica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9714.2 Calculul numeric al integralelor duble . . . . . . . . . . . . . . . . . 98

15 Integrarea numerica a e.d.o. 10115.1 Rezolvarea problemelor Cauchy . . . . . . . . . . . . . . . . . . . . . 10115.2 Rezolvarea problemelor bilocale . . . . . . . . . . . . . . . . . . . . . 105

16 Transformarea Fourier discreta 109

Page 5: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Part I

Scilab

5

Page 6: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare
Page 7: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 1

Elemente de programare ınSCILAB

Cap. 2

Prezentam pe scurt elemente ale limbajului de programare utilizat ın produsulScilab. Elementele prezentate ın sectiunile urmatoare reprezinta doar ghid de uti-lizare rapida. Se presupune ca utilizatorul poseda cunostinte de programare, avandexperienta de lucru ın cel putin un limbaj de programare procedural.

Scilab este un produs de calcul numeric produs de INRIA – Franta – disponibilın mediile Windows si Linux. Produsul este distribuit gratuit. Produsul este ınsotitde o documentatie cuprinzatoare.

Ca produs informatic Scilab are trasaturi comune cu produsul comercial Matlab.

1.1 Obiecte Scilab

• Constante

Tip Mnemonic Valoarereal %pi π

real %e e%inf ∞

complex %i iboolean %t trueboolean %f false

• Literali

7

Page 8: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

8 CAPITOLUL 1. ELEMENTE DE PROGRAMARE IN SCILAB

– Literali numericiExemple:1. Numarul real 10,23 se poate scrie:10.23=0.1023e+2=0.1023E+2=1023e-2=1023E-2.2. Numarul complex 1 + 5i se scrie 1 + 5 ∗%i.

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

’c’ sau ”c”’string’ sau ”string”

• Polinoame si functii rationale

Scilab poseda o modalitate deosebita de lucru cu polinoame definite peste Rsau C.

Pentru a defini un polinom ın nedeterminata (variabila) X se poate defini ıntainedeterminata

X=poly(0,’X’);

iar apoi polinomul se introduce nemijlocit, de exemplu

p=X^2+3*X+2

Altfel, un polinom se defineste prin intermediul functiei Scilab poly

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

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

polinom = a1 + a2X + . . . + anXn−1,

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

polinom = (X − a1)(X − a2) . . . (X − an)

A doua varianta este cea implicita.

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

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

1 + 2X + 3X^2

Page 9: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

1.1. OBIECTE SCILAB 9

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

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

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

Daca r este o functie rationala atunci r(’num’) furnizeaza numaratorul si r(’den’)furnizeaza numitorul lui r.

• Functii matematice uzuale:

Mnemonic Semnificatie Mnemonic Semnificatieabs(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)erf(x) 2√

π

∫ x0 e−t2dt gamma(x) Γ(x) =

∫∞0 tx−1e−tdt

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

• Matrice

– Definirea unei matrice.Exemplu: Matricea

a =(

1 2 34 5 6

)se defineste ın Scilab prin

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

Elementele unei linii se pot separa prin virgula sau spatiu. Elementeleunei matrice pot fi: constante/variabile numerice, constante booleene,siruri de caractere, polinoame, functii rationale.O progresie aritmetica, interpretat ca un vector linie (adica o matrice cuo singura linie) se poate defini prin

prog=primulElement : pas : margine

Page 10: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

10 CAPITOLUL 1. ELEMENTE DE PROGRAMARE IN SCILAB

Daca pas=1 atunci parametrul poate fi omis.Exemplu. Prograsiile aritmetice a = 0.2, 0.6, 1.0, 1.4, 1.8 si b = 0,−1,−2,−3,−4se obtin prin

a=0.2 : 0.4 : 2a=

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

! -1 -2 -3 -4 !

Functia Scilab size(variabilaMatrice) returneaza numarul liniilor si numarulcoloanelor variabileiMatrice.

– Definirea unei matrice rara se face cu functia Scilab

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

unde ali,ci= vi. ∀i.

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

– Matrice speciale.

∗ zeros(m, n) defineste o matrice nula cu m linii si n coloane;∗ ones(m,n) defineste o matrice cu toate elementele egale cu 1 avand

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

– Selectarea unui element se obtine prin sintaxa

variabilaMatrice(numarLinie, numarColoana)

Prima linie si prima coloana are numarul de ordine 1.

– Operatori matriceali.

Simbol Semnificatie+ adunare- scadere∗ ınmultire de matrice.∗ ınmultire pe componenteˆ ridicare la putere prin produs matriceal.ˆ ridicarea la putere a componentelor\ a\b = a−1 · b. \ a.\b = ( bi,j

ai,j)i,j

/ b/a = b · a−1

. / b/a = ( bi,j

ai,j)i,j

’ transpunere

Page 11: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

1.1. OBIECTE SCILAB 11

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

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

[v; a]

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

[a; v]

∗ adaugarea vectorului v ca prima coloana a matricei a se obtine prin

[v; a′]′

∗ adaugarea vectorului v ca ultima coloana a matricei a se obtine prin

[a′; v]′

– Extragerea unei submatrice. O zona compacta fixata prin liniile l1 : l2si coloanele c1 : c2, inclusiv, se extrage din matricea a prin

a(l1 : l2, c1 : c2)

Pentru extragerea unei zone necompacte – aflata la intersectia liniilorl1, l2, . . . , lp cu coloanele c1, c2, . . . , cq – dintr-o matrice a avand m linii sin coloane se definesc vectori linie

lin = (lini)1≤i≤m, lini ={

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

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

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

Extragerea rezulta dina(lin, col)

Comenzile a(:, $) si a($, :) extrag din matricea a ultima coloana, respectivultima linie.

• Lista. O lista se defineste prin

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

unde ei sunt obiecte Scilab.

Exemplu.

Page 12: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

12 CAPITOLUL 1. ELEMENTE DE PROGRAMARE IN SCILAB

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

l(1)1

l(2)T

l(3)abc

l(4)! 1. 2. 3. 4. !

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

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

1.2 Elemente de programare in Scilab

• Instructiunea de atribuire

variabila = expresie

• Instructiuni conditionate

1.

if conditie theninstructiuni

elseif conditie theninstructiuni

elseinstructiuni

end

2.

select expresiecase expresie1 then instructiuni

...else

instructiuniend

case si then trebuie scrise pe aceeasi linie.

• Instructiuni de ciclare

1.

Page 13: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

1.3. FUNCTII(SUBPROGRAME) IN SCILAB 13

for n = n1 : pas : n2, instructiuni, end

Daca pas = 1, atunci acest parametru este optional.

2.

while conditie

,dothen

instructiuni, end

while si do sau then trebuie scrise pe aceasi linie.

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

Pentru exprimarea conditiilor se utilizeaza

Operatori relationali Operatori logiciSimbol Semnificatie Simbol Semnificatie

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

>= ≥> >

Fiecare instructiune introdusa ın dreptul promptului Scilab este executata sirezultatul este afisat. Incheierea unei comenzi cu ; are ca efect inhibarea afisarii.

1.3 Functii(subprograme) ın Scilab

Functie definita ın linie de comanda.

deff(’[y1, . . . , yn]=f(x1, . . . , xm)’,[’y1 = expresie1’,. . .,’yn = expresien’])

O functie definita ın linie de comanda se salveaza

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

Reıncarcarea se realizeaza prin

load(’cale\f .bin’)

Functii definite ın exterior. Cu un editor de fisiere se creaza subprogramul

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

care se salveaza obligatoriu cu numele f .sciPentru a putea fi utilizata functia exterioara trebuie ıncarcata prin

Page 14: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

14 CAPITOLUL 1. ELEMENTE DE PROGRAMARE IN SCILAB

getf(’cale\f.sci’,’c’)

Semnificatia celui de al doilea parametru ’c’ este aceea ca Scilab foloseste ınexecutie o forma compilata a subprogramului. Daca se utilizeaza ’n’ atunci codulsubprogramului este interpretat.

Functiile definite ın exterior pot fi organizate ın biblioteci. Astfel functiile Scilab– deci avand extensia .sci – aflate ıntr-un catalog localizat prin cale sunt reuniteıntr-o biblioteca prin comanda

genlib(’numeBiblioteca’,’cale’)

Prin aceasta operatie are loc compilarea functiilor si crearea unui fisier names cucuprinsul bibliotecii.

O biblioteca odata creata, resursele ei pot fi utilizate dupa reancarcarea ei prin

numeBiblioteca=lib(’cale’)

1.4 Grafica ın Scilab

Din multimea functiilor grafice ale produsului Scilab amintim

• plot2d. Cea mai simpla forma de utilizare este

plot2d(x, y)

unde

x =

x1,1 . . . x1,n

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

y =

y1,1 . . . y1,n

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

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

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

• fplot2d. Utilizarea functiei este

fplot2d(x, f)

unde

– x este un sir de numere reale;

– f este o functie Scilab

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

Page 15: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

1.5. JAVA CU SCILAB 15

1.5 Java cu Scilab

Resursele Scilab pot fi apelate dintr-un program Java.Presupunem ca Scilab este instalat ın catalogul %SCILAB HOME%.Legatura Java – Scilab se bazeaza pe pachetul %SCILAB HOME%\bin\javasci.Compilarea necesita prezenta ın variabila sistem classpath a caii %SCILAB HOME%\bin.Executia presupune:

• ca variabila classpath sa contina %SCILAB HOME%\bin;

• sa fie definita variabila sistem SCI=%SCILAB HOME%;

• prezenta fisierului %SCILAB HOME%\bin\javasci.dll ın catalogul de lucru.

Pachetul javasci contine clasele

• Scilab

• SciDouble

• SciDoubleArray

• SciString

• SciStringArray

Clasa Scilab

Clasa Scilab contine metodele statice

• public static void Event()

Genereaza un eveniment Scilab.

• public static boolean HaveAGrapg()

Returneaza true daca Scilab genereaza un grafic.

• public static boolean Exec(String job)

Executa o comanda Scilab. Returneaza true daca executia Scilab nu genereazaeroare.

Page 16: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

16 CAPITOLUL 1. ELEMENTE DE PROGRAMARE IN SCILAB

Clasa SciDouble

Constructori

• public SciDouble(String name, SciDouble obj)

• public SciDouble(String name)

• public SciDouble(String name, double value)

Metode

• public String getName()

Returneaza numele obiectului din Scilab.

• public double getData()

Returneaza valoarea obiectului din Scilab.

• public void Get()

• public boolean Job(String job)

Executa job-ul ın Scilab.

• public void Send()

• public void disp()

Afiseaza obiectul.

Exemplul 1.1 de utilizarea a clasei SciDouble.

import javasci.*;

public class TstJavaSci1{

public static void main(String[] args) {

SciDouble U=new SciDouble("u");

System.out.println("Name : "+U.getName());

System.out.println("Value : "+U.getData());

SciDouble V=new SciDouble("v",1.0);

U.Job("u=v+1");

System.out.println("Value : "+U.getData());

U.disp();

SciDouble W=new SciDouble("w",V);

W.Job("w=10*w");

W.disp();

}

}

Exemplul 1.2 Calculul integralei unei functii.

Page 17: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

1.5. JAVA CU SCILAB 17

import javasci.*;

public class TstJavaSci2{

public static void main(String[] args) {

SciDouble u=new SciDouble("U");

// Pentru ’ se tasteaza ’’ !

String scicomm="U=integrate(’’x.^2’’,’’x’’,0,1)";

boolean rez=Scilab.Exec(scicomm);

// Varianta

//boolean rez=u.Job(scicomm);

System.out.println("Error="+rez);

System.out.println("Integrala : "+u.getData());

}

}

Exemplul 1.3 Reprezentarea grafica a unei functii

import javasci.*;

public class TstJavaSci3{

public static void main(String[] args) {

String scicomm="x=-%pi:0.1:%pi;y=sin(x);plot(x,y)";

boolean rez=Scilab.Exec(scicomm);

System.out.println("Error="+rez);

try{

if(Scilab.HaveAGraph()){

System.out.println("Press a key to continue...");

System.in.read();

}

}

catch(Exception e){}

}

}

Clasa SciString

Constructori

• public SciString(String name, SciString obj)

• public SciString(String name)

• public SciString(String name, String string)

Metode

• public String getName()

Returneaza numele obiectului din Scilab.

• public String getData()

Returneaza valoarea obiectului din Scilab.

Page 18: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

18 CAPITOLUL 1. ELEMENTE DE PROGRAMARE IN SCILAB

• public void Get()

• public boolean Job(String job)

Executa job-ul ın Scilab.

• public void Send()

• public void disp()

Afiseaza obiectul.

Exemplul 1.4 de utilizarea a clasei SciString.

import javasci.*;

public class TstJavaSci4{

public static void main(String[] args) {

SciString S=new SciString("s","String");

System.out.println("Name : "+S.getName());

System.out.println("Value : "+S.getData());

S.disp();

SciDouble U=new SciDouble("u");

S.Job("u=4*atan(1)");

System.out.println("Pi : "+U.getData());

}

}

Clasa SciDoubleArray

Constructori

• public SciDoubleArray(String name, SciDoubleArray obj)

• public SciDoubleArray(String name, int lin, int col)

• public SciDoubleArray(String name, int lin, int col, double[] vec-tor)

Metode

• public int getRow()

Returneaza numarul liniilor.

• public int getCol()

Returneaza numarul coloanelor.

• public String getName()

Returneaza numele obiectului din Scilab.

Page 19: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

1.5. JAVA CU SCILAB 19

• public double[] getData()

Returneaza valoarea obiectului din Scilab.

• public void Get()

• public boolean Job(String job)

Executa job-ul ın Scilab.

• public void Send()

• public void disp()

Afiseaza obiectul.

• public double GetElement(int l, int c)

Returneaza elementul de pe pozitia (l, c).

Exemplul 1.5 de utilizarea a clasei SciDoubleArray.

import javasci.*;

public class TstJavaSci5{

public static void main(String[] args) {

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

// Atentie matricea se completeaza pe coloane !

SciDoubleArray A=new SciDoubleArray("a",2,3,a);

//SciDoubleArray A=new SciDoubleArray("a",2,3,new double[]{1,2,3,4,5,6});

System.out.println("Name : "+A.getName());

A.disp();

for(int i=1;i<=A.getRow();i++){

for(int j=1;j<=A.getCol();j++)

System.out.print(A.GetElement(i,j)+" ");

System.out.println();

}

SciDoubleArray B=new SciDoubleArray("b",3,2);

A.Job("b=a’’");

B.disp();

}

}

Clasa SciStringArray

Constructori

• public SciStringArray(String name, SciStringArray obj)

• public SciStringArray(String name, int lin, int col)

• public SciStringArray(String name, int lin, int col, String[] x)

Page 20: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

20 CAPITOLUL 1. ELEMENTE DE PROGRAMARE IN SCILAB

Metode

• public int getRow()

Returneaza numarul liniilor.

• public int getCol()

Returneaza numarul coloanelor.

• public String getName()

Returneaza numele obiectului din Scilab.

• public String[] getData()

Returneaza valoarea obiectului din Scilab.

• public void Get()

• public boolean Job(String job)

Executa job-ul ın Scilab.

• public void Send()

• public void disp()

Afiseaza obiectul.

• public String GetElement(int l, int c)

Returneaza elementul de pe pozitia (l, c).

Page 21: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 2

Rezolvarea sistemelor algebricede ecuatii liniare

Cap. 1 Cap. 3

Pentru rezolvarea unui sistem algebric de ecuatii liniare Ax = b, ın cazul ın care

• numarul ecuatiilor coincide cu numarul necunoscutelor;

• determinantul sistemului este diferit de zero;

se procedeaza dupa cum urmeaza:

1. se fixeaza matricele A si b;

2. se calculeaza x = A−1b.

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

Functia Scilab det(A) calculeaza determinantul matricei A.

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

21

Page 22: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

22 CAPITOLUL 2. REZOLVAREA SISTEMELOR ALGEBRICE DE ECUATII LINIARE

Rezolvarea consta din

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

160x=inv(a)*bx=! 2 !! 1 !! 1 !! 1 !

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

1. x – o solutie particulara;

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

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

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

Exemplul 2.2 Sa se rezolve sistemul algebric de ecuatii liniarex + y + z + t = 10x + y − z + 2t = −85x + 5y − z − 4t = −4x + y + 3z + 4t = 28

Rezolvarea sistemului este

A=[1,1,1,1;1,1,-1,2;5,5,-1,-4;1,1,3,4];b=[10;-8;-4;28];det(A)ans=

0[x,k]=linsolve(A,-b)k=! .7071068 !

Page 23: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

23

! - .7071068 !! 0. !! 0. !x=! .5 !! .5 !! 9. !! 0. !

Page 24: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

24 CAPITOLUL 2. REZOLVAREA SISTEMELOR ALGEBRICE DE ECUATII LINIARE

Page 25: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 3

Rezolvarea sistemelor siecuatiilor algebrice

Cap. 2 Cap. 4

3.1 Rezolvarea sistemelor algebrice de ecuatii neliniare

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

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

x =

x1...

xn

f(x) =

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

fn(x1, . . . , xn)

,

se utilizeaza functia Scilab

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

unde semnificatia parametrilor este:

• x0 reprezinta o aproximatie initiala a solutiei sistemului.

25

Page 26: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

26 CAPITOLUL 3. REZOLVAREA SISTEMELOR SI ECUATIILOR ALGEBRICE

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

• fjac identificatorul functiei Scilab al jacobianului finctiei f, adica

fjac(x) =

∂f1

∂x1(x) . . . ∂f1

∂xn(x)

. . . . . . . . .∂fn

∂x1(x) . . . ∂fn

∂xn(x)

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

• x aproximatia calculata a solutiei sistemului algebric.

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

• info indicatorul de raspuns al programului fsolve. In cazul rezolvarii cusucces, valoarea indicatorului este 1.

Astfel, rezolvarea consta din

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

2. apelarea functiei Scilab fsolve.

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

1 − 2x2x3 − 0.1 = 010x2 − x2

2 + 3x1x3 + 0.2 = 010x3 + x2

3 + 2x1x2 − 0.3 = 0

Rezolvarea consta din:

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

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

1.q=

1.0E-15*! - .2636780 !! .2775558 !! .9436896 !

Page 27: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

3.2. REZOLVAREA ECUATIILOR ALGEBRICE 27

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

3.2 Rezolvarea ecuatiilor algebrice

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

Pentru rezolvarea ecuatiilor algebrice se utilizeaza de asemenea functia Scilabfsolve.

Exemplul 3.2 Sa se rezolve ecuatia 2x = x2.

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

deff(’y=f(x)’,’y=2.^x-x.^2’)[x,y,info]=fsolve(1,f)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=

0x=

2.

Daca x0 = 5 atunci x = 4, iar pentru x0 = −1 gasim x = −0.7666647.

Graficul functiei f este reprezentat ın Fig. 1.

Page 28: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

28 CAPITOLUL 3. REZOLVAREA SISTEMELOR SI ECUATIILOR ALGEBRICE

Fig. 1.

3.3 Rezolvarea ecuatiilor polinomiale

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

Pentru aflarea radacinilor unui polinom se procedeaza astfel:

1. Se defineste polinomul Scilab p de variabila x.

2. Radacinile polinomului p sunt calcutate ajutorul functiei Scilab

x=roots(p)

unde

• p este polinomul Scilab cu coeficienti reali sau complecsi de grad cel mult100.

• x este un tablou cu radacinile polinomului p.

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

Page 29: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

3.3. REZOLVAREA ECUATIILOR POLINOMIALE 29

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 !

Page 30: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

30 CAPITOLUL 3. REZOLVAREA SISTEMELOR SI ECUATIILOR ALGEBRICE

Page 31: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 4

Rezolvarea problemelor deinterpolare

Cap. 3 Cap. 5

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

4.1 Interpolare polinomiala

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

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

i=1

yi

n∏j=1

j 6=i

z − xj

xi − xj

Valoarea acestui polinom este calculat de functia Scilab

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

31

Page 32: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

32 CAPITOLUL 4. REZOLVAREA PROBLEMELOR DE INTERPOLARE

ierror=1;disp(’data dimension error’)abort

endxx=sort(x);for k=1:nx-1,

if xx(k)==xx(k+1),ierror=1;break,

endendif ierror~=0,

disp(’data error’)abort

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

for j=1:nx,if i~=j,

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

endendfor i=1:m,

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

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

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

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

endend

end

Page 33: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

4.2. INTERPOLARE CU FUNCTII SPLINE CUBICE 33

Semnificatiile parametrilor formali si a rezultatului sunt:

• xd este o matrice de numere. In fiecare element al matricei xd se calculeazavaloarea polinomului de interpolare Lagrange.

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

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

• f este o matrice de aceleasi dimensiuni ca xd si are ca elemente valorile poli-nomului de interpolare Lagrange calculate ın elementele corespunzatoare alematricei xd.

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

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

f(x) = x2

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

Rezolvarea este:

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

4.2 Interpolare cu functii spline cubice

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

1. d=splin(x,y);

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

Semnificatia parametrilor este1Parantezele patrate nu fac parte din sintaxa. Ele arata caracterul optional al elementelor

cuprinse ıntre ele.

Page 34: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

34 CAPITOLUL 4. REZOLVAREA PROBLEMELOR DE INTERPOLARE

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

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

• d parametri functiei spline cubice de interpolare;

• xd este o matrice de numere. In fiecare element al matricei xd se calculeazavaloarea functiei spline cubice de interpolare.

• f0, f1, f2, f3 sunt matrice de aceleasi dimensiuni ca xd si au ca elementevalorile functiei spline cubice de interpolare si respectiv a derivatelor de ordinul1, 2 si 3, calculate ın elementele corespunzatoare ale matricei xd.

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

f(x) = x3

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

Rezolvarea consta din

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

Page 35: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 5

Construirea unui polinomde aproximare prin metodacelor mai mici patrate

Cap. 4 Cap. 6

Determinarea unui polinom de aproximare construit prin metoda celor mai micipatrate de grad m pentru datele (xi, yi)1≤i≤n (m << n) se obtine cu ajutorul functiei

coef =lq(m,x,y)

unde

• coef – sunt coeficientii polinomului de aproximare;

• m – gradul polinomului de aproximare;

• x, y – doi vectori linie cu absisele si respectiv, cu ordonatele datelor problemeide aproximare.

Textul sursa al functiei lq este

function coef=lq(m,x,y)[mx,nx]=size(x);[my,ny]=size(y);

35

Page 36: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

36 CAPITOLUL 5. METODA CELOR MAI MICI PATRATE

if((nx~=ny)|(mx~=1)|(my~=1)),disp("data dimension error")abort

endu=zeros(m+1,nx);for i=1:m+1,

for j=1:nx,u(i,j)=x(j)^(i-1);

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

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

x=-2:0.2:2;y=abs(x);c1=lq(1,x,y)c1=! 1.047619 !! 0. !c2=lq(2,x,y)c2=! .3883622 !! 0. !! .4494933 !deff(’y=p1(x)’,[’y=c1(1)+c1(2)*x’])deff(’y=p2(x)’,[’y=c2(1)+c2(2)*x+c2(3)*x.*x’])y1=p1(x);y2=p2(x);xx=[x’,x’,x’];yy=[y’,y1’,y2’];plot2d(xx,yy,[1,2,3],’121’,’abs@p1@p2’)

Graficele celor trei functii sunt

Page 37: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

37

Page 38: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

38 CAPITOLUL 5. METODA CELOR MAI MICI PATRATE

Page 39: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 6

Integrare numerica

Cap. 5 Cap. 7

6.1 Integrarea numerica a functiilorde o variabila reala

Pentru calculul integralei

I =∫ b

af(x)dx

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

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

– x valuarea calculata a integralei;

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

– var este variabila de integrare dat ca string;

– a extremitatea stanga a intervalului de integrare;

– b extremitatea dreapta a intervalului de integrare;

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

39

Page 40: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

40 CAPITOLUL 6. INTEGRARE NUMERICA

Exemplul 6.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, err]= intg(a, b, f [,ea [, er ] ] )unde

– x valuarea calculata a integralei;

– err valoarea estimata a erorii absolute;

– a extremitatea stanga a intervalului de integrare;

– b extremitatea dreapta a intervalului de integrare;

– f identificatorul functiei Scilab de integrat;

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

Utilizand intg, integralele exemplului anterior se calculeaza astfel:

1.

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

1.110 E-14x=

1.

Page 41: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

6.2. CALCULUL NUMERIC AL INTEGRALELOR DUBLE 41

2.

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

1.522 E-14x=

1.3707622

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

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

calculeaza integrala ∫ b

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

6.2 Calculul numeric al integralelor duble

Pentru domeniul D definit prin

D = {(x, y) : a ≤ x ≤ b, finf(x) ≤ y ≤ fsup(x)}

integrala ∫∫D

fct(x, y)dxdy

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

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

• tol toleranta utilizata ın regula de oprire;

• 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

Page 42: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

42 CAPITOLUL 6. INTEGRARE NUMERICA

function [y,er]=integr(cale,tol)getf(cale+’\datas.sci’,’c’)getf(cale+’\init.sci’,’c’)getf(cale+’\finf.sci’,’c’)getf(cale+’\fsup.sci’,’c’)getf(cale+’\fct.sci’,’c’)getf(cale+’\tab.sci’,’c’)getf(cale+’\prodscal.sci’,’c’)getf(cale+’\integ2.sci’,’c’)n=3;u=init(n);old=integ2(u);nmi=10;cont=0;ni=0;while cont==0 do

ni=ni+1;v=tab(u);new=integ2(v);nrm=abs(new-old);old=new;u=v;if nrm<tol,

cont=1;er=0;

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

endendy=new;

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,

Page 43: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

6.2. CALCULUL NUMERIC AL INTEGRALELOR DUBLE 43

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

endend

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

for i=1:m,v(2*i-1,2*j-1)=u(i,j);

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

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

endendfor j=1:m-1,

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

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

endend

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

Page 44: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

44 CAPITOLUL 6. INTEGRARE NUMERICA

n0=(n-1)/2;for j=1:n0,

c(2*j)=4;endfor 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;

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

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

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

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

Exemplul 6.2 Sa se calculeze∫∫

D xydxdy unde domeniul D este delimitat de curbeley = x2 si y =

√x.

In acest caz se definesc functiile:

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

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

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

Page 45: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

6.2. CALCULUL NUMERIC AL INTEGRALELOR DUBLE 45

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

Rezolvarea finala este

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

0.y=

.0833333

Page 46: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

46 CAPITOLUL 6. INTEGRARE NUMERICA

Page 47: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 7

Integrarea numerica a ecuatiilordiferentiale ordinare

Cap. 6 Cap. 8

7.1 Rezolvarea problemelor Cauchy

Consideram problema Cauchy

y(x) = f(x, y(x)) x ∈ [x0, xf ], (7.1)y(x0) = y0, (7.2)

unde f : [x0, xf ] × Rn → Rn, despre care presupunem ca admite o solutie unicay : [x0, xf ]→ Rn.

Problema (7.1)-(7.2) se rezolva ın Scilab cu ajutorul functiei:

y=ode(y0, x0, x, f)

unde

• y0, x0 reprezinta conditiile initiale;

• x este vectorul format din punctele ın care se cere solutia problemei Cauchyx = (x1, x2, . . . , xm);

47

Page 48: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

48 CAPITOLUL 7. INTEGRAREA NUMERICA A E.D.O.

• y este matricea cu solutiile calculate ın punctele vectorului x,

y =

y1(x1) y1(x2) . . . y1(xm)y2(x1) y2(x2) . . . y2(xm)

. . . . . . . . . . . .yn(x1) yn(x2) . . . yn(xm)

• f este functia Scilab corespunzatoare membrului drept al ecuatiei (7.1).

Exemplul 7.1 Sa se rezolve problema Cauchy

y(x) = y(x) x ∈ [0, 1]y(0) = 1

In vederea reprezentarii grafice, calculam solutia problemei Cauchy ın puncteleechidistante xi = i0.1, i ∈ {0, 1, . . . , 10}.

deff(’dy=f(x,y)’,[’dy=y’])x=0:0.1:1;y=ode(1,0,x,f);plot2d(x,y)

Graficul solutiei numerice este

Exemplul 7.2 Sa se rezolve problema Cauchy

y1 = y1y2 y1(1) = 1 x ∈ [1, 2]y2 = − 1

xy1y2(1) = 1

Solutia problemei Cauchy este y1(x) = x, y2(x) = 1x .

Rezolvarea numerica este

deff(’q=f(x,p)’,[’y1=p(1)’,’y2=p(2)’,’q(1)=y1*y2’,’q(2)=-1/(x*y1)’])x=1:0.1:2;y=ode([1;1],1,x,f);xx=[x’,x’];plot2d(xx,y’)

Graficul solutiei numerice este

Page 49: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

7.1. REZOLVAREA PROBLEMELOR CAUCHY 49

7.1.1 Rezolvarea unui sistem algebric de ecuatii neliniare prin in-tegrarea unei probleme Cauchy.

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

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

x =

x1...

xn

f(x) =

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

fn(x1, . . . , xn)

,

se poate face prin integrarea problemei Cauchy{x(t) = − 1

1−tf−1x (x(t))f(x(t)) t ∈ [0, 1)

x(0) = x0

sau {x(t) = −f−1

x (x(t))f(x(t)) t ∈ [0,∞)x(0) = x0

Page 50: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

50 CAPITOLUL 7. INTEGRAREA NUMERICA A E.D.O.

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

1 − 2x2x3 − 0.1 = 010x2 − x2

2 + 3x1x3 + 0.2 = 010x3 + x2

3 + 2x1x2 − 0.3 = 0

Definim functia corespunzatoare membrului drept al problemei Cauchy (ın primavarianta) ın functia Scilab

function u=dfct(t,x)y=zeros(3,1);dy=zeros(3,3);y(1)=10*x(1)+x(1)*x(1)-2*x(2)*x(3)-0.1;y(2)=10*x(2)-x(2)*x(2)+3*x(1)*x(3)+0.2;y(3)=10*x(3)+x(3)*x(3)+2*x(1)*x(2)-0.3;dy(1,1)=10+2*x(1);dy(1,2)=-2*x(3);dy(1,3)=-2*x(2);dy(2,1)=3*x(3);dy(2,2)=10-2*x(2);dy(2,3)=3*x(1);

Page 51: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

7.2. REZOLVAREA PROBLEMELOR BILOCALE 51

dy(3,1)=2*x(2);dy(3,2)=2*x(1);dy(3,3)=10+2*x(3);u=-(dy)^(-1)*y/(1-t);

Rezolvarea sistemului devine:

getf(’c:\lucru\scilab\dfct.sci’,’c’)x0=[0;0;0];t=0:1;y=ode(x0,0,t,dfct)y(:,2)=! .0098702 !! - .0200485 !! .0299499 !

7.2 Rezolvarea problemelor bilocale

Fie problema multilocala reprezentata prin forma canonica

x(mk)k = Fk(t, z(t)) k ∈ {1, . . . n} a ≤ t ≤ b

scris astfel ıncat1 ≤ m1 ≤ m2 ≤ . . . ≤ mn ≤ 4

Prin z(t) se ıntelege vectorul

z(t) = (x1, x1, . . . , x(m1−1)1 , x2, x2, . . . , x

(m2−1)2 , . . . , xn, xn, . . . , x(mn−1)

n )

Notand m∗ =∑n

k=1 mk, conditiile la limita se scriu sub forma

gj(ζj , z(ζj)) = 0 j ∈ 1, . . . m∗

ordonate astfel ıncata ≤ ζ1 ≤ ζ2 ≤ . . . ≤ ζm∗ ≤ b.

Exemplul 7.4 Sa se rezolve problema bilocala

(x3u′′)′′ = 1 x ∈ [1, 2]u(1) = u′′(1) = 0u(2) = u′′(2) = 0

Page 52: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

52 CAPITOLUL 7. INTEGRAREA NUMERICA A E.D.O.

Pentru ınceput sa aducem problema bilocala la forma canonica. Ecuatia diferentialaeste echivalenta cu

u(4) =1x3− 6

x2u′′ − 6

xu(3)

Astfel

n = 1, a = 1, b = 2, z = (z1 = u, z2 = u′, z3 = u′′, z4 = u(3))

si ın consecinta

F1(x, z) = −6x

z4 −6x2

z3 +1x3

.

Apoi m∗ = 4 si ζ = (ζ1 = 1, ζ2 = 1, ζ3 = 2, ζ4 = 2). Conditiile la limita se scriu

g1(ζ1, z(ζ1)) = z1(ζ1) = 0 ⇒ g1(ζ, z) = z1

g2(ζ2, z(ζ2)) = z3(ζ2) = 0 ⇒ g2(ζ, z) = z3

g3(ζ3, z(ζ3)) = z1(ζ3) = 0 ⇒ g3(ζ, z) = z1

g4(ζ4, z(ζ4)) = z3(ζ4) = 0 ⇒ g4(ζ, z) = z3

Pentru rezolvarea problemei multilocala canonice descrisa mai sus Scilab continefunctia bvode

[y]=bvode(x, n, m, a, b, ζ, ipar, ltol, tol, fixpnt, fsub, dfsub, gsub, dgsub, guess)

unde

• x vector cu punctele ın care se calculeaza solutia;

• n numarul ecuatiilor diferentiale (n ≤ 20);

• m = (m1, . . . ,mn) ordinele ecuatiilor diferentiale;

• a extremitatea stanga a intervalului de integrare;

• b extremitatea dreapta a intervalului de integrare;

• ζ = (ζ1, ζ2, . . . , ζm∗) vector cu punctele ın care sunt date conditiile la limita.Punctele sunt ordonate crescator.

• ipar = (ipari)1≤i≤11 parametri necesari metodei numerice.

– ipar1 ={

0 daca problema este liniara1 daca problema este neliniara

– ipar2 = k numarul punctelor de colocatie folosite pe subintervale. (maxi mi ≤k ≤ 7). Daca ipar2 = 0 atunci k = max{maxi mi + 1, 5−maxi mi}.

Page 53: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

7.2. REZOLVAREA PROBLEMELOR BILOCALE 53

– ipar3 = nsubint reprezinta numarul subintervalelor construite ın reteauainitiala. Daca ipar3 = 0 atunci nsubint = 5.

– ipar4 = ntol numarul tolerantelor (0 < ntol ≤ m∗).

– ipar5 = ndimf dimensiunea campului de lucru fspace.

– ipar6 = ndimi dimensiunea campului de lucru ispace.

– ipar7 = iprint controlul afisarii rezultatelor intermediare. iprint =−1 afisare completa0 afisare partiala1 fara afisare

– ipar8 = 0. Reteaua de discretizare utilizata este uniforma (singura vari-anta implementata).

– ipar9 = iguess =

0 fara aproximatii initiale transmise1 aproximatii initiale se gasesc

ın subprogramul guess– ipar11 = nfixpnt. Numarul punctelor fixe, altele decat a si b incluse ın

orice discretizare.

• ltol camp de lucru de dimensiune ipar4 avand componentele 1 ≤ ltol1 <ltol2 . . . < ltolntol ≤ m∗. ltoli = l se refera la componenta l a vectoruluiz.

• tol camp de lucru de dimensiune ipar4 cu tolerantele folosite.

• fixpnt camp de lucru de dimensiune ipar11 continand punctelor fixe, alteledecat a si b incluse ın orice discretizare.

• y matrice cu solutiile obtinute. Fiecare linie corespunde unui element al vec-torului x, y = (z(xi))i, unde z are semnificatia de la problema canonica.

• fsub functie Scilab pentru F (t, z) = (F1(t, z), F2(t, z), . . . , Fn(t, z));

• dfsub functie Scilab pentru jacobianul

∂F

∂z=

∂F1∂z1

. . . ∂F1∂zm∗

. . . . . . . . .∂Fn∂z1

. . . ∂Fn∂zm∗

• gsub functie Scilab de forma g(i, z) = gi(ζi, z(ζi)), i ∈ {1, . . . ,m∗};

• dgsub functie Scilab pentru calculul jacobianului

∂g(i, z)∂z

= (∂g(i, z)

∂z1, . . . ,

∂g(i, z)∂zm∗

), i ∈ {1, . . . ,m∗};

Page 54: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

54 CAPITOLUL 7. INTEGRAREA NUMERICA A E.D.O.

• guess functie Scilab care se foloseste doar daca ipar9 = 1. Functia are forma[z, dmval]=guess(t), unde z(t) si dmval = (x(m1)

1 (t), . . . , x(mn)n (t)) este definit

pentru orice t.

Revenim la rezolvarea problemei Exemplului 7.4.Definim functiile cerute de programul bvode

function [f]=fsub(x,z)f=(1-6*x**2*z(4)-6*x*z(3))/x**3;

function [df]=dfsub(x,z)df=[0,0,-6/x**2,-6/x];

function [g]=gsub(i,z)g=[z(1),z(3),z(1),z(3)];g=g(i);

function [dg]=dgsub(i,z)dg=[1,0,0,0;0,0,1,0;1,0,0,0;0,0,1,0];dg=dg(i,:);

function [z,dmval]=guess(x)// nefolositz=0dmval=0

Pentru comoditate, definim un subprogram Scilab cu toate datele problemei

function [x,w]=col1(path)getf(path+’\fsub.sci’,’c’)getf(path+’\dfsub.sci’,’c’)getf(path+’\gsub.sci’,’c’)getf(path+’\dgsub.sci’,’c’)getf(path+’\guess.sci’,’c’)n=1;m=[4];a=1;b=2;x=a:0.1:b;fixpnt=0;zeta=[1,1,2,2];ipar=zeros(1,11);

Page 55: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

7.2. REZOLVAREA PROBLEMELOR BILOCALE 55

ipar(3)=1;ipar(4)=2;ipar(5)=2000;ipar(6)=200;ipar(7)=1;ltol=[1,3];tol=[1.e-11,1.e-11];z=bvode(x,n,m,a,b,zeta,ipar,ltol,tol,fixpnt,...

fsub,dfsub,gsub,dgsub,guess);w=z(1,:)

unde path reprezinta calea la catalogul cu subprogramele fsub, dfsub, gsub, dgsub,guess.

Rezolvarea devine

getf(’c:\lucru\scilab\col1.sci’,’c’)[x,w]=col1(’c:\lucru\scilab’);plot2d(x’,w)

Graficul solutiei numerice este

Page 56: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

56 CAPITOLUL 7. INTEGRAREA NUMERICA A E.D.O.

Page 57: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 8

Tranformata Fourier discreta

Cap. 7 Cap. 9

In Scilab transformata Fourier discreta si transformata Fourier discreta inversasunt calculate conform formulelor

y = Fn(x) yk =n−1∑j=0

xjw−kj k ∈ {0, . . . , n− 1}

si respectiv

x = F−1n (y) xk =

1n

n−1∑j=0

yjwkj k ∈ {0, . . . , n− 1}

unde x, y ∈ Cn iar w = e2iπn . Prin Cn s-a notat multimea sirurilor de numere

complexe, periodice cu perioada n, Cn = {x = (xk)k∈Z : xk+n = xk, xk ∈ C,∀k ∈Z}.

In acest scop exista functiile Scilab

• y=dft(x, indicator)

• y=fft(x, indicator)

unde semnificatia parametrilor este

- x, y sunt siruri de numere complexe reprezentand originalul si imaginea trans-formarii.

57

Page 58: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

58 CAPITOLUL 8. TRANFORMATA FOURIER DISCRETA

- indicator ={−1 se calculeaza transformata Fourier discreta1 se calculeaza transformata Fourier discreta inversa

Exemplul 8.1 Sa se calculeze coeficientii Fourier ale functiei f(x) = sin x+cos3x.

Daca integrala din expresia eoeficientului Fourier complex

ck =ak − ibk

2=

12π

∫ 2π

0f(x)e−ikxdx

se calculeaza cu regula trapezelor, cu parametrul de discretizare n ∈ N∗, atunci seobtine aproximarea c = 1

nFn(ϕ), unde c = (ck)0≤k≤n−1 si ϕ = (ϕj)0≤j≤n−1 estevectorul ale carei componente sunt ϕj = f(2πj

n ).Comenzile Scilab sunt

deff(’y=f(x)’,[’y-sin(x)+cos(3*x)’])n=16;h=2*%pi/n;x=0:h:2*%pi-h;ff=f(x);c=fft(ff,-1)/n;a=c+conj(c);b=(conj(c)-c)/%i;[a’,b’]

Page 59: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Part II

MathCAD

59

Page 60: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare
Page 61: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 9

Prezentare generala

Cap. 8 Cap. 10

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

MathCAD permite atat programare functionala, adica prin compunerea functiilor,cat si programare procedurala, fiind ınzestrat cu o paleta de programare eficienta.

MathCAD ofera posibilitatea de calcul simbolic, ıngloband o biblioteca Maplede functii simbolice.

MathCAD utilizeaza notatia matematica obisnuita.

Produsul are un editor propriu. Simbolurile operatorilor si ale functiilor se potintroduce fie prin intermediul paletelor, fie prin codurile atasate. Tot ceea ce seintroduce conduce la formarea unui document MathCAD.

Intr-un document MathCAD orice definitie, ecuatie, text-comentariu sau reprezentaregrafica ocupa un spatiu numit regiune. Regiunile sunt disjuncte doua cate doua.Procesul de calcul consta ın evaluarea regiunilor Si are loc de sus ın jos, jar pe nivelorizontal de la stanga spre dreapta. Regiunile pot fi vizualizate prin clic pe butonulView/Region, care functioneaza ın regim ”aprins/stins”.

Un calcul se poate opri fortat prin butonul Esc.

61

Page 62: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

62 CAPITOLUL 9. PREZENTARE GENERALA

Figure 9.1: Ecran MathCAD

9.1 Efectuarea calculelor numerice

9.1.1 Operatori MathCAD

Operatori de definire si evaluare

1. Operatorul de atribuire / definire :=

Se obtine tastand : sau prin alegerea din panoul Evaluation Toolbar.

Sintaxa este:

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

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

2. Operatorul de afisare / calcul =

Sintaxa este:

variabila =functie(variabile) =expresie =

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

Page 63: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

9.1. EFECTUAREA CALCULELOR NUMERICE 63

3. Operatorul de definire globala ≡

Se obtine tastand Shift+˜sau prin panoul Evaluation Toolbar. Sintaxa este:

parametrul MathCAD ≡ expresie

Operatorul de definire globala permite fixarea sau modificarea unor parametriiMathCAD la nivel global, adica avand domeniul de valabilitate ıntregul doc-ument.

9.1.2 Identificatori MathCAD

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

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

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

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

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

Exemplul 9.3a1 2 α ind %ppresiunea ∞const a.bcd a‘b

9.1.3 Constante MathCAD

MathCAD recunoaste cateva constante uzuale: π, e - baza logaritmului natural,∞ - infinit, i(sau j) - unitatea imaginara. Pe langa aceste constante mai exista si oserie de constante sistem predefinite (globale):

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

• CTOL a carei valoare implicita este 0.001 si care reprezinta toleranta de con-strangere si care controleaza restrictiile din cadrul unui bloc de rezolvare asistemelor de ecuatii.

• ORIGIN cu valoare implicita egala cu zero reprezinta valoarea indicelui primu-lui element al unui vector sau al unei matrice.

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

Page 64: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

64 CAPITOLUL 9. PREZENTARE GENERALA

9.1.4 Tipuri de date MathCAD

MathCAD utilizeaza variabile avand 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 9.4 Pentru a calcula valoarea expresiei y = x2− 3x + 2 ın punctul0.5 se defineste

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

Rezultatul se obtine tastand y, =.

y = 0.75

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

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

Operatorii algebrici uzuali sunt

Operator algebric Se obtine tastand+ (adunare) +− (scadere) −· (ınmultire) ∗/ (ımpartire) /

ˆ(ridicare la putere) ˆ

2. Variabila domeniu : progresie aritmetica

O variabila domeniu este o progresie aritmetica. Definirea unei progresii arit-metice se face prin:

variabila domeniu :=val initiala, val urmatoare .. val finala

Elementele folosite ın definitia de mai sus, respectiv valoarea initiala, valoareaurmatoare si valoarea finala pot fi constante, variabile sau expresii. Ratiaprogresiei este egala cu

Page 65: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

9.1. EFECTUAREA CALCULELOR NUMERICE 65

val urmatoare - val initiala.

Pentru a obtine .. se tasteaza ; .

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

x =

00.91.82.73.6

Daca ın sintaxa de definire a unei variabile de tip domeniu lipsesc virgula sival urmatoare, ratia progresiei aritmetice este

sgn(val finala-val initiala).

Exemplul 9.6 Sirurile i := 0.5..3 si j := 5..2.5 definesc urmatoarele progre-siile aritmetice

i = j =0.51.52.5

543

3. Variabila indice

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

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

4. Sir

Prin intermediul unei variabile indice se poate defini un sir oarecare prin sin-taxa:

variabila sirvariabila indice := expresie.

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

Page 66: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

66 CAPITOLUL 9. PREZENTARE GENERALA

Exemplul 9.8 Pentru variabila k definita ın exemplul anterior definim sirulxk = k2 astfel:

xk := k2

Vizualizam rezultatul prin

x =

00491625

sau

xk =491625

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

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

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

5. Tablouri : vectori si matrice

MathCAD permite definirea matricelor si are prevazute operatiile uzuale decalcul matriceal. Vectorii de dimensiune n se considera matrice cu n linii si ocoloana.

Pentru a introduce o matrice ın documentul curent se selecteaza din meniulInsert/Matrix sau prin paleta Matrix. Ca urmare, pe ecran apare o fer-eastra de dialog ın care se completeaza numarul de linii, respectiv de coloanecorespunzatoare matricei ce se doreste a fi inserata. Dupa precizarea dimensi-unilor matricei, toate pozitiile marcate se vor completa cu expresii sau numere,trecerea de la o pozitie la alta facandu-se prin apasarea tastei Tab. Aceastametoda de definire a unei matrice este o metoda explicita. Vorbim de o metodaimplicita de definire a unei matrice ın cazul ın care exista o formula de legaturaıntre indici si elementele din matrice.

Intr-un tablou valoarea initiala a indicilor este 0. Daca dorim ca valoareainitiala a indicilor sa fie 1, trebuie sa atribuim parametrului ORIGIN valoarea1. Aceasta se obtine prin definitia globala ORIGIN ≡ 1.

Page 67: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

9.1. EFECTUAREA CALCULELOR NUMERICE 67

Referirea unui element al unui tablou se face indicand numele tabloului (vari-abila) urmat de indicii elementului separati prin virgula. Trecerea la indicareaindicelor se obtine prin tasta [.

Exemplul 9.9

Dacai := 0..3 j := 0..3 Xi,j := i2 +

j

2atunci se obtine

X =

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

Exemplul 9.10

Daca

A :=(

1 32 4

)atunci

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

Pentru a defini siruri de vectori se utilizeaza indici superiori. Un indice superiorse obtine tastand Ctrl+6 sau prin paleta Matrix M<T>.

Exemplul 9.11

Fie

u<0> =(

12

)A =

(1 02 −1

)Pentru i := 0..4 calculam

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

obtinand

u<4> =(

12

)u<5> =

(10

)iar

u =(

1 1 1 1 1 12 0 2 0 2 0

)

Page 68: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

68 CAPITOLUL 9. PREZENTARE GENERALA

u1,4 = 2 u0,4 = 1

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

Operatori matriceali

Operator algebric Se obtine tastand+ (adunare) +− (scadere) −· (ınmultire) ∗

ˆ(ridicare la putere) ˆ

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

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

∑i |ai,j |

norm2(A) norma euclidiana,√

max eigenvals(aT · a)

norme(A) norma Frobenius,√∑

i,j a2i,j

normi(A) norma Cebısev, maxi∑

j |ai,j |

6. Functii

MathCAD poseda o bogata familie de functii predefinite si ofera posibilitateadefinirii de functii noi conform sintaxei

numeFunctie(arg1, arg2, . . .) := expresie

Functii numerice uzuale aplicabile aplicabile unui numar real sau complex x

Page 69: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

9.1. EFECTUAREA CALCULELOR NUMERICE 69

Apelare Semnificatiesin(x) sinx

cos(x) cos x

tan(x) tgx

cot(x) ctgx

asin(x) arcsin(x)acos(x) arccos(x)atan(x) arctg(x)sinh(x) shx

cosh(x) chx

tanh(x) thx

asinh(x) arcsh(x)acosh(x) arcch(x)atanh(x) arcth(x)exp(x) ex

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

9.1.5 Vectorizare

Sa presupunem ca o functie f(x, y) trebuie aplicata succesiv unui sistem de vari-abile (xi, yi)1≤i≤n, obtinand zi = f(xi, yi), i ∈ {1, 2, . . . , n}.. MathCAD ofera posi-bilitatea efectuarii acestor calcule prin vectorizare, un procedeu care este multmairapid decat prin folosirea indecsilor. Sintaxa utilizata este

x :=

x1...

xn

y :=

y1...

yn

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

Operatorul de vectorizare se obtine tastand Crtl + - fie din paleta Matrix cucursorul MathCAD plasat pe relatia de calcul.

Exemplul 9.12 Rezolvarea ecuatiilor de gradul doi avand coeficientii

a :=

1111

b :=

3210

c :=

2114

Formulele

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

√b2 − 4 · a · c2 · a

y :=−−−−−−−−−−−−−−→−b−

√b2 − 4 · a · c2 · a

Page 70: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

70 CAPITOLUL 9. PREZENTARE GENERALA

produc rezultatele

x =

−1−1

−0.5 + 0.866i2i

y =

−2−1

−0.5− 0.866i−2i

9.1.6 Unitati de masura

Variabilele MathCAD pot reprezenta marimi fizice, ın care caz valoarea numericaeste urmata de o unitate de masura. MathCAD dispune de un set complet deunitati de masura predefinite. Pentru a asocia unui numar sau unei expresii o uni-tate de masura se foloseste semnul de ınmultire dupa numar sau expresie apoi ase scrie explicit unitatea dorita. Sunt recunoscute majoritatea unitatilor prin formalor abreviata. Implicit MathCAD foloseste unitatile din Sistemul International (SI).Acest lucru ınseamna ca la folosirea semnului egal un rezultat ce contine si unitati demasura va fi afisat ın termenii unitatilor de baza sau derivate ale SI. Pentru orice ex-presie care implica unitati de masura MathCAD efectueaza verificari de consistenta.Daca se ıncearca efectuarea sumei sau diferentei ıntre valori incompatibile din punctde vedere al unitatilor de masura se va afisa un mesaj de eroare.

De asemenea pe langa (SI) sunt disponibile si alte sisteme de unitati de masura:CGS, U.S. si MKS. Fiecare dintre aceste standarde constituie un tabel ce contineunitatile de baza specifice si unitatile ce masoara:

unghiuri si lungimi masa si timp arii si volumeviteze si acceleratii forte, energii si puteri presiuni si vascozitatielectricitate frecventa temperatura

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

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

s2 .

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

F := masa · acc

F = 10N

Transformarea unitatilor

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

1. tastarea marimii si a unitatii de masura corespunzatoare;

Page 71: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

9.2. REPREZENTARI GRAFICE 71

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 9.14

g :=1

1000· kg 3 · kg = 3× 103g

min := 60 · s h := 60 ·min 1 · h = 3.6× 103s

9.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 se poateda si prin combinatia de taste Ctrl+7.

• Surface plot – Reprezentare grafica 3D ın coordonate carteziene. Comanda sepoate 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

Page 72: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

72 CAPITOLUL 9. PREZENTARE GENERALA

Reprezentarea grafica 2D ıncoordonate carteziane

Sa presupunem ca dorim sa reprezentam functia x → f(x). Dupa definireafunctiei, ın urma comenzii de realizare a reprezentarii grafice apare un cadru cudoua pozitii marcate, care se completeza cu x (pe axa orizontala) si respectiv f(x)(pe axa verticala). In cadru apar, corespunzator fiecarei axe, alte doua pozitii mar-cate, pentru fixarea intervalelor. Completarea acestor pozitii marcate este optionala.Un clic ın afara cadrului sau Enter declanseaza realizarea reprezentarii grafice.

x

f(x)

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

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

x, x, y

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

Reprezentarea grafica 2D ıncoordonate polare

Daca curba are ecuatia polara r = r(t) atunci ın urma comenzii de realizare areprezentarii grafice apare un cadru cu doua pozitii marcate, care se completeza cu tsi respectiv r(t). In cadru apar alte doua pozitii marcate, pentru fixarea intervaluluiın care variaza t.. Completarea acestor pozitii marcate este optionala. Un clic ınafara cadrului sau Enter declanseaza realizarea reprezentarii grafice.

Page 73: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

9.3. CREAREA UNEI ANIMATII 73

&%'$

t

&%'$

r(t)

Formatarea graficelor 2D

MathCAD realizeaza reprezentarile grafice cu o serie de parametri impliciti.Aceste setari pot fi schimbate de utilizator si de asemenea se pot adauga titlurisi etichete. Pentru a formata o zona grafica se executa dublu clic pe zona respectivasau se selecteaza zona grafica si apoi din meniul Format/Graph/X-Y Plot sau PolarPlot. In urma actiunii executate se deschide o fereastra de dialog prin intermediulcareia se poate modifica

• Natura axelor de coordonate;

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

• Culoarea de desenare.

Reprezentare grafica 3D ıncoordonate carteziene

Reprezentare grafica prin linii de nivel

Reprezentare grafica 3D Bar

Reprezentare grafica 3D Scatter

Reprezentare grafica Vector Field

9.3 Crearea unei animatii

Prin intermediul variabilei predefinite FRAME pot fi create si apoi rulate scurteclipuri animate. Orice obiect MathCAD care poate fi facut sa depinda de variabilaFRAME poate fi animat. Sunt incluse aici nu numai punctele din grafice ci sirezultatele numerice. Clipurile animate pot fi rulate la diverse viteze si de asemeneapot fi salvate pentru a fi apoi rulate ın cadrul altor aplicatii.

Pentru realizarea unei animatii ın MathCAD trebuie urmati pasii:

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

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

Page 74: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

74 CAPITOLUL 9. PREZENTARE GENERALA

3. Dupa deschiderea casutei de dialog se selecteaza din foaia de lucru regiunea cese doreste sa apara ın animatie;

4. In cadrul casutei de dialog se fixeaza limitele inferioara, respectiv superioara avariabilei FRAME, precum si viteza de rulare (numarul de cadre pe secunda);

5. Se porneste animatia prin apasarea butonului Animate.

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

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

Exemplul 9.15 In intervalul [−1, 1], sa se transforme graficul functiei g(x) = x ınf(x) = x2 prin efectul ”morphing”.

Astfel definim

f(x) := x2 g(x) := x MaxFRAME := 60

h(x) :=FRAME

MaxFRAME· f(x) + (1− FRAME

MaxFRAME) · g(x)

a := −1 b := 1

si construim graficul functiei h(x)(FRAME = 0!). Efectuam operatiile mentionatemai sus si obtinem rezultatele din Fig. 9.2.

9.4 Editare de text

Intr-un document MathCAD pot fi incluse texte si comentarii asupra calculelorce se efectueaza. O regiune text se obtine tastand ” (ghilimele). In masura ın carese adauga text, regiunea se extinde la dreapta. Tastand Enter se trece pe liniaurmatoare. Regiunea text se paraseste prin plasarea cursorului ın afara ei.

Meniul Format ofera facilitati de formatare a textului.

9.5 Salvarea / restaurarea datelor numericeComunicatii ıntre medii de programare

Date numerice sub forma unei matrice se pot salva si / sau ıncaca ın / din fisiereASCII asigurand astfel un canal de comunicatie cu un alt mediu de programare.

In acest sens sunt definite functiile

Page 75: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

9.5. SALVAREA / RESTAURAREA DATELOR NUMERICE 75

Figure 9.2: Animatie tip ”morphing”

Page 76: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

76 CAPITOLUL 9. PREZENTARE GENERALA

• READPRN(fisier) citeste date structurate dintr-un fisier. Functia returneaza omatrice, fiecare linie din fisier devine o linie ın matrice. Numarul de elementede pe fiecare linie trebuie sa fie acelasi. In general functia se foloseste ıninstructiuni de forma:

A := READPRN(fisier)

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

WRITEPRN(fisier) := A

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

APPENDPRN(fisier) := A

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

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

9.6 Instrumente de calcul simbolic

Exista doua componente prin care se pot efectua calcule simbolice:

• Utilizınd comenzile meniului Symbolic, accesibil din bara superioara de meni-uri (MenuBar) (Fig. 9.3);

• Utilizınd functiile casetei Symbolic, ce permite obtinerea rezultatelor simbolicela fel de usor ca cele numerice (Fig. 9.3).

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

Page 77: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

9.6. INSTRUMENTE DE CALCUL SIMBOLIC 77

Figure 9.3: Meniul si caseta Symbolic.

Page 78: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

78 CAPITOLUL 9. PREZENTARE GENERALA

Numele comenzii SemnificatiaEvaluate 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 pana la ordinulConvert to partial fraction Dezvoltare ın fractii simple

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

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

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

Selectarea unui element se obtine prin clic asupra elementului sau utilizand tas-tatura, cu ajutorul tastelor directionale pozitionam cursorul pe elementul dorit.Elementul selectionat este ıncadrat. Cu ajutorul tastei Space o zona selectata sepoate extinde si restrange iar cu tastele directionale selectia se poate muta de pe untermen / operand pe altul.

Pentru actionarea comenzilor meniului Symbolic se procedeaza dupa cum urmeaza:

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

2. Se selecteaza expresia sau variabila activa.

3. Se selecteaza comanda dorita din meniul Symbolic si se lanseaza ın executieprin clic sau tastand Enter.

Page 79: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

9.7. ELEMENTE DE PROGRAMARE FUNCTIONALA 79

Rezultatul apare sub expresia ın cauza.Pentru editarea unei ecuatii ıntre membrul stang si membrul drept se pune egalul

simbolic, care se obtine tastand Ctrl+=.

Utilizarea functiilor casetei Symbolic. Functiile casetei Symbolic se ape-leaza printr-un clic, ın dreptul cursorului MathCAD apare functia apelata ımpreunacu pozitii marcate ce urmeaza a fi completate cu expresii si/sau variabile asupracarora are loc actiunea.

Evaluarea unei asemenea expresii se realizeaza prin comanda de simplificare sim-bolica → ce se obtine tastand Ctrl + . urmat de clic ın afara regiunii expresiei sautastand Enter.

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

Functiunea Se obtine tasandCalculul unei sume Ctrl + $Calculul unui produs Ctrl + #Calculul unei limite Ctrl + lLimita la dreapta Ctrl + Shift + aLimita la stanga Ctrl + Shift + bDerivare Ctrl + ? si ?Calculul unei primitive Ctrl + iCalculul unei integrala Ctrl + &

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

9.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 control if(cond, exp1, exp2). Daca expresia cond este adevarata atunci valoarea returnata deoperator este exp1 iar ın caz contrar exp2. cond este o expresie logica.

In MathCAD orce valoare nenula reprezinta valoarea logica adevarat si 0 reprezintavaloarea logica fals.

Operatorii relationali si operatorii logici se pot obtine prin paleta Boolean sautastand

Page 80: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

80 CAPITOLUL 9. PREZENTARE GENERALA

Operatori relationali Se obtine tastand= Ctrl + =< >

> <

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

Operatori logici Se obtine tastand¬ (negatia) Ctrl + Shift + 1∧ (disjunctia) Ctrl + Shift + 7∨ (conjunctia) Ctrl + Shift + 6⊕

(sau exclusiv) Ctrl + Shift + 5

Exemplul 9.16 Sa se calculeze limita sirului (an)n∈N definita prin formula derecurenta

an+1 =√

an + 2 a0 =√

2

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

Codul MathCAD este

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

a0 :=√

2 a1 :=√

2 +√

2

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

√an + 2, an

]lim := alast(a) lim = 2

9.8 Elemente de programare procedurala

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

Realizarea unui program se obtine cu instrumentele casetei de programare (dinbara/panoul cu uneltele MathCAD) (Fig. 9.4).

Un program MathCAD va apare ca o functie

NumeFunctie(variabile formale) :=

∥∥∥∥∥∥∥∥instructiunileprogramului. . .expresia returnata

Page 81: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

9.8. ELEMENTE DE PROGRAMARE PROCEDURALA 81

Figure 9.4: Caseta cu instrumentele de programare.

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

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

NumeFunctie(variabile formale) := c

urmat de clic pe Add Line.Rezultatul va fi

NumeFunctie(variabile formale) :=∥∥∥∥ c

Semnul c desemneaza cursorul MathCAD.Cele doua pozitii marcate permit extinderea numarului de randuri (din nou clic

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

indici, etc.

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

• if este instructiunea conditionala. Selectand aceasta instructiune, po-zitia mar-cata de cursorul MathCAD se transforma ın

if

Cele doua pozitii marcate se completeaza cu

1. expresia care se obtine daca conditia este adevarata (pozitia marcata dinstanga);

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

Page 82: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

82 CAPITOLUL 9. PREZENTARE GENERALA

Daca prima pozitie marcata se extinde cu o linie atunci schema grafica devine

if∥∥∥∥In acest caz pozitiile marcate se completeaza cu activitatile corespunzatoarecazului ın care conditia este ındeplinita. Daca conditia este falsa atunci secontinua cu instructiunea urmatoare.

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

otherwise

Noua pozitie marcata se completeaza cu activitatile corespunzatoare cazuluiın care conditia este falsa.

• on error este instructiunea de tratare a exceptiei de depasire flotanta. Se-lectand instructiunea on error pozitia marcata de cursorul MathCAD devine

on error

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 error1x

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

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

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

Selectand instructiunea while, pozitia marcata de cursorul MathCAD devine

while

Cele doua pozitii marcate se completeaza cu

Page 83: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

9.8. ELEMENTE DE PROGRAMARE PROCEDURALA 83

1. testul initial buclei;

2. instructiunile ciclului.

• Selectand instructiunea for, pozitia marcata din dreptul cursorului MathCADse ınlocuieste prin

for ∈

Cele trei pozitii marcate se completeaza cu

1. indicele ciclului;

2. intervalul ın care variaza indicele;

3. instructiunile buclei.

• Instructiunea break se foloseste pentru ıntreruperea unei instructiuni de ciclarewhile, for. Bucla curenta este oprita si executia continua de la instructiuneaurmatoare.

• Instructiunea continue se foloseste pentru scurtcircuitarea partiala a unei instructiunide ciclare while, for; executia se reia de la prima instructiune a buclei, sarindu-se peste secventa de cod cuprinsa ıntre instructiunea continue si sfarsitul buclei.

• Instructiunea return are ca efect scurtcircuitarea programului. Instruc- tiunilecare urmeaza nu mai sunt executate. Selectarea acestei instructiuni introducepe pozitia marcata de cursorul MathCAD

return

Noua pozitie marcata se completeaza cu valoarea returnata de functie.

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

Exemplificam posibilitatile oferite prin calculul sirului primelor N numere prime(9.5).

Page 84: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

84 CAPITOLUL 9. PREZENTARE GENERALA

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

Page 85: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 10

Rezolvarea sistemelor algebricede ecuatii liniare

Cap. 9 Cap. 11

Pentru rezolvarea sistemelor algebrice de ecuatii liniare de forma Ax = b ıncare numarul necunoscutelor coincide cu numarul ecuatiilor, MathCAD ofera douamodalitati de abordare.

Mai ıntai se defineste matricea A a sistemului si apoi vectorul coloana b prinatribuire. Daca matricea A a sistemului este nesingulara solutia x se calculeazacu ajutorul formulei x := A−1 · b. Acelasi rezultat se obtine si prin intermediulcomenzii x := lsolve(A, b). In cazul ın care determinantul matricei sistemului estenul, aceasta ınsemnand ca sistemul algebric de ecuatii liniare dat are necunoscutesecundare, o solutie particulara a acestuia se poate obtine prin intermediul aceleiasicomenzi x := lsolve(A, b).

Exemplul 10.1 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

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

85

Page 86: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

86 CAPITOLUL 10. SISTEME ALGEBRICE LINIARE

A :=

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

b :=

11121314

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

2111

Acelasi rezultat se obtine si prin

x := lsolve(A, b) x =

2111

Exemplul 10.2 Sa se rezolve sistemul algebric de ecuatii liniare:

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

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

Rezolvarea sistemului dat consta ın executarea urmatorilor pasi

A :=

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

b :=

10−8−428

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

26.4−25.4

90

Solutia astfel obtinuta reprezinta o solutie particulara a sistemului dat.

Page 87: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 11

Rezolvarea sistemelor siecuatiilor algebrice

Cap. 10 Cap. 12

11.1 Rezolvarea sistemelor algebrice de ecuatii neliniare

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

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

x =

x1...

xn

f(x) =

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

fn(x1, . . . , xn)

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

necesara precizarea unei aproximatii initiale. Pornind de la aceasta aproximatieMathCAD construieste prin intermediul unui proces iterativ noi aproximatii alesolutiei. Daca valorile aproximatiei initiale nu sunt alese din domeniul de convergenta

87

Page 88: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

88 CAPITOLUL 11. SISTEME SI ECUATII ALGEBRICE

procesul iterativ diverge. Astfel, alegerea aproximatiei initiale poate reprezenta ınanumite cazuri partea cea mai dificila din rezolvarea problemei.

Rezolvarea unui sistem algebric de ecuatii neliniare consta ın construirea unuibloc de rezolvare care trebuie sa contina cuvantul cheie given si una din functiilefind, respectiv minerr. Cuvantul cheie given trebuie sa preceada ın blocul derezolvare ecuatiile sistemului.

Exemplul 11.1 Sa se rezolve sistemul algebric de ecuatii liniare:10x1 + x2

1 − 2x2x3 − 0.1 = 010x2 + x2

2 − 2x1x3 + 0.2 = 010x3 + x2

3 − 2x1x2 − 0.3 = 0

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

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

given

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

find(x, y, z) =

9.841× 10−3

−0.020.03

Semnul ”egal” scris ıntre cei doi membrii ai fiecarei ecuatii se obtine prin apasarea

simultana a tastelor Ctrl si simbolul =. Algoritmul pentru functia find implica unproces special de rezolvare ın care metoda este aleasa dintr-un grup de metode pecare programul le pune la dispozitie. Alegerea unei metode se face apasand butonuldin dreapta mouse-ului pe numele functiei find si apoi prin selectarea unei optiunidin meniul de rezolvare a sistemului. De aici se poate alege optiunea AutoSelect prinintermediul careia MathCAD va face o alegere automata a metodei de rezolvare asistemului ın functie de caz (sistem liniar, neliniar, sau problema de programareneliniara). Pentru cazul neliniar exista trei metode care pot fi alese:

1. metoda gradientului conjugat,

2. metoda Levenberg-Marquardt,

3. metoda quasi-Newton.

Page 89: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

11.2. REZOLVAREA ECUATIILOR ALGEBRICE 89

11.2 Rezolvarea ecuatiilor algebrice

In acesta sectiune vom trata modalitatea de rezolvare a unei ecuatii algebrice deforma f(x) = 0 cu f : I ⊂ R→ R.

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

Exemplul 11.2 Sa se rezolve ecuatia 2x = x2.

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

f(x) := 2x − x2

α := −0.5

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

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

Daca se cunoaste un interval [a, b] astfel ıncat f(a)f(b) < 0 (f continua), atuncipentru determinarea unei solutii a ecuatiei f(x) = 0 se poate utiliza functia rootcu parametri f(x), x, a, b. In acest caz, x nu mai trebuie definit, el aparand ca unparametru formal.

Exemplul 11.3

Solutia problemei anterioare este

f(x) := 2x − x2

root(f(x), x,−1,−0.5) = −0.767

11.3 Rezolvarea ecuatiilor polinomiale

Ecuatia polinomiala reprezinta un caz particular de ecuatie algebrica. In cazulecuatiilor polinomiale se cere determinarea tuturor radacinilor reale sau complexe.

Pentru a rezolva ın MathCAD o ecuatie polinomiala de grad n se defineste unvector coloana cu n + 1 componente ce reprezinta coeficientii polinomului ıncepandcu coeficientul monomului de grad 0 si continuand ın ordinea crescatoare a gradelorpana la coeficientul monomului de grad maxim.

Page 90: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

90 CAPITOLUL 11. SISTEME SI ECUATII ALGEBRICE

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

1. metoda lui Laguerre,

2. metoda matricei companion.

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

Exemplul 11.4 Sa se determine radacinile polinomului

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

Rezolvarea este:

v :=

6

−13−2

72

polyroots(v) =

−3−20.5

1

Page 91: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 12

Rezolvarea problemelor deinterpolare

Cap. 11 Cap. 13

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

12.1 Interpolare polinomiala

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

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

i=1

yi

n∏j=1

j 6=i

z − xj

xi − xj

Pentru implementare pe calculatoare se foloseste formula baricentrica a polino-mului lui Lagrange

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

∑ni=0 yi

∏nj=1

j 6=i

z−xj

xi−xj∑ni=0

∏nj=1

j 6=i

z−xj

xi−xj

91

Page 92: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

92 CAPITOLUL 12. REZOLVAREA PROBLEMELOR DE INTERPOLARE

Figure 12.1: Polinomul de interpolare Lagrange

Page 93: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

12.2. INTERPOLARE CU FUNCTII SPLINE CUBICE 93

Valoarea acestui polinom este calculata prin intermediul functiei din Fig. 12.1Semnificatia parametrilor functiei L(x, vx, vy) este:

• x matrice cu punctele ın care se doreste calcularea valorii polinomului Lagrangede interpolare.

• (vx, vy) = (vxi, vyi)i datele problemei de interpolare. Componentele vectoru-lui vx trebuie sa fie distincte doua cate doua.

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

f(x) = x2

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

Rezolvarea este:

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

vxi := i vyi := f(vxi) z :=

0.53.510

L(z, vx, vy) =

0.2512.25100

12.2 Interpolare cu functii spline cubice

In cazul ın care multimea interpolatoare este multimea functiilor spline cubicese folosesc functiile MathCAD

• cspline De completat ce face cspline

• pspline De completat ce face pspline

• lspline De completat ce face lspline

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

c = cspline(vx, vy) c = pspline(vx, vy) c = lspline(vx, vy)

unde

• c este un vector cu parametrii functiei spline;

Page 94: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

94 CAPITOLUL 12. REZOLVAREA PROBLEMELOR DE INTERPOLARE

• (vx, vy) = (vxi, vyi)i sunt datele problemei de interpolare. Componentelevectorului vx trebuie date ın ordine crescatoare si sunt distincte doua catedoua.

Sintaxa funciei interp este

y = interp(c, vx, vy, x)

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

Exemplul 12.2 Sa se calculeze valorile functiei spline cubice de interpolare ınpunctele 0.5, 3.5, 10 pentru

f(x) = x3

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

Rezolvare este:

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

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

0.53.510

c := cspline(x, y) interp(c, x, y, z) =

0.12542.8751× 103

Page 95: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 13

Metoda celor mai mici patrate

Cap. 12 Cap. 14

Determinarea unui polinom de aproximare construit prin metoda celor mai micipatrate de grad m pentru datele (xi, yi)1≤i≤n (m << n) se obtine cu ajutorul functlorMathCAD regress si interp.

Functia c = regress(vx,vy,k) returneaza un vector c utilizat de functia y = in-terp(c,vx,vy,x), ce calculeaza valoarea polinomului de aproximare de grad k a datelor(vxi, vyi)i ın x. Ultimele k + 1 componente ale vectorului c contin coeficientii poli-nomului de aproximare construit prin metoda celor mai mici patrate.

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

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

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

95

Page 96: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

96 CAPITOLUL 13. METODA CELOR MAI MICI PATRATE

Figure 13.1: Polinoamele de aproximare de grad 1 si 2

Page 97: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 14

Integrare numerica

Cap. 13 Cap. 15

14.1 Integerarea numerica a functiilor realede o variabila reala

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

af(x)dx

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

simbolul integralei definite, dupa care se completeaza pozitiile marcate:

• limitele intervalului de integrare,

• functia de integrat,

• variabila ın raport cu care se face integrarea.

Integrarea se face ın raport cu o singura variabila, iar functia poate fi de mai multevariabile. Restul parametrilor ın afara variabilei de integrare vor fi considerati con-stante si ın consecinta vor trebui sa fie definiti ın prealabil. In mod implicit integrala

97

Page 98: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

98 CAPITOLUL 14. INTEGRARE NUMERICA

se evalueaza numeric pe baza unei metode alese de AutoSelect. Daca se doresteevaluarea integralei printr-o anumita metoda, se executa clic dreapta pe simbolulintegralei, se deselecteaza optiunea AutoSelect si se alege una dim metodele pe careMathCAD le pune la dispozitie:

• Romberg,

• Adaptive,

• Infinite Limit,

• Singular Endpoint.

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

Exemplul 14.1 Sa se calculeze integralele:

1.

∫ 3

1x2 · exdx

2.

∫ π2

0

sin(x)x

dx

Rezolvare:1.

TOL ≡ 10−6

∫ 3

1x2 · exdx = 97.709

2.

TOL ≡ 10−9

∫ π2

0

sin(x)x

dx = 1.371

14.2 Calculul numeric al integralelor duble

Pentru calculul integralelor duble de forma∫∫D

f(x, y)dxdy

undeD = {(x, y) : a ≤ x ≤ b, finf(x) ≤ y ≤ fsup(x)}.

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

a

∫ fsup(x)

finf(x)f(x, y)dydx.

Page 99: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

14.2. CALCULUL NUMERIC AL INTEGRALELOR DUBLE 99

Exemplul 14.2 Sa se calculeze∫ ∫

D xydxdy unde domeniul D este delimitat decurbele y = x2 si y =

√x.

Reprezentand grafic domeniul de integrare, deducem finf(x) = x2, fsup(x) =√x, a = 0, b = 1. ∫ 1

0

∫ √x

x2

x · ydydx = 0.0833.

Page 100: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

100 CAPITOLUL 14. INTEGRARE NUMERICA

Page 101: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 15

Integrarea numerica a ecuatiilordiferentiale ordinare

Cap. 14 Cap. 16

15.1 Rezolvarea problemelor Cauchy

MathCAD ofera mai multe functii pentru rezolvarea problemei Cauchy pentrusistemul de ecuatii diferentiale ordinare

y(x) = f(x, y(x)) x ∈ [x0, xf ], (15.1)y(x0) = y0, (15.2)

unde f : [x0, xf ] × Rn → Rn, despre care presupunem ca admite o solutie unicay : [x0, xf ]→ Rn.

Pe componente sistemul (15.1) si conditiile initiale (15.2) se scriuy1(x) = f1(x, y1(x), . . . , yn(x)). . . . . .

yn(x) = fn(x, y1(x), . . . , yn(x))

y1(x0) = y0

1

. . .yn(x0) = y0

n

Aceste functii sunt

• rkfixed, Rkadapt, Bulstoer, Stiffb, Stiffr, Radau;

101

Page 102: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

102 CAPITOLUL 15. INTEGRAREA NUMERICA A E.D.O.

• rkadapt, bulstoer, stiffb, stiffr, radau;

• Odesolve.

Utilizarea functiilor rkfixed, Rkadapt, Bulstoer, Stiffb, Stiffr, Radau

Formatul de utilizare este

u = rkfixed(y0, x0, xf , N, D)u = Rkadapt(y0, x0, xf , N, D)u = Bulstoer(y0, x0, xf , N, D)u = Stiffb(y0, x0, xf , N, D, J)u = Stiffr(y0, x0, xf , N, D, J)u = Radau(y0, x0, xf , N, D)

unde

• y0 = y(x0) valorile initiale date ın x0;

• x0, xf extremitatile intervalului de integrare;

• N parametrul de discretizare: numarul intervalelor echidistante ın care seımparte intervalul [x0, xf ];

• D numele functiei ce corespunde lui f(x, y)

• J este o functie de variabile x, y a carei voloare este matricea de dimensiunen× (n + 1) data de

J(x, y) =

∂f1(x,y)

∂x∂f1(x,y)

∂y1. . . ∂f1(x,y)

∂yn

...... . . .

...∂fn(x,y)

∂x∂fn(x,y)

∂y1. . . ∂fn(x,y)

∂yn

• u o matrice de dimensiune (N + 1) × (n + 1) cu solutia calculata. Prima

coloana contine abscisele punctelor de discretizare. Celelalte coloane continvalorile componentelor calculate ın punctele respective.

Exemplul 15.1 Sa se rezolve problema Cauchy

y(x) = y(x) x ∈ [0, 1]y(0) = 1

Page 103: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

15.1. REZOLVAREA PROBLEMELOR CAUCHY 103

Rezolvarea este

x0 := 01 xf := 1 y0 := 1 D(x, y) := y0

u = rkfixed(y0, x0, xf , 5, D) u =

0 10.2 1.2210.4 1.4920.6 1.8220.8 2.2261 2.718

Exemplul 15.2 Sa se rezolve problema Cauchy

y1 = y1y2 y1(1) = 1 x ∈ [1, 2]y2 = − 1

xy1y2(1) = 1

Solutia problemei Cauchy este y1(x) = x, y2(x) = 1x .

Rezolvarea numerica este

x0 := 1 xf := 2 y0 :=(

11

)D(x, y) :=

(y0 · y1−1x·y0

)

u = rkfixed(y0, x0, xf , 5, D) u =

1 1 11.2 1.2 0.8331.4 1.4 0.7141.6 1.6 0.6251.8 1.8 0.5562 2 0.5

Utilizarea functiilor rkadapt, bulstoer, stiffb, stiffr, radau

Formatul de utilizare este

u = rkadapt(y0, x0, xf , acc,D, kmax, s)u = bulstoer(y0, x0, xf , acc,D, kmax, s))u = stiffb(y0, x0, xf , acc,D, J, kmax, s))u = stiffr(y0, x0, xf , acc,D, J, kmax, s))u = radau(y0, x0, xf , acc,D, kmax, s)

unde

• y0 = y(x0) valorile initiale date ın x0;

• x0, xf extremitatile intervalului de integrare;

1Indice literal: se tasteaza x.0

Page 104: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

104 CAPITOLUL 15. INTEGRAREA NUMERICA A E.D.O.

• acc este o toleranta utilizata ın testele de precizie;

• D numele functiei ce corespunde lui f(x, y)

• J este o functie de variabile x, y a carei voloare este matricea de dimensiunen× (n + 1) data de

J(x, y) =

∂f1(x,y)

∂x∂f1(x,y)

∂y1. . . ∂f1(x,y)

∂yn

...... . . .

...∂fn(x,y)

∂x∂fn(x,y)

∂y1. . . ∂fn(x,y)

∂yn

• kmax numarul maxim de puncte intermediare ın care se calculeaza solutia;

• s marginea inferioara a pasului de integrare numerica.

• u o matrice avand cel mult kmax linii si n + 1 coloane cu solutia calculata.Prima coloana contine abscisele punctelor de discretizare. Celelalte coloanecontin valorile componentelor calculate ın punctele respective.

Utilizarea functiei Odesolve

Formatul de utilizare este

odesolve(x, b, [step])

unde

• x reprezinta variabila de integrare si care trebuie sa fie reala;

• b este punctul terminal al intervalului pe care se face integrarea;

• step este un parametru optional ce semnifica numarul de pasi efectuati pentruaflarea solutiei.

Datele problemei Cauchy se definesc ıntr-un bloc given. Egalitatea se obtinetastand Ctrl+ = iar derivatele prin Shift+? ( d

d ), Ctrl +Shift+? ( dd

) sau Ctrl +F7 (′).

Rezultatul este o functie MathCAD.

Exemplul 15.3

Sa se rezolve problema Cauchy

y′′(x) = −y

′(x) + 2y(x),

y(0) = 1,

y′(0) = 3.

Page 105: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

15.2. REZOLVAREA PROBLEMELOR BILOCALE 105

Rezolvarea estegiven

y′′(x)=− y′(x) + 2 · y(x)y(0)=1y′(0)=3

y := odesolve(x, 5) x = 0, 1..5 x =

∣∣∣∣∣∣∣∣∣∣∣∣∣

012345

∣∣∣∣∣∣∣∣∣∣∣∣∣y(x) =

∣∣∣∣∣∣∣∣∣∣∣∣∣

14.44

12.30333.47490.996

247.354

∣∣∣∣∣∣∣∣∣∣∣∣∣15.2 Rezolvarea problemelor bilocale

Fie intervalul I de pe axa reala avand extremitatile a si b. Consideram problemabilocala

y′(x) = f(x, y(x)) x ∈ I (15.3)yi(a) = y0

i i ∈ {i1, . . . , im} ⊂ {1, 2, . . . , n} (15.4)g(y(b)) = 0 (15.5)

unde f : I × Rn → Rn si g : Rn → Rn−m, n ≥ 2. Notam J = {i1, . . . , im} siK = {1, 2, . . . , n}\J.

Rezolvarea ın MathCAD a problemei (15.3)-(15.5) se face ın doi pasi

1. Utilizand functia sbval se determina y(a), adica celelalte n−m componenteastfel ıncat sa fie satisfacute conditiile (15.5).

2. Se integreaza problema Cauchy formata din sistemul de ecuatii diferentiale(15.3) cu conditia initiala ın a si cu valoarea initiala determinata la pct. 1.

Exemplul 15.4 Sa se rezolve problema bilocala

(x3u′′)′′ = 1 x ∈ [1, 2]u(1) = u′′(1) = 0u(2) = u′′(2) = 0

Transformam ecuatia diferentiala de ordinul patru ıntr-un sistem de ecuatii diferentialede ordinul ıntai:

y0 = y1

Page 106: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

106 CAPITOLUL 15. INTEGRAREA NUMERICA A E.D.O.

y1 = y2

y2 = y3

y3 =1x3− 6

x2y2 −

1x

y3

Conditiile la limita deviny0(1) = 0y2(1) = 0

siy0(2) = 0y2(2) = 0

Astfel functia g : R4 → R2 este definita prin

g(y) = g(y0, y1, y2, y3) =(

y0

y2

).

Utilizarea functiei sbval

Formatul de utilizare este

u = sbval(v, a, b, D, load, score)

unde

• v este un vector cu aproximatiile initiale pentru yi(a), i ∈ K.

• a, b extremitatile intervalului de integrare;

• D numele functiei ce corespunde lui f(x, y)

• load(a, v) numele functiei ce fixeaza y(a), load : R× Rcard(v) → Rn.

• score(b, y) numele functiei corespunzatoare conditiilor ın b, score : R×Rn →Rn−m.

• u vector cu valorile obtinute pentru componentele yi(a), i ∈ K.

Rezolvarea problemei bilocale este

1. Determinarea conditiilor initiale. Definim

a := 1 b := 2 D(x, y) :=

y1

y2

y31x3 − 6

x2 · y2 − 6x · y3

Page 107: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

15.2. REZOLVAREA PROBLEMELOR BILOCALE 107

v :=(

11

)load(x1, v) :=

0v0

0v1

score(x2, y) :=(

y0

y2

)

u := sbval(v, a, b, D, load, score) u =(

0.017−0.5

)2. Integrarea problemei Cauchy.

y02 :=

0u0

0u1

N := 50 U := rkfixed(y0, a, b,N, D)

Graficul functiei u(x) = y0(x) este

2Indice literal: se tasteaza y.0

Page 108: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

108 CAPITOLUL 15. INTEGRAREA NUMERICA A E.D.O.

Page 109: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

Capitolul 16

Transformarea Fourier discreta

Cap. 15

Pentru calculul transformatei Fourier discrete MathCAD pune la dispozitie oserie de functii predefinite:

• fft definit prin

y = fft(x) yk =1√n

n−1∑j=0

xje2πin

jk

unde

y = (yk)0≤k≤1+2m−1 , x = (xj)0≤j≤n−1, xj ∈ R n = 2m, m > 2.

• FFT definit prin

y = FFT (x) yk =1n

n−1∑j=0

xje− 2πi

njk

unde

y = (yk)0≤k≤1+2m−1 , x = (xj)0≤j≤n−1, xj ∈ R n = 2m, m > 2.

• ifft definit prin

y = ifft(x) yk =1√n

2m−1∑j=0

xje− 2πi

njk

109

Page 110: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

110 CAPITOLUL 16. TRANSFORMAREA FOURIER DISCRETA

undey = (yk)0≤k≤2m−1, x = (xj)0≤j≤2m−1 , xj ∈ R m > 2.

• IFFT definit prin

y = IFFT (x) yk =2m−1∑j=0

xje2πin

jk

undey = (yk)0≤k≤2m−1, x = (xj)0≤j≤2m−1 , xj ∈ R, m > 2.

• cfft definit prin

y = cfft(x) yk =1√n

n−1∑j=0

xje2πin

jk

undey = (yk)0≤k≤n−1, x = (xj)0≤j≤n−1, xj ∈ C.

• CFFT definit prin

y = FFT (x) yk =1n

n−1∑j=0

xje− 2πi

njk

undey = (yk)0≤k≤n−1, x = (xj)0≤j≤n−1, xj ∈ C.

• icfft definit prin

y = ifft(x) yk =1√n

n−1∑j=0

xje− 2πi

njk

undey = (yk)0≤k≤n−1, x = (xj)0≤j≤n−1, xj ∈ C.

• ICFFT definit prin

y = ICFFT (x) yk =n−1∑j=0

xje2πin

jk

undey = (yk)0≤k≤n−1, x = (xj)0≤j≤n−1, xj ∈ C.

Page 111: Universitatea Transilvania din Bra¸sov E. SCHEIBER S ...read.pudn.com/downloads197/sourcecode/math/927014/labnum.pdf · experien¸ta de lucruˆın cel pu¸tin un limbaj de programare

111

Observatie 16.1 Expresiile√

n · icfft(x) si 1√n· cfft(x) corespund transformarile

Fourier discreta si inversa definite ın cursul de Analiza numerica.

Exemplul 16.1 Sa se calculeze coeficientii Fourier ai functiei f(x) = sin(x) +cos(3x).

Rezolvare: