Sunteți pe pagina 1din 8

1 | P a g e

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 Arc cosinus; rezultat n radiani
acosd Arc cosinus; rezultat n grade
acosh Arc cosinus hiperbolic
acot Arc cotangent; rezultat n radiani
acotd Arc cotangent; rezultat n grade
acoth Arc cotangent hiperbolic
asin Arc sinus; rezultat n radiani
asind Arc sinus; rezultat n grade
asinh Arc sinus hiperbolic
atan Arc tangent; rezultat n radiani
atan2 Arc tangent 2 (cu reprezentare n 4 cadrane)
atand Arc tangent; rezultat n grade
atanh Arc tangent hiperbolic
cos Cosinus cu argument n radiani
cosd Cosinus cu argument n grade
cosh Cosinus hiperbolic
cot Cotangent cu argument n radiani
cotd Cotangent cu argument n grade
coth Cotangent hiperbolic
hypot Rdcin ptrat din suma ptratelor
sin Sinus cu argument n radiani
sind Sinus cu argument n grade
sinh Sinus hiperbolic cu argument n radiani
tan Tangent cu argument n radiani
tand Tangent cu argument n grade
tanh Tangent hiperbolic.

7.1.2 Funcii exponeniale

exp Exponenial
expm1 Calculeaz exp(x)-1 cu precizie mare, pentru valori mici ale lui x
log Logaritm natural
log10 Logaritm n baza 10
log1p Calculeaz log(1+x) cu precizie mare, pentru valori mici ale lui x
nextpow2 Urmtoarea putere mare a lui 2
Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 7. Funcii predefinite n MATLAB. Calculul simbolic n MATLAB
2 | P a g e
nthroot Rdcin real de ordinul n din numere reale
reallog Logaritm natural pentru tablouri de numere reale nenegative
realsqrt Rdcin ptrat pentru tablouri de numere reale nenegative
sqrt 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 = sym(A)
x = sym('x')
x = sym('x','real')
k = sym('k','positive')
x = sym('x','clear')
S = 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.
Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 7. Funcii predefinite n MATLAB. Calculul simbolic n MATLAB
3 | P a g e

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 Reprezentare
'r'
Raional
'd'
Zecimal
'e'
Estimare de erori
'f'
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 arg1 arg2 ...
syms arg1 arg2 ... real
syms arg1 arg2 ... clear
syms arg1 arg2 ... 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)
Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 7. Funcii predefinite n MATLAB. Calculul simbolic n MATLAB
4 | P a g e

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 5 , 1 , = i F
i
, care acioneaz n planul xOy asupra unei plci
cuprinse n acelai plan. Punctele de aplicaie ale forelor sunt 5 , 1 , ) , ( = i y x A
i i i
, iar direciile sub care acestea
acioneaz, msurate n raport cu axa Ox, sunt 5 , 1 , = i
i
. 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:
0 ; ; ;
5
1
5
1
5
1
= = = =

= = =
z
i
i y
i
i x
i
i
R F R F R F R
y x

.
0
0
5
1
5
1

= =
= =
i
i i
i i
i
i i o
y x
F F
y x
k j i
F r M

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]
Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 7. Funcii predefinite n MATLAB. Calculul simbolic n MATLAB
5 | P a g e
%% 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

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 7. Funcii predefinite n MATLAB. Calculul simbolic n MATLAB
6 | P a g e

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

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 7. Funcii predefinite n MATLAB. Calculul simbolic n MATLAB
7 | P a g e
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()
Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 7. Funcii predefinite n MATLAB. Calculul simbolic n MATLAB
8 | P a g e
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

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