Sunteți pe pagina 1din 8

Programare si limbaje II

Anul I, AR+ITT
1 Recapitulare
Curs 6 + Laborator 9 + Laborator 10 + Laborator 11 + Laborator 12
1.1 Comenzi
function
namelengthmax
version
iskeyword

1.2 Funcii
isvarname()

Curs 7. Funcii predefinite MATLAB. Calculul simbolic n MATLAB


7.1 Funcii matematice predefinite
7.1.1 Funcii trigonometrice
acos
acosd
acosh
acot
acotd
acoth
asin
asind
asinh
atan
atan2
atand
atanh
cos
cosd
cosh
cot
cotd
coth
hypot
sin
sind
sinh
tan
tand
tanh

Arc cosinus; rezultat n radiani


Arc cosinus; rezultat n grade
Arc cosinus hiperbolic
Arc cotangent; rezultat n radiani
Arc cotangent; rezultat n grade
Arc cotangent hiperbolic
Arc sinus; rezultat n radiani
Arc sinus; rezultat n grade
Arc sinus hiperbolic
Arc tangent; rezultat n radiani
Arc tangent 2 (cu reprezentare n 4 cadrane)
Arc tangent; rezultat n grade
Arc tangent hiperbolic
Cosinus cu argument n radiani
Cosinus cu argument n grade
Cosinus hiperbolic
Cotangent cu argument n radiani
Cotangent cu argument n grade
Cotangent hiperbolic
Rdcin ptrat din suma ptratelor
Sinus cu argument n radiani
Sinus cu argument n grade
Sinus hiperbolic cu argument n radiani
Tangent cu argument n radiani
Tangent cu argument n grade
Tangent hiperbolic.

7.1.2 Funcii exponeniale


exp
expm1
log
log10
log1p
nextpow2

Exponenial
Calculeaz exp(x)-1 cu precizie mare, pentru valori mici ale lui x
Logaritm natural
Logaritm n baza 10
Calculeaz log(1+x) cu precizie mare, pentru valori mici ale lui x
Urmtoarea putere mare a lui 2
1|Page

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II

nthroot
reallog
realsqrt
sqrt

Curs 7. Funcii predefinite n MATLAB. Calculul simbolic n MATLAB

Rdcin real de ordinul n din numere reale


Logaritm natural pentru tablouri de numere reale nenegative
Rdcin ptrat pentru tablouri de numere reale nenegative
Rdcin ptrat.

7.2 Calculul simbolic n MATLAB


Spre deosebire de calculul numeric, unde att datele de intrare, ct i rezultatele reprezint valori numerice, de
obicei numere reale, calculul simbolic opereaz cu obiecte simbolice, datele de intrare fiind date simbolice i,
uneori, numerice, iar datele de ieire expresii algebrice. Avantajul utilizrii calculului simbolic n ingineria
mecanic este acela c genereaz direct ecuaiile modelului matematic al mecanismului, dispozitivului sau
fenomenului studiat, sub form simbolic. Datele simbolice din aceste ecuaii pot fi prelucrate n continuare prin
substituie numeric, utiliznd valori concrete, caracteristice att structurii mecanice analizate, ct i a
parametrilor de funcionare a acestuia, realizndu-se simularea numeric a mecanismului sau dispozitivului, n
condiiile de funcionare impuse.
Dintre programele software care implementeaz calculul simbolic se pot enumera: Maple, Mathematica,
MATLAB, Derive.
Programele realizate n cadrul acestei lucrri conin calcule simbolice ncorporate n mediul numeric al MATLAB.
Aceste programe utilizeaz funcii i comenzi aparinnd modulului Symbolic Math Toolbox din MATLAB. Acest
modul suplimenteaz facilitile numerice i grafice ale mediului MATLAB, adugnd cteva tipuri diferite de
calcule matematice, printre care se menioneaz:
calcul diferenial, integral, limite, sume i serii Taylor;
algebr linear: inverse, determinani, valori proprii, valori singulare, descompunere i forme canonice ale
matricelor simbolice;
metode de simplificare a expresiilor algebrice;
soluii simbolice i numerice ale ecuaiilor algebrice i difereniale;
funcii speciale din matematica aplicat clasic;
evaluarea numeric a funciilor matematice cu orice precizie specificat.
Motorul de calcul care st la baza funciilor simbolice este nucleul sistemului MuPAD, cu care se poate
interaciona prin dou moduri:
1. Prin modulul Symbolic Math Toolbox, care este o colecie de peste 100 de funcii MATLAB care asigur accesul
la nucleul MuPAD, folosind o sintax i un stil specifice limbajului MATLAB.
2. Folosind interfaa grafic MuPAD, pentru realizarea calculelor n limbajul MuPAD.
7.2.1 Obiecte simbolice
Modulul Symbolic Math Toolbox definete un nou tip de dat MATLAB denumit obiect simbolic sau sym. Din
punct de vedere al reprezentrii interne, un obiect simbolic este o structur de date care memoreaz
reprezentarea sub form de ir de caractere a simbolului. Modulul Symbolic Math Toolbox utilizeaz obiecte
simbolice pentru a reprezenta variabile, expresii i matrice simbolice.
7.2.2.1 Funcia sym()
Funcia sym(), specific modulului Symbolic Math Toolbox, creeaz numere, variabile sau obiecte simbolice.
Sintaxa:
S
x
x
k
x
S

=
=
=
=
=
=

sym(A)
sym('x')
sym('x','real')
sym('k','positive')
sym('x','clear')
sym(A,flag)

Forma S = sym(A) construiete un obiect S aparinnd clasei sym, pornind de la valorile lui A. Dac argumentul
de intrare este un ir de caractere, rezultatul va fi o constant sau o variabil simbolic. Dac argumentul de
intrare este un scalar numeric sau o matrice numeric, rezultatul va fi o reprezentare simbolic a valorilor
numerice date.
2|Page

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II

Curs 7. Funcii predefinite n MATLAB. Calculul simbolic n MATLAB

Opiunea 'real' presupune c variabila simbolic este de tip real, adic partea imaginar este zero.
Opiunea 'positive' creeaz o variabil simbolic este de tip real i pozitiv.
Opiunea 'clear' construiete variabile simbolice pur formale, fr proprieti suplimentare. Din motive de
compatibilitate cu versiunile anterioare, opiunea 'unreal' are exact acelai efect.
Parametrul flag poate lua valorile: 'r', 'd', 'e', sau 'f' i convertete o constant scalar sau matriceal la
forma simbolic.
Parametrul flag
'r'
'd'
'e'
'f'

Reprezentare
Raional
Zecimal
Estimare de erori
Virgul flotant

Exemple:
>> pi_simbolic = sym('pi')
pi_simbolic =
pi
>> q1 = sym('q1', 'real')
q1 =
q1
>> xp = sym('xp', 'positive')
xp =
xp
>> sym(1+sqrt(3),'r')
ans =
6152031499462229*2^(-51)
>> sym(1/3,'d')
ans =
0.33333333333333331482961625624739
>> sym(pi/4,'e')
ans =
pi/4-99*eps/718
>> sym(2/5,'f')
ans =
(2^-2+2702159776422298*2^-54)

7.2.2.2 Comanda syms


Comanda syms, specific modulului Symbolic Math Toolbox, construiete liste de obiecte simbolice.
Sintaxa:
syms
syms
syms
syms

arg1
arg1
arg1
arg1

arg2
arg2
arg2
arg2

...
... real
... clear
... positive

Fiecare argument trebuie s nceap cu o liter i poate conine doar caractere alfanumerice.
Opiunile 'real', 'positive', 'clear' au exact acelai efect ca i n cazul funciei sym().
Exemple:
>> syms q1 q2 q3 real

7.2.3 Substituii simbolice. Funcia subs()


Funcia subs() realizeaz substituii simbolice n expresii sau matrice simbolice.
Sintaxa:
R = subs(S)
R = subs(S, new)
R = subs(S,old,new)

3|Page

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II

Curs 7. Funcii predefinite n MATLAB. Calculul simbolic n MATLAB

subs(S) nlocuiete toate apariiile variabilelor n expresia simbolic S cu valori obinute din funcia apelant

sau din workspace.


subs(S, new) substituie variabila simbolic din expresia S cu valoarea new.
subs(S, old, new) substituie variabila simbolic old din expresia S cu variabila sau expresia simbolic sau

numeric new.
Exemple:
>> syms q1 q2 q3 real
>> subs(q1 + q2, q1, pi)
ans =
pi + q2
>> subs(sin(q1) + cos(q2) + sin(q3), {q1, q2, q3}, {sym('alfa'), 2, pi})
ans =
cos(2) + sin(alfa)
>> subs(sin(q1) + cos(q2) + sin(q3), {q1, q2, q3}, {sym('alfa'), 2, pi/2})
ans =
cos(2) + sin(alfa) + 1

7.2.4 Exemplu rezolvat


Se consider un sistem de cinci fore coplanare Fi , i = 1, 5 , care acioneaz n planul xOy asupra unei plci
cuprinse n acelai plan. Punctele de aplicaie ale forelor sunt Ai ( xi , yi ) , i = 1, 5 , iar direciile sub care acestea
acioneaz, msurate n raport cu axa Ox, sunt i , i = 1, 5 . S se reduc sistemul de fore dat, n raport cu punctul
O. Pentru aceasta, s se determine vectorul rezultant i vectorul moment rezultant al sistemului de fore, att
simbolic, ct i numeric.
Relaiile de calcul sunt urmtoarele:
5

R = Fi ; Rx = Fi x ; R y = Fi y ; R z = 0
i =1

i =1

i =1

M o = ri Fi = xi

yi

0.

Fi y

5
i =1

i =1 F
ix

Script 1. Fiierul rsfc.m


% program reducere sistem de cinci vectori coplanari
% (c) 2012
%% declarare variabile simbolice
syms F1 F2 F3 F4 F5 alfa1 alfa2 alfa3 alfa4 alfa5
syms F1x F1y F2x F2y F3x F3y F4x F4y F5x F5y
syms x1 y1 x2 y2 x3 y3 x4 y4 x5 y5
%% calcul proiectii vectori
F1x = F1 * cos(alfa1);
F1y = F1 * sin(alfa1);
F2x = F2 * cos(alfa2);
F2y = F2 * sin(alfa2);
F3x = F3 * cos(alfa3);
F3y = F3 * sin(alfa3);
F4x = F4 * cos(alfa4);
F4y = F4 * sin(alfa4);
F5x = F5 * cos(alfa5);
F5y = F5 * sin(alfa5);
%% vector rezultant, simbolic
Rx = F1x + F2x + F3x + F4x + F5x;
Ry = F1y + F2y + F3y + F4y + F5y;
disp('Vectorul rezultant este:');
R = [Rx Ry sym(0)]
%% vector moment rezultant, simbolic
Mz = x1*F1y - y1*F1x + x2*F2y - y2*F2x + x3*F3y - y3*F3x + ...
x4*F4y - y4*F4x + x5*F5y - y5*F5x;
disp('Vectorul moment rezultant este:');
Mo = [sym(0) sym(0) Mz]

4|Page

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II

Curs 7. Funcii predefinite n MATLAB. Calculul simbolic n MATLAB

%% citire date numerice


F_n = zeros(1,5);
alfa_n = zeros(1,5);
x_n = zeros(1,5);
y_n = zeros(1,5);
disp('Introduceti fortele F in [N], unghiurile in [grade] si coordonatele in [m]:');
for i=1:5
F_n(i) = input(['F(',num2str(i),') = ']);
alfa_n(i) = pi/180*input(['alfa(',num2str(i),') = ']);
x_n(i) = input(['x(',num2str(i),') = ']);
y_n(i) = input(['y(',num2str(i),') = ']);
end
%% vector rezultant, numeric
R_n = subs(R, [F1 F2 F3 F4 F5], [F_n(1) F_n(2) F_n(3) F_n(4) F_n(5)]);
disp('Vectorul rezultant are valoarea numerica:');
R_n = subs(R_n, [alfa1 alfa2 alfa3 alfa4 alfa5],...
[alfa_n(1) alfa_n(2) alfa_n(3) alfa_n(4) alfa_n(5)])
%% vector moment rezultant, numeric
Mo_n = subs(Mo, [F1 F2 F3 F4 F5], [F_n(1) F_n(2) F_n(3) F_n(4) F_n(5)]);
Mo_n = subs(Mo_n, [alfa1 alfa2 alfa3 alfa4 alfa5],...
[alfa_n(1) alfa_n(2) alfa_n(3) alfa_n(4) alfa_n(5)]);
Mo_n = subs(Mo_n, [x1 x2 x3 x4 x5], [x_n(1) x_n(2) x_n(3) x_n(4) x_n(5)]);
disp('Vectorul moment rezultant are valoarea numerica:');
Mo_n = subs(Mo_n, [y1 y2 y3 y4 y5], [y_n(1) y_n(2) y_n(3) y_n(4) y_n(5)])

Un exemplu de rulare a script-ului poate fi urmtorul:


Vectorul rezultant este:
R =
[ F1*cos(alfa1) + F2*cos(alfa2) + F3*cos(alfa3) + F4*cos(alfa4) + F5*cos(alfa5),
F1*sin(alfa1) + F2*sin(alfa2) + F3*sin(alfa3) + F4*sin(alfa4) + F5*sin(alfa5), 0]
Vectorul moment rezultant este:
Mo =
[ 0, 0, F1*x1*sin(alfa1) - F2*y2*cos(alfa2) - F3*y3*cos(alfa3) - F4*y4*cos(alfa4) F5*y5*cos(alfa5) - F1*y1*cos(alfa1) + F2*x2*sin(alfa2) + F3*x3*sin(alfa3) +
F4*x4*sin(alfa4) + F5*x5*sin(alfa5)]
Introduceti fortele F in [N], unghiurile in [grade] si coordonatele in [m]:
F(1) = 10
alfa(1) = 30
x(1) = 2
y(1) = 3
F(2) = 15
alfa(2) = 90
x(2) = 0
y(2) = 6
F(3) = 20
alfa(3) = -45
x(3) = 1
y(3) = 0
F(4) = 5.25
alfa(4) = 180
x(4) = -5
y(4) = -5
F(5) = 12.5
alfa(5) = -30
x(5) = -3
y(5) = 7
Vectorul rezultant are valoarea numerica:
R_n =
28.3777
-0.3921
0
Vectorul moment rezultant are valoarea numerica:
Mo_n =
0
0 -113.4001

5|Page

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II

Curs 7. Funcii predefinite n MATLAB. Calculul simbolic n MATLAB

Recapitulare final a elementelor de limbaj MATLAB


1.1 Operatori
Operatori aritmetici
Operatori relaionali
Operatori logici
Operatori pe bii
Operatori pe mulimi
1.2 Comenzi
break
case
continue
demo
diary
doc
echo
edit
edit
else
elseif
end
for
format
function
help
if
iskeyword
keyboard
load
more
namelengthmax
open
open
otherwise
return
save
switch
syms
type
type
version
while
whos

1.3 Variabile
ans

1.4 Constante
eps
false
i
Inf
j
NaN
pi
true

1.5 Funcii
6|Page

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II

Curs 7. Funcii predefinite n MATLAB. Calculul simbolic n MATLAB

acos()
acosd()
acosh()
acot()
acotd()
acoth()
asin()
asind()
asinh()
atan()
atan2()
atand()
atanh()
cellplot()
char()
cos()
cosd()
cosh()
cot()
cotd()
coth()
cumprod()
cumsum()
det()
diag()
disp()
disp()
display()
display()
double()
exp()
expm1()
eye()
factorial()
find()
full()
functions()
geomean()
hypot()
input()
input()
int16()
int32()
int64()
int8()
intmax()
intmin()
inv()
ischar()
isfinite()
isinf()
isnan()
isprime()
isprime()
isscalar()
issparse()
isvarname()
length()
log()
log10()
log1p()
logical()
magic()
max()
mean()
mean()
min()
nextpow2()
nnz()

7|Page

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II

Curs 7. Funcii predefinite n MATLAB. Calculul simbolic n MATLAB

nonzeros()
nthroot()
num2str()
ones()
plot()
prod()
rand()
randn()
reallog()
realmax()
realmin()
realmin()
realsqrt()
repmat()
round()
sin()
sind()
single()
sinh()
size()
sort()
sparse()
speye()
spones()
sprintf()
sprintf()
spy()
sqrt()
sscanf()
sscanf()
str2num()
struct()
subs(S)
sum()
sym()
tan()
tand()
tanh()
title()
tril()
triu()
uint16()
uint32()
uint64()
uint8()
xlabel()
ylabel()
zeros()

1.6 Caractere speciale


.
Punct zecimal
.
Operaii cu tablouri
( ) Parantezele rotunde
[ ] Parantezele ptrate
,
Virgula
;
Punct virgul
:
Dou puncte
@numefunctie
{ } Acolade
%
Comentariu
%% Celule de cod

8|Page

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