Você está na página 1de 29

INTRODUO AO MATLAB

30 e 31 de Maio de 2006.

FEIS-UNESP
Profa. Dra. Erica Regina Marani Daruichi Machado Guilherme Borges Moreira

1.INTRODUO
O MATALB um ambiente computacional e tambm uma linguagem de programao, sendo um software amplamente difundido na rea acadmica. Estudantes de vrias universidades do mundo tm utilizado o MATLAB para obter respostas aos seus problemas e principalmente para entender como obt-las. Devido diversidade de aplicaes cientficas, de engenharia, computao numrica, de anlise e visualizao de dados e outras, o MATLAB se tornou o ambiente de computao tcnicas de grande versatilidade. Exemplos de aplicao do MATLAB: Estudante de fsica analisando e visualizando dados de seus experimentos com campos magnticos; Controle de sistemas; Processo de codificao e compresso para TV digital; Modelagem de sistemas; Transformadas; Operaes elementares; Estatstica; Redes Neurais; Lgica Fuzzy... O ambiente MATLAB permite que o usurio utilize suas funes sem a necessidade de uma programao elaborada. Entretanto, como linguagem de programao permite a construo de ferramentas e funes pelo usurio (so os arquivos *.M). As TOOLBOXES so colees de funes teis relacionadas a um assunto. Essas TOOLBOXOES so elaboradas por pesquisadores de todo o mundo, em vrios campos tais como controle, processamento de sinais, identificao de sistemas,... Neste mini-curso sero apresentados alguns exemplos de TOOLBOXES. O objetivo do curso introduzir usurio no ambiente Matlab e apresentar suas ferramentas bsicas. Uma vez conhecido o ambiente, o usurio pode procurar os recursos necessrios dentro do prprio Matlab, atravs dos menus Help. Ser apresentado o ambiente do Simulink e ilustradas algumas simulaes de instrues bsicas. Por sua simplicidade e clareza, os tpicos, texto e exemplos deste curso foram extrados do livro MATLAB Verso Estudante 5.3, Guia do Usurio. Este livro contm instrues bsicas do software, que o objeto deste curso.

2.OPERAES BSICAS - MATEMTICA ELEMENTAR


Operao Smbolo Exemplo

Adio, Subtrao Multiplicao Diviso Potenciao

a+b a-b a*b a b ab

+ * / ou \ ^

5+3 23-12 3.14*0.85 56/8=8\56 5^2

2*3+(5*48)-(4*23) ans = 154 56\8 ans = 0.1429

8/56 ans = 0.1429

3.VARIVEIS
3.1.DECLARAO DE VARIVEIS Assim como qualquer outra linguagem de programao, o MATLAB tem regras a respeito dos nomes das variveis. os nomes das variveis N=1; os nomes das variveis devem comear A12345=10 devem ser palavras nicas, N1=1; com uma letra, seguida de um nmero Rua_2=12 sem incluso de espaos; N_a=1 qualquer de letras, algarismos ou 123_rua sublinhas. as variveis so sensveis a A=3; caracteres de pontuao no so A!=3 maisculas e minsculas; a=5 ; permitidos. A1&3=2 B=A+a podem conter at 19 abcdefg caracteres j=1 se uma instruo for muito N=1+x 2 longa, coloque (...) ... +2*x+3 seguidas de <ENTER>. 3.2.VARIVEIS ESPECIAIS O MATLAB tem diversas variveis especiais Ans Nome de uma varivel padro usada para NAN No-nmero resultados E: 0/0 Pi iej Razo entre o permetro da circunferncia e i = j = 1 seu dimetro eps Menor nmero que, somado a 1, cria um Realmin Menor nmero real nmero de ponto flutuante maior que 1 no utilizvel computador. Inf Realmax Maior Infinito, 1/0. nmero real utilizvel 3.3.REDEFINIO DE VARIVEIS
3.3.1. O COMANDO DE ATRIBUIO AUTODESTRUTIVO.

no necessrio declarar a varivel

A=3.32+i

positivo

positivo

Ao inserir um novo valor na varivel o valor antigo destrudo. O MATLAB faz os clculos utilizando os valores conhecidos no momento em que o clculo foi solicitado
a=3.21+i a =3.2100 + 1.0000i b=2 b=2 3.3.2. EXCLUSO MANUAL a=3 a=3 c=a+b c =5

As variveis do espao de trabalho do MATLAB podem ser excludas incondicionalmente usando-se o comando clear.
a=3.21+i a = 3.2100 + 1.0000i b=2 b= 2 clear a c=a+b ??? Undefined function or variable 'a'.

3.3.3. LISTA DE VARIVEIS

Para listar todas as variveis utilizadas na rea de trabalho digite o comando who.

who Your variables are: b

4.AJUDA ON-LINE
4.1.HELP

Utilizado no caso em que no se sabe o nome do tpico a respeito do qual se necessita de informaes. Digite help e a tela descrever categorias sobre as quais voc pode obter ajuda.
4.2.HELP < TPICO>

Utilizado no caso em que se sabe o nome o tpico a respeito do qual se necessita de informaes
help sqrt SQRT Square root. SQRT(X) is the square root of the elements of X. Complex results are produced if X is not positive See also SQRTM. Overloaded methods help sym/sqrt.m

4.3. COMANDO LOOKFOR


Utilizado quando no tiver certeza da existncia e da grafia exata de um tpico. Este comando fornece ajuda fazendo uma busca em toda primeira linha dos tpicos de ajuda e retornando aqueles que contm a palavra-chave que voc especificou. A palavra chave no precisa ser um comando MATLAB.
lookfor complex CONJ Complex conjugate. CPLXPAIR Sort numbers into complex conjugate pairs IMAG Complex imaginary part. REAL Complex real part. CDF2RDF Complex diagonal form to real block diagonal form. RSF2CSF Real block diagonal form to complex diagonal form.

4.4.HELP DA BARRA DE MENU

Na barra de menus do MATLAB selecione o menu Help e verifique as opes.

5.CARACTERSTICAS CIENTFICAS
O MATLAB oferece diversas funes importantes nas cincias em geral. A tabela a seguir apresenta uma lista parcial de funes bsicas suportadas por MATLAB.
abs(x) acosh(x) asin(x) atan(x) ceil(x) cos(x) exp(x) floor(x) log10 real(x) rem(x,y) sing(x) sinh(x) tan(x) valor absoluto ou mdulo de um no arco cosseno hiperblico arco seno arco tangente arredondar para mais infinito cosseno exponencial arredondar para menos infinito logaritmo na base 10 parte real de um no complexo resto da diviso de x por y retorna o sinal do argumento seno hiperblico Tangente acos(x) angle(x) asinh(x) atan2(x,y) conj(x) cosh(x) fix(x) imag(x) log(x) sqrt(x) round(x) sin(x) tanh(x) arco cosseno ngulo de um no complexo arco seno hiperblico arco tangente em quatro quadrantes conjugado complexo cosseno hiperblico arredondar par zero parte imaginria de um no complexo logaritmo natural raiz quadrada arredondar para o prximo no inteiro seno tangente hiperblica

5.1.HELP DAS FUNES

Para conhecer saber mais sobre as funes consulte o menu Help elfun.

6.MANIPULAO DE DADOS
6.1.FORMATOS E VISUALIZAO DE DADOS FORMATOS NUMRICOS O Matlab no altera a 34.5667 Apresentao padro format short representao interna de um 34.56666666666666 16 dgitos format long nmero quando optamos por 5 dgitos mais expoente format short e 3.4567e+001 format long e 3.456666666666666e+001 16 dgitos mais expoente diferentes formatos, somente a visualizao alterada. 4041488888888888 hexadecimal format hex
format bank format rat 34.57 1037/30 duas casas decimais aproximao racional

6.2.OUTRAS CARACTERSTICAS BSICAS

A vrgula indica ao MATLAB para mostrar o resultado; o ponto-e-vrgula suprime a visualizao; A execuo do MATLAB pode ser interrompida a qualquer momento pressionando CTRL-C; O comando quit termina a execuo do MATLAB; Todo texto depois do sinal de porcentagem (%) considerado um comentrio; Pode-se colocar mais de um comando em uma linha, separando-os por vrgula ou ponto-e-vrgula. O comando clc apaga os dados da tela, mas no a memria (clear).
6.3.ENTRADA DE DADOS INPUT

A funo input permite a entrada de dados via teclado. Aps esta instruo o MATLAB interrompe a execuo do programa e espera que o usurio digite algum valor, que pode ser numrico ou literal (este valor deve ser inserido entre plicas ) .
a=input(' ') 'curso' a =curso a=input(' ') 15 a =15

6.4.APRESENTAO DE TEXTOS - DISP

Para apresentar textos na tela utiliza-se o comando disp.

disp('Curso de MATLAB') Curso de MATLAB

6.5.ARMAZENAMENTO DE DADOS - SAVE X LOAD

Este comando salva todas as variveis em um arquivo em disco chamado matlab.mat. Para recuperar as variveis em uma outra seo do MATLAB, pode-se executar o comando load para restaurar o espao de trabalho com as variveis de matlab.mat. Podem ser utilizados os comandos save e load em arquivos com outros nomes, ou salvar somente algumas variveis.
save dados a b clear load dados

Resultado semelhante pode ser obtido utilizando o item de menu Save Workspace as ... e Load Workspace ...do menu FILE.

7. GERENCIAMENTO DE ARQUIVOS
O MATLAB apresenta diversos comandos de gerenciamento de arquivos que lhe permitem listar nomes de arquivos, visualizar e excluir arquivos M, mostrar e mudar o diretrio atual ou fichrio.
what dir, ls type nome delete nome cd, chdir caminho cd, pwd which nome

Retorna uma listagem de todos os arquivos M do diretrio Lista todos os arquivos do diretrio Mostra o arquivo M nome.m na janela de comandos Exclui o arquivo M nome.m Muda para o diretrio dado por caminho Mostra o diretrio de trabalho atual Mostra o caminho para o para o diretrio nome

8.VETORES E MATRIZES
Para criar um vetor ou uma matriz no MATLAB, coloca-se um colchete esquerdo, introduzem-se os valores desejados separados por espaos ou por vrgulas e em seguida fecha-se o colchete direito. Separando os elementos por espaos ou vrgulas especificam-se elementos de colunas diferentes; separando os elementos com pontos-e-vrgulas especificam-se elementos de linhas diferentes.

8.1.VETORES
8.1.1. VETOR LINHA X VETOR COLUNA

Vetor linha
x=[3 2 1 5 6] x=3 2 1 5 6 7 x=[3,2,1,5,6] x=3 2 1 5 6

Vetor coluna
x=[3 2 1]' x =3 2 1 x=[3; 2; 1] x =3 2 1

8.1.2. ESPECIFICAO DE VETOR POR DOIS PONTOS

Sintaxe: (x0:inc:xf) cria um vetor que y=0:0.1:0.5 comea em x0, incrementa de inc e termina em y = 0 0.1000 0.2000 0.3000 0.4000 0 .5000 xf.

Os valores podem ser assumidos em forma decrescente. Quando o incremento inc no especificado explicitamente, ele assume o valor 1.

y=-3:1:1 % ou y=-3:1 y = -3 -2 -1 0 1 y=1:5 y= 1

8.1.3. LEITURA DE VETOR x=input('') [1 2 3 4 5 6] x= 1 2 8.1.4. ENDEREAMENTO % Leitura de um vetor via teclado 3 4 5 6

No Matlab, elementos de conjunto individuais so acessados usando-se subscritos, ou seja, x(1) o primeiro elemento de x, x(2) o segundo elemento de x e assim por diante. No exemplo 8.1.2:
y(3) ans = -1 y(4) ans = 0 y(2:4) ans = -2 -1 0 y(2:2:5) ans = -2 0 y([5 2 4 1]) ans = 1 -2 0

-3

8.1.5. OPERAES COM VETORES

Quando se trata de operaes com vetores na multiplicao, diviso e potenciao introduzem um ponto antes do smbolo da operao. Isto indica ao MATLAB que as operaes se tratam de vetores e no de matrizes.
x=(0:0.1:0.5)*pi % multiplica cada elemento por pi x = 0 0.3142 0.6283 0.9425 1.2566 1.5708 a=-1:2; b=1:3; c=[a b] c = -1 0 1 a=-4:-1, b=1:4 a = -4 -3 -2 b= 1 2 3 -1 4

e=a.*b %multiplicao elemento por elemento e = -4 -6 -6 -4 2 1 2 3 f=a./b f = -4.0000 -1.5000 -0.6667 -0.2500 5 x=input('') %entrada de vetores via teclado [1 2 3 4 5 6] x= 1 2 3 4 5 6

d=[a(1:2:4) 5 5 5] d = -1 1 5 5 a-2 ans = -3 5*a-3 ans = -8

-2

-1

-3

8.1.6. COMANDO LINSPACE

Sintaxe: linspace (primeiro_valor, ltimo_valor, nmero_de_ valores). Este comando cria um conjunto de valores (vetor) onde possvel determinar o nmero de pontos, mas no o incremento.
x=linspace(0,pi,12)
x = Columns 1 through 7 0 0.2856 0.5712 0.8568 1.1424 1.4280 1.7136 Columns 8 through 12 1.9992 2.2848 2.5704 2.8560 3.1416

8.1.7. COMANDO LOGSPACE

Sintaxe: logspace(primeiro_expoente, ltimo_expoente, nmero_de_ elementos) Este comando cria um conjunto de valores (vetor) com espaamento logartmico. x=logspace(0,2,11)
x = Columns 1 through 7 1.0000 1.5849 2.5119 3.9811 Columns 8 through 1 6.3096 10.0000 15.8489 25.1189 39.8107 63.0957 100.0000

O conjunto comea em 100, termina em 102 e contm 11 elementos. 8.2.MATRIZES


8.2.1. INTRODUO DE UMA MATRIZ

Pode-se entrar com matrizes no MATLAB de diversas maneiras: Entrar com uma lista explcita de elementos. Gerar matrizes utilizando funes e linhas de comando do MATLAB. Criar matrizes em arquivos-M. Chamar matrizes de um arquivo de dados externo. A maneira mais fcil de declarar matrizes fazendo a explicitao da lista de elementos na linha de comando, seguindo as convenes abaixo: Separar os elementos da lista de elementos atravs de espaos ou vrgulas. Colocar os elementos entre colchetes, [ ]. Usar (;) ponto-e-vrgula para indicar o fim de uma linha. Por exemplo, entrando com a linha de comando.
A=[1 2 3;4 5 6;7 8 0] A= 1 2 3 4 5 6 7 8 0 B=[100;213;521] B = 100 213 521

8.2.2. OPERAES COM MATRIZES % Calculo de determinante A=[1 2 3;4 5 6;7 8 0] m=det(A) m = 27 % Calculo da inversa x=inv(A)
x = -1.7778 0.8889 -0.1111 1.5556 -0.7778 0.2222 -0.1111 0.2222 -0.1111

%Diviso de matrizes x=(A\B) % inv(A)*B x =-46.3333 105.6667 -21.6667


%Utiliza a Tcnica de fatorao LU e representa a resposta como a diviso esquerda de A por B. O Operador no tem o ponto precedente porque se trata de diviso matricial e no operao de elementos. mais rpida porque realiza menos clculos internos. %No caso de sistemas lineares, se houver mais equaes do que incgnitas, isto , em um caso superdeterminado, o uso do operador \ automaticamente encontra a soluo que minimiza o erro quadrado de (Axb=0) (soluo dos mnimos quadrados)

% Caso subdeterminado x=(pinv(A)*B)'


x = -46.3333 105.6667 -21.6667

%Multiplicao de Matrizes Y=A*B Y = 2089 4591 2404

%Obtm-se a soluo na qual o comprimento euclidiano ou norma de x menor do que em qualquer outra soluo possvel. %A soluo baseada no pseudo-inverso (soluo de norma mnima). Alternativamente ou operador de diviso calcula a soluo que tem zero para alguns elementos de x.

8.2.3. MANIPULAO MATRICIAL A(3,2)=0 A= 1 2 3 4 5 6 7 0 9 A(2,5)=1 A= 1 2 3 4 5 6 7 0 9 % altera o elemento da linha 3 % e coluna 2 de 8 para 0 A=[1 2 3;4 5 6;7 8 9]; B=A(3:-1:1,1:3) % ou B=A(3:-1:1,:) B= 7 8 9 % cria uma matriz B 4 5 6 % colocando as linhas da 1 2 3 % matriz A em ordem inversa C=[A B(:,[1 3])] C= 1 2 3 7 4 5 6 4 7 8 9 1 %matriz A e todas as % linhas da matriz B 9 %das colunas 1 e 3 6 3

0 0 0

% coloca 1 na segunda linha % e na quinta coluna.Como 0 % a matriz A no tem cinco 1 % colunas, o tamanho de A 0 % aumentado conforme % necessrio e A % preenchida com zeros.

8.2.4. MATRIZES ESPECIAIS % matriz nula x=zeros(3) x=0 0 0 0 0 0 0 0 0 % matriz unitria %2 linhas,4 colunas x=ones(2,4) x =1 1 1 1 1 1 1 1
%matriz de elementos iguais

%matriz de elementos iguais x=ones(3)*pi x =3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 % matriz de no aleatrios x=rand(3,1) x =0.9501 0.2311 0.6068 % comprimento da matriz A=-200:pi:100 size(A) ans = 1 96 % matriz com 1 linha e 96 colunas length(A) ans = 96 0 1 0
% retorna o comprimento do vetor

A=[1 2 3 4; 5 6 7 8]; size(A) ans = 2 4 % 2 linhas e 4 colunas length(A)


ans = 4 % retorna o no de linhas % ou o no de colunas, % o que for maior.

%encontrar elementos especficos % acha os subscritos (posio) onde a expresso relacional verdadeira

x=ones(3)*pi x =3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 % matriz identidade x=eye(3) x=eye(3,2) x =1 0 0 x= 1 0 1 0 0 0 0 1 0

x=(-3:3) x = -3 -2

-1

k=find(abs(x)>1) k= 1 2 6 7 A=[1 2 3;4 5 6;7 8 9]; [i,j]=find(A<5) i =1 j= 1 2 1 1 2 1 3

8.3.HELP DE MATRIZES E VETORES

Para conhecer mais funes sobre matrizes consulte o Help matfun (funes com matrizes), Help elmat (matrizes elementares), Help sparfun.

9.GRFICOS
9.1.FUNO PLOT

Os grficos constituem um recurso visual poderoso para interpretao de dados. Para iniciar a construo, determina-se inicialmente a varivel independente que ir compor o eixo horizontal do grfico. Depois disso determina-se a varivel que ir compor o eixo vertical. 9

Como exemplo inicial, ser ilustrado a funo seno no intervalo [0,2] com 30 pontos.
x=linspace(0,2*pi,30); y=sin(x); plot(x,y)

Caractersticas da funo plot: escolhe automaticamente os limites dos eixos, marcar os entre eles. plota mltiplos conjuntos de dados nos mesmos eixos; marca somente os pontos de dados sem interliga-los; coloca nomes nos eixos e ttulos;
z=cos(x) % duas curvas nos mesmos eixos plot(x,y,'r-o',x,z,'b-+')
% seno (vermelho, o) , cosseno (azul,+) % nomeia o eixo horizontal

pontos individuais e desenha linhas retas utiliza diferentes tipos de linhas; linhas de grade; usa cores distintas para diferentes curvas

xlabel('x (rad)')
% nomeia o eixo vertical

ylabel('Ilustrao do comando plot')


% coloca um ttulo

title('Funes seno(x) e cosseno(x)')


% linhas de grade

grid % limite dos eixos % define os valores mximo e mnimo dos eixos usando um vetor linha axis([0 6.5 -1 1])
% inserir textos no grfico

text(2.8,0.53,'sen(x)') % inserir textos no grfico a partir da Os textos seno, cos podem ser introduzidos
posio do cursor (d um clique na posio desejada)

gtext('cos(x)')

diretamente na figura, espessura das linhas.

assim

como

9.1.1. ESTILOS DE LINHA, MARCADORES E CORES

Smbolo y m c r g b w k

Cor amarelo magenta ciano vermelho verde azul branco preta

Smbolo . o x + * : -. --

Tipo de linha ponto crculo x-marca mais asterisco linha contnua linha pontilhada traos e pontos linha tracejada 10

9.2.EIXOS
axis([xmin xmax ymin ymax]) define os valores mximo e mnimo dos eixos axis auto retorna o escalamento de eixos para o modo automtico padro: xmion=min(x), xmax=max(x) axis(axis) congela a escala nos seus limites atuais axis square (square) faz com que o grfico seja quadrado e no retangular axis on (on) liga nomes de eixos, marcadores e grade axis off (off) desliga todos os nomes de eixos, grades e marcadores define os fatores de escalamento para ambos os eixos com sendo iguais axis equal (equal)

9.3.FIGURE

Se voc desejar dois ou mais grficos em diferentes janelas, use o comando figure ou a seleo New figure do menu File, na janela de comandos. O comando figure sem argumentos cria uma nova janela. O comando figure(n) abre uma janela especfica de nmero n. 9.4.COMANDO HOLD ON Permite que seja adicionada mais de uma curva no mesmo grfico. Quando o hold on acionado, o MATLAB no remove as curvas j existentes quando novos comandos plot so emitidos. Em vez disso, ele acrescenta novas curvas nos eixos j existentes. Contudo, se os novos valores no se ajustarem aos limites de eixos em vigor, os eixos podem ser reescalados. Fazendo hold off, libera-se a janela atual para novos grficos. O comando hold sem argumentos comuta a funo entre liga e desliga.
9.5.O COMANDO SUBPLOT
O comando subplot(m,n,p), divide a janela atual em uma matriz m por n de reas grficas e faz com que a p-sima rea fique ativa. Os subgrficos so numerados da esquerda para a direita, ao longo da linha superior, da para a segunda linha. y=sin(x); z=cos(x); w=[y;z], a=2*sin(x).*cos(x), b=sin(x)./(cos(x)+eps) subplot(2,2,1) plot(y,z),title('Seno x cosseno' ) subplot(2,2,2) plot(x,y,x,2*y.*z, '--'), title('2Seno(x)cosseno(x)=sen(2x)' ) subplot(2,2,3) plot3(y,z,x),grid title('Grfico Tridimensional'), xlabel('sin(x)'), ylabel('cos(x)'),zlabel('x') subplot(2,2,4) plot(x,b), axis([0 2*pi -20 20]), title('sen(x)/cos(x)')

11

9.6.OUTRAS CARACTERSTICAS
loglog semilog semilogy polar(t,r,s) bar(x,y) stairs(x,y) hist(y,n) hist(y,x) hist(y) rose(t) stem(y) stem(x,y) [x,y]=ginput(n) fplot(fun,[xmi m max])
Mesmo que o plot mas as duas escalas so logartmicas Escala logartmica para o eixo x e linear para y Escala logartmica para o eixo y e linear para x Coordenadas polares,t vetor ngulo em radianos, r o vetor raio, s descreve cor, marcadores Grfico de barras Grfico escada Desenha um histograma com n divises do vetor y. Desenha um histograma usando as divises especificadas no vetor x. Faz um histograma de dez divises para os dados do vetor y Desenha um histograma polar com 20 divises para os ngulos do vetor t. (t,n), (t,x) Cria um grfico dos pontos de dados de y conectado ao eixo horizontal por uma linha Cria um grfico de pontos de dados de y nos valores especificados em x. Seleciona n pontos de um grfico em uso por meio do mouse e retorna suas coordenadas nos vetores de coluna x e y. Se n omitido, pode-se obter um no infinito de pontos at teclar <enter> Cria um grfico da funo fun sobre o intervalo xminxxmax com escalamento automtico do eixo y. Fplot(fun,[xmim max]) especifica tambm y. H restries de funes. Consulte o Help.

% polares t=0:0.01:2*pi, r=sin(2*t).*cos(2*t); subplot(3,2,1); polar(t,r), title ('Grfico polar'); % grfico de barras x=-2.9:0.2:2.9; y=exp(-x.*x); subplot(3,2,2); bar(x,y,'w'); title('Grfico de barras') ylabel('Curva normal'); % grfico escada subplot(3,2,3); stairs(x,y), title('Grfico em escadas') ylabel('Curva normal'); % histograma subplot(3,2,4); y=randn(5000,1); hist(y,x); title('Histograma de dados Gaussianos');
Figura 2 subplot(3,2,5);

% hastes

y=randn(50,1); stem(y,':'); title('Grfico de haste'), ylabel('Dados Aleatrios') %funo subplot(3,2,6); fplot('sin(x)./x',[-20 20 -.4 1.2]) title('Fplot de sen(x)/x) ') xlabel('x'),ylabel('f(x)')

x=linspace(-3,2*pi,330) y=sin(x).^2./(x+eps); plot(x,y), title('Grfico de sen(x)^2/x') [a,b]=ginput(4); hold on plot(a,b,'bo') hold off

12

9.7.GRFICOS TRIDIMENSIONAIS Formato generalizado: plot3(x1,y1,z1,S1,x2,y2,z2,S2,...), onde xn, yn e zn so vetores ou matrizes e sn especifica as cores, smbolos marcadores e/ou estilos de linhas). t=0:pi/50:10*pi plot3(sin(t),cos(t),t) title('Helice'),xlabel('sen(t)') ylabel('cos(t'),zlabel('t')

9.8.GRFICOS DE REDES E SUPERFCIE

O Matlab define uma superfcie de rede por meio das coordenadas z de pontos acima de uma grade retangular no plano xy. Ele forma um grfico unindo pontos adjacentes com linhas retas. O resultado se parece com uma rede de pesca com ns nos pontos de dados. Estes grficos so muito teis na visualizao de grandes matrizes ou para a representao grfica de funes de duas variveis.
9.8.1. FUNO MESHGRID

O primeiro passo para gerar um grfico de rede de uma funo de duas variveis gerar matrizes X e Y que consistam em linhas e colunas repetidas, respectivamente, sobre um intervalo das variveis x e y. Isto pode ser feito pela funo meshgrid. [X,Y] = meshgrid(x,y) cria uma matriz x, cujas linhas so cpias do vetor x, e uma matriz Y, cujas colunas so cpias do vetor y. Esse par de matrizes pode ento ser usado para calcular funes de duas variveis usando os recursos convencionais.
x=-7.5:.5:7.5; y=x; [X,Y]=meshgrid(x,y); R=sqrt(X.^2+Y.^2)+eps; Z=sin(R)./R mesh(X,Y,Z) surf(X,Y,Z)

9.8.2. FUNO SURF

Um grfico de superfcie da mesma matriz Z (usado na funo mesh) se parece com o grfico em rede, exceto pelo fato de que os espaos entre as linhas so preenchidos.
9.8.3. FUNO PEAKS

Esta funo (peaks.m) gera uma matriz quadrada de dados. Os dados so baseados em uma funo de duas variveis e contm pontos de dados para x e y, no intervalo 3 a 3.
f ( x , y) = 2(1 x ) 2 e ( y+1)
2 x 2

10

x 5

x 3 y 5 e x

2 y2

2 1 e ( y+1) y 2 3

13

Voc pode especificar o tamanho da matriz quadrada de dados gerada por peaks passandolhe argumentos. Se omitir os argumentos, seu padro ser 31.
M=peaks(20) plot(M) title('Grfico de Peaks') mesh(M)

9.8.4. GRFICOS DE CONTORNO

Mostram linhas de elevao ou altura constante (um exemplo o mapa topogrfico). Os grficos de contorno bi e tridimensionais so gerados usando-se as funes contour e controur3, respectivamente.

[x,y,z]=peaks; contour(x,y,z,20); contour3(x,y,z,20);

Outra forma de visualizar informaes sobre contorno usar cores para representar alturas. A funo pcolor mapeia em um conjunto de cores e apresenta a mesma informao do grfico de contorno, na mesma escala. Exemplo: digite z=peaks e em seguida pcolor(z). Uma vez que pcolor e contour mostram a mesma informao na mesma escala, sempre til superpor os dois.
[x,y,z]=peaks; colormap(hot) pcolor(x,y,z) shading flat hold on contour(x,y,z,20,'k'); hold off

9.9.HELP DE GRFICOS

Para conhecer mais funes sobre grficos consulte Help graphics, Help graph2d, Help graph3d, Help specgraph.

14

10.ANLISE DE DADOS
A anlise de dados no Matlab feita em matrizes orientadas por colunas. As diversas variveis so armazenadas em colunas individuais e cada linha representa uma observao diferente de cada varivel. Nesta anlise podem ser verificados os valores crticos do conjunto, como o valor mximo, o mnimo, o valor mdio, a covarincia, a correlao...
a=20:-1:0 b=linspace(-1,9,length(a)); c=linspace(10,100,length(a)); x=[a',b',c'] % mdia de cada coluna media=mean(x) %media das trs colunas m_media=mean(media) m_media = 23 maximo=max(x) % valor mximo de cada coluna maximo = 20 9 100 [maximo,p]=max(x) %Indica o valor mximo e maximo = 20 9 100 %o local onde ocorreu p = 1 21 21 [minimo,q]=min(x) e o minimo = 0 -1 q = 21 1 1 % Indica o valor mnimo 10 % local onde ocorreu

10.1.HELP DE ANLISE DE DADOS

Para conhecer mais funes de anlise de dados consulte Help datafun.

11.POLINMIOS
11.1.RAZES X POLINMIO

Achar as razes de um polinmio encontrar os valores para os quais o polinmio igual a zero. No Matlab, um polinmio representado por um vetor de linha dos seus coeficientes em ordem decrescente. As razes do polinmio so obtidas pelo comando roots. O Matlab adota como conveno colocar os polinmios como vetores de linha e as razes como vetores de coluna. Dadas s razes de um polinmio, tambm possvel construir o polinmio associado, atravs do comando poly.
p=[1 -12 0 25 116]; r=roots(p) r = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i pp=poly(r) pp = 1.0000 -12.0000 -0.0000 25.0000 116.0000

11.2.OPERAES COM POLINMIOS


a=[1 2 3 4]; b=[1 2 9 16]; s=a+b % adio s = 2 4 12 20 % Multiplicao polinomial c=conv(a,b) % convoluo c = 1 4 16 44 67 84 e=s+[0 0 1 s(4)] e = 2 4 13 40 [q,r]=deconv(e,b) % diviso q=2 % quociente r = 0 0 -5 8 % resto da diviso

64

x=linspace(-1,3); p=[1 4 -7 -10]; % calcula o valor de p(x) nos valores x v=polyval(p,x) % armazena os valores em v plot(x,v) title('x^3+4x^2-7x-10'), xlabel('x')

15

11.3.HELP DE POLINMIOS

Para conhecer mais funes de anlise de dados consulte Help polyfun.

12.AJUSTE DE CURVAS E INTERPOLAO


Em diversas reas do conhecimento, com freqncia necessrio descrever os dados obtidos experimentalmente por meio de uma funo analtica. H duas alternativas pra resolver o problema: interpolao e ajuste de curvas ou regresso.
12.1.AJUSTE DE CURVAS

Para o Matlab, o melhor ajuste de curvas interpretado como sendo a minimizao da soma do erro quadrado dos pontos de dados e a curva utilizada restrita a polinmios. Matematicamente falando, isso denominado ajuste de curvas a um polinmio pelo mnimo quadrado (abreviao da minimizao da soma do erro quadrado). Este mtodo tem como objetivo achar alguma curva suave que melhor se ajuste aos dados, mas que no necessariamente passe por quaisquer dos pontos. A funo polyfit resolve o problema do ajuste de curvas pelo mtodo dos mnimos quadrados. A escolha da ordem do polinmio de certa forma, arbitrria. Necessita-se de dois pontos para definir uma reta ou um polinmio de primeira ordem. Necessita-se de trs pontos para definir um polinmio quadrtico ou de segunda ordem. Seguindo-se essa progresso, necessita-se de n+1 pontos de dados para especificar de forma nica um polinmio de ordem n. No exemplo acima, onde h 11 pontos, poderamos escolher um polinmio at a dcima ordem. Entretanto, das as propriedades dos polinmios de ordem superior, no se deve escolher a ordem com um valor mais alto que o necessrio. Alm disso, medida que a ordem do polinmio aumenta, a aproximao torna-se menos suave, j que os polinmios de ordem superior podem ser derivados mais vezes at que se tornem zero.
x=[0:0.1:1]; y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; n=2; p=polyfit(x,y,n) p = -9.8108 20.1293 -0.0317 % cria os dados para o eixo xi xi=linspace(0,1,100); z=polyval(p,xi); % calcula o polinmio p nos pontos de xi % y = 9.8108x 2 + 20.1293x 0.0317 plot(x,y,'o',x,y,xi,z,':') pp=polyfit(x,y,10) zz=polyval(pp,xi) plot(xi,zz,'-') xlabel('x'), ylabel ('y=f(x)') title('Ajuste de Curva') xlabel('x'), ylabel ('y=f(x)') title('Ajuste de Curva)

12.2.INTERPOLAO

A interpolao definida como sendo uma forma de estimar os valores de uma funo entre aqueles fornecidos por um conjunto de dados. A interpolao uma ferramenta valiosa quando no se pode calcular rapidamente a funo nos pontos intermedirios desejados. Por exemplo, isso ocorre quando os pontos de dados resultam de medies experimentais ou de procedimentos computacionais demorados. 16

12.2.1. INTERPOLAO LINEAR

A interpolao linear considera que os valores intermedirios caem em uma linha reta entre os pontos definidos. Com certeza, medida que se tm mais pontos de dados e a distncia entre eles diminui, a interpolao linear torna-se mais precisa. Considere o exemplo de registro de temperatura. Foram realizadas algumas medidas de temperatura ao longo de um dia e deseja-se estimar o valor da temperatura em horrios diferentes dos que foram realizadas as medidas.
h=1:12 % horrio das medies % valores lidos em graus Celsius t=[5 8 9 15 25 29 31 30 22 25 27 24] plot(h,t,h,t, '+') xlabel('Hora'),ylabel('Graus Celsius') t1=interp1(h,t,9.3) t2=interp1(h,t,[3.2 6.5 7.1 11.7]) t1 =22.9000 t2 =10.2000 30.0000 30.9000 24.9000 [a,b]=ginput(1) % seleciona um ponto da curva 12.2.2.INTERPOLAO CBICA

Em vez de pressupor que uma linha reta conecta os pontos de dados, podemos considerar que alguma curva suave se ajusta a eles. A suposio mais comum a de que um polinmio de terceira ordem, isto , um polinmio cbico, seja usado para modelar cada segmento entre pontos consecutivos e que a inclinao de cada polinmio cbico se ajuste nos pontos dados. Este tipo de interpolao chamado de splines cbicas ou apenas splines. A funo interp1 possui algumas restries: no se pode pedir resultados fora da varivel independente; a varivel independente tem que ser monotnica (crescente ou decrescente).
h=1:12 t=[5 8 9 15 25 29 31 30 22 25 27 24] hh=1:0.1:12 tt=interp1(h,t,hh,'spline') plot(h,t,h,t, '+',hh,tt) xlabel('Hora'),ylabel('Graus Celsius'),title('Temperatura') t1=interp1(h,t,9.3,'spline') t1 =21.8577 t2=interp1(h,t,[3.2 6.5 7.1 11.7],spline) t2 =9.6734 30.0427 31.1755 25.3820

12.2.3.INTERPOLAO BIDIMENSIONAL

A interpolao bidimensional interpola funes de duas variveis, z=f(x,y). Utilize a funo interp2.
12.3.HELP DE GRFICOS

Para conhecer mais sobre funes de interpolao consulte Help polyfun.

13.PROGRAMAO
Os programas podem ser redigidos no editor de texto e salvos como um arquivo.m. Para executar o programa basta digitar o seu nome rea de trabalho do Matlab. Se necessrio, mude o diretrio da 17

rea de trabalho para a pasta onde est armazenado o programa. A rea de trabalho padro utiliza a pasta Work, do Maltab.
apresentacao

% Programa apresentacao.m clear clc disp 'Execuo de programas no Matlab' disp( ' ') disp 'Converso de graus para radianos' x=input('Digite o valor de x em graus: ') disp 'Valor de x em radianos ' x=x*pi/180

As linguagens de programao de computadores apresentam caractersticas que permitem o controle de fluxo de execuo de comando, com base em estruturas de tomada de decises. O controle de fluxo um recurso poderoso, pois permite que clculos feitos anteriormente influenciem operaes futuras. Como estas estruturas freqentemente envolvem diversos comandos Matlab, elas em geral aparecem em arquivos M, em vez de serem introduzidas diretamente no prompt do Matlab.

13.1.LOOPS FOR

Os loops for (repetio determinstica) possibilitam que uma srie de comandos seja repetida por um nmero de vezes fixo e predefinido. A forma geral do loop for
for x= xi:xp:xf Comandos end %% programa loopfor_1.m for n=1:1:10 x(n)=sin(n*pi/10); end %% programa loopfor_1.m for n=1:1:10 x(n)=sin(n*pi/10); n=10 % no causar nenhum efeito end %%%%%%% programa loopfor_2.m dados=[ 3 9 45 6; 7 16 -1 5]; for n=dados x=n(1)-n(2) end

Um loop for no pode ser terminado reatribuindo-lhe a varivel de loop dentro do loop for

Qualquer conjunto vlido Matlab aceitvel no loop for.

13.2.LOOPS WHILE

Ao contrrio do loop for, que executa um grupo de comandos um nmero fixo de vezes, o loop while executa um grupo de comandos um nmero indefinido de vezes. Forma geral do loop while:
while expresso Comandos end

Os comandos entre as instrues while e end so executados enquanto todos os elementos em expresso forem verdadeiros.

%%%%%%% programa loopwhile_1.m num=0;eps=1; while (1+eps)>1 eps=eps/2; num=num+1; end

18

13.3.IF-ELSE-END

Em diversas situaes, as seqncias de comandos tm de ser executadas condicionalmente, com base em um teste relacional.
if condio Comandos end if condio Comandos_v else Comandos_f end %%% programa ifthen_1.m idade=input('Digite a idade: ') if idade<=14 elseif condicao_2 disp ('Criana') comandos_2 elseif idade>14 & idade<=18 elseif condicao_3 disp ('Adolescente') comandos_3 elseif idade>18 & idade<=60 else if disp ('Adulto') else else disp('Idoso') Comandos end end if condio_1 comandos_1

13.4.FUNES DE ARQUIVO M
Quando utilizamos funes do Matlab como inv, abs, angle e sqrt, o Matlab toma as variveis que foram definidas, calcula os resultados desejados usando sua entrada e depois devolve os resultados. Os comandos executados pela funo, assim como quaisquer variveis intermedirias criadas por esses comandos, encontramse ocultos. Apenas os dados de entrada e sada so disponveis. Essas propriedades fazem das funes ferramentas muito poderosas para executar comandos que incluem dentro deles funes matemticas teis ou seqncias de comandos que apaream freqentemente quando algum problema de maior porte estiver sendo resolvido. Devido deste recurso, o MATLAB apresenta uma estrutura que lhe permite criar suas prprias funes na forma de arquivos M armazenados em seu computador. Um arquivo M de funo semelhante a um arquivo de instruo, pois se trata tambm de um arquivo-texto com extenso.m. Assim como no caso dos arquivos M de instruo, os arquivos M de funo no so introduzidos a partir da janela de comandos, mas sim de arquivos textos externos criados com um editor de texto. A primeira linha de uma funo M define o arquivo M como uma funo, especifica seu nome e os nomes de suas variveis de entrada e sada.

function y = fliplr(x)
%FLIPLR Flip matrix in left/right direction. %FLIPLR(X) returns X with row preserved and columns flipped in the left/right direction
% X=123 % 456 becomes 3 2 1 654

if ndims(x)~=2, error('X must be a 2-D matrix.'); end [m,n] = size(x); y = x(:,n:-1:1);

13.5.CRIANDO UMA FUNO

Digite no editor de texto do Matlab a funo operacao mostrada abaixo. Salve o arquivo como operacao.m no diretrio de trabalho. Em seguida faa o teste
function r=operacao(x) r=x^2+2*x+x^(1/2); x=4; operacao(x) ans = 26 function r=operacao2(x,y,z) r=x^2+2*y+z^(1/2); x=3;y=2;z=1; operacao2(x,y,z) ans = 14

19

13.6.HELP DE PROGRAMAO

Para saber mais sobre instrues de programao consulte Help lang.

14.SIMULINK
Simulink um software para modelagem, simulao e anlise de sistemas dinmicos. Ele suporta sistemas lineares e no lineares, modelados em tempo contnuo, discreto ou hbrido. Para modelagem, SIMULINK fornece uma interface grfica para construo de modelos em diagramas de blocos, usando operaes de clique-e-arrasta do mouse. O software contm um bloco de biblioteca de fontes, componentes lineares, no lineares e conectores. Depois que o modelo definido, ele pode ser simulado usando um mtodo de integrao a ser escolhido na janela de comandos do Matlab.
14.1.BIBLIOTECA

Aps ativar o Simulink na barra de ferramentas do Matlab ser apresentada a janela de menus do Simulink. Crie um novo modelo. Ser apresentada uma nova janela em branco (janela de modelo) onde sero inseridos os blocos do modelo. 14.2.CONSTRUO DE UM MODELO Ser ilustrado a evoluo da funo sen(x(t)), sen(2x(t)) e | sen(x(t))| .
Na janela de menus selecione Simulink, seguida Sources e depois escolha Signal Generator block. Arraste o bloco para dentro da janela de modelo e escolha a funo sin(x) (d dois cliques do bloco). faa uma cpia deste bloco e escolha a funo cos(x). no menu Sinks, repita o procedimento para Scope (osciloscpio), To Workspace (armazenador) o ganho obtido no menu Math, e o mux no menu Signal & Systems. conecte as entradas e sadas dos blocos, como ilustra a figura. Ajuste os parmetros na opo Parameters ( tempo inicial, final e mtodo de simulao) do menu Simulation; digite a=3, na tela de trabalho do Matlab. Inicie a simulao selecionando Start no menu Simulation da janela de modelo.

20

Nesta simulao foram armazenados os valores do sen(x), na varivel valores_sin, os valores de sen(x)*3, na varivel valores_ganho, os valores de |sen(x)|, na varivel valores_abs e os valores do tempo, armazenados na varivel tempo. Estas variveis podem ser utilizadas normalmente no Matlab e todas tem o mesmo nmero de componentes.

length(tempo) ans = 61 [tempo(1:5) valores_sin(1:5) valores_ganho(1:5) valores_abs(1:5)] ans = 0 0 0 0 0.0000 0.0000 0.0000 0.0000 0.0600 0.3681 1.1044 0.3681 0.1200 0.6845 2.0536 0.6845 0.1800 0.9048 2.7145 0.9048 plot(tempo,valores_sin,'bo',tempo,valores_ganho,'r +',tempo,valores_abs,'g')

15.MATEMTICA SIMBLICA
Expresses simblicas so strings de caracteres ou conjuntos de strings de caracteres que representam nmero, funes, operadores e variveis. As variveis no necessitam ter valores predefinidos. Equaes simblicas so expresses simblicas quem contm um sinal de igualdade. A aritmtica simblica a prtica de resoluo dessas equaes por meio da aplicao de regras conhecidas e de identidade a determinados smbolos, exatamente da forma como se resolve em lgebra ou clculo.
15.1.REPRESENTAO DE EXPRESSES SIMBLICAS

As funes simblicas do MATLAB possibilitam manipular essas expresses de diversas formas:


% derivada de cos(x) em relao a x % representao implcita diff('cos(x)') ans =-sin(x) % cria uma matriz simblica, representao explcita: uso obrigatrio de sym M=sym('[a,b;c,d]') M =[ a, b] [ c, d] % encontra o determinante da matriz simblica M

determ(M) ans =a*d-b*c % string de caracteres (no usa sym) M=('[a,b;c,d]') M =[a,b;c,d]

15.2.VARIVEIS SIMBLICAS

Quando se trabalha com expresses simblicas contendo mais de uma varivel, uma varivel a varivel independente. Se no for dito ao MATLAB qual varivel a independente, ele seleciona um baseado na regra seguinte: O caractere padro escolhido x. Se no existir x, aquele mais prximo de x, alfabeticamente falando, escolhido. Se houver empate, o caractere posterior no alfabeto ser o escolhido. Ex: 1/(5+cos(x)) sin(pi/4)-cos(3/5) varivel livre: x varivel livre: x 3*y+z a+sin(t) varivel livre: y varivel livre: t

21

15.2.1.ESPECIFICANDO A VARIVEL INDEPENDENTE % deriva em relao a n diff('x^n','n') ans = x^n*log(x) diff('sin(omega)*a') ans = cos(omega)*a diff('sin(omega)*a+t') ans = 1 % deriva em relao a omega diff('sin(omega)*a+t','omega') ans = cos(omega)*a

15.3.OPERAES ALGBRICAS PADRO


f='2*x^2+3*x-5'; g='x^2-x+1' symadd(f,g) ans =3*x^2+2*x-4 symmul(f,g) ans = x^2+4*x-6 symdiv(f,g) ans =(2*x^2+3*x-5)/(x^2-x+1) sympow(f,3) ans =(2*x^2+3*x-5)^3 15.3.1.OPERAES AVANADAS % expresso simblica % soma de expresses simblicas % multiplicao de expresses simblicas % diviso de expresses simblicas % encontra a expresso simblica para f^3

f='cos(x)'; g='sin(2*x)'; % cria funes simblicas symop(f, '/',g,'+',3) % combina as duas ans =cos(x)/sin(2*x)+3 f=sym('1/(1+x^2)');g=sym('sin(x)' h=sym('1/(1+u^2)');k=sym('sin(v)');
15.3.2.FUNO INVERSA

% encontra a expresso para f(g(x))

compose(f,g)
ans =1/(1+sin(x)^2) %dados h(u), k(v),encontre h(k(v)) compose(h,k,'u','v') ans =1/(1+sin(v)^2)

A funo inv(x) calcula a inversa de x, seja x simblico ou numrico. O inverso funcional calculado pela funo finverse(x). O inverso funcional, digamos f(x), a expresso g(x) que satisfaz a condio g(f(x))=x. Por exemplo, o inverso funcional de ex ln(x), j que ln(ex ) =x. O inverso funcional de sen(x) arcsen(x). O inverso funcional de (1/tan(x)) arctan(1/x).
inv(sym('1/x')) ans =x finverse(sym('1/x')) % o inverso de 1/x 1/x ans =1/x % j que 1/(1/x) =x finverse(sym('x^2')) Warning: finverse(x^2) is not unique. ans = x^(1/2) finverse(sym('a*x+b')) % soluo para
g(f(x))=x

ans =-(b-x)/a t=sym('a*b+c*d-a*z') t =a*b+c*d-a*z finverse(t,'a') ans =-(c*d-a)/(b-z) % soluo para g(f(a))=a

15.3.3.SOMATRIA DE SRIES

x
0

x 1

n f=sym('x^2'); (2n 1) 2 0 symsum(f) ans = 1/3*x^3-1/2*x^2+1/6*x

f=sym('(2*n-1)^2'); symsum(f,1,'n') ans = 11/3*n+8/3-4*(n+1)^2+4/3*(n+1)^3 factor(ans) %muda a forma da resposta ans =1/3*n*(2*n-1)*(2*n+1)

22

15.4. FUNES DE CONVERSO

Sero apresentadas algumas funes que convertem expresses simblicas em valores numricos e vice-versa. Algumas funes simblicas automaticamente convertem um nmero em sua representao simblica caso ele seja um dos argumentos da funo.
15.4.1.FUNO NUMERIC

A funo sym pode receber um argumento numrico e converte em uma representao simblica. A funo numeric faz o contrrio. Ele converte uma constante simblica (expresso simblica sem variveis) em um valor numrico.
15.4.2.FUNO EVAL

Calcula uma string de caracteres. Dessa forma, eval outra funo que pode ser usada para converter uma constante simblica em um nmero, ou calcular uma expresso.
phi=sym('(1+sqrt(5))/2') numeric(phi) % converte em valor um numrico ans = 1.6180 eval(phi) ans = 1.6180 poly2sym(n,'s') % recria o polinmio em s ans =s^3+2*s^2-3*s+5 f=sym('2*x^2+x^3-3*x+5'); n=sym2poly(f) % extrai o vetor de coeficientes n = 1 2 -3 5 poly2sym(n) % recria o polinmio em x ans =2*x^2+x^3-3*x+5

15.4.3.FUNO POLY2SYM X SYM2POLY

A funo simblica sym2poly converte um polinmio simblico em seu vetor de coeficientes equivalente no MATLAB. A funo poly2sym faz o inverso e possibilita especificar a varivel a ser usada na expresso resultante.
15.5.SUBSTITUIO DE VARIVEIS

A funo subs permite mudar a varivel em uma expresso simblica. O formato subs(f,novo,antigo), sendo f uma expresso simblica e novo e antigo caracteres ou outras expresses simblicas.
f='a*x^2+b*x+c'; subs(f,'s','x') % substitui x por s na expresso f ans =a*s^2+b*s+c

15.6.DERIVAO

A derivao de uma expresso simblica usa da funo diff em uma dentre quatro formas:
f='a*x^3+x^2-b*x-x'; % expresso simblica diff(f) % deriva em relao ao padro (x) ans =3*a*x^2+2*x-b-1 diff(f,'a') % deriva f em relao a a ans =x^3 F=sym('[a*x,b*x^2;c*x^3,d*x]');% matriz simblica diff(F) % deriva os elementos em relao a x ans =[ a, 2*b*x] [ 3*c*x^2, d] M=[(1:8).^2]
M=1 4 9 16 25 36

% cria um vetor
49 64

diff(f,2) % deriva f 2 vezes em relao a x diff(M) %encontra a diferena entre os elementos ans =6*a*x+2 ans = 3 5 7 9 11 13 15 diff(f,'a',2) % deriva f 2 vezes em relao a a ans =0

23

15.7.INTEGRAO

A funo de integrao int(f), onde f uma expresso simblica, tenta encontrar outra expresso simblica F tal que diff(F)=f. A integral ou antiderivada talvez no exista em forma fechada, ou pode existir mas o software no consegue ach-la, ou o software pode ach-la eventualmente, mas no consegue terminar o clculo por falta de memria ou tempo. Quando o MATLAB no pode encontrar a antiderivada, ele devolve o comando sem ser processado. Como a funo de derivada, a funo de integrao tem mais de uma forma.
f=sym('sin(s+2*x)'); %funo simblica int(f) %integra em relao a x ans =1/2*cos(s+2*x) int(f,'s') %integra em relao a s ans =-cos(s+2*x) int(f,pi/2,pi) % integra em relao a x de /2 a ans =-cos(s) int(f,'s',pi/2,pi) % integra em relao a s de /2 a ans =2*cos(x)^2-1-2*sin(x)*cos(x) f=sym('[a*x,b*x^2;c*x^3,d*s]'); int(f) % integra os elementos de um conjunto ans =[ 1/2*a*x^2, 1/3*b*x^3] [ 1/4*c*x^4, d*s*x]

15.8.FUNO SOLVE

Essa funo avalia a o string de caracteres simblicos com apenas uma varivel para o valor, no qual a funo definida como igual a zero. A funo solve(f), onde f funo de x, calcula x para f(x)=0. solve('(3*x^2+2*x+1)=(5*x+12)')
v=sym('-10*t+20'); solve(v) %encontrar o valor de t quando v(t)=0
ans =2

ans =[ 1/2+1/6*141^(1/2)] [ 1/21/6*141^(1/2)] numeric(ans) ans = 2.4791 -1.4791

15.9.REPRESENTAO GRFICA DE EXPRESSES SIMBLICAS

A funo ezplot traa o grfico de uma funo simblica dada no domnio 2* t 2* e escala o eixo y de forma adequada.
y=sym('-5*t^2+20*t+30'); ezplot(y) % cria um grfico a partir da funo ezplot(y,[0 6]) % cria o grfico e limita o eixo

15.10.FORMATAO E SIMPLIFICAO DE EXPRESSES

s vezes, o MATLAB retorna uma expresso simblica que difcil de ler. Entretanto, h diversas ferramentas disponveis para ajudar a tornar a expresso mais legvel.
15.10.1.FUNO PRETTY

Tenta exibir uma expresso simblica de forma semelhante as dos livros de matemtica. f=taylor(sym('log(x+1)/(x-5)'))
f = -1/5*x+3/50*x^2-41/750*x^3+293/7500*x^4-1207/37500*x^5

g=int(sym('log(x)/exp(x^2)')) pretty(g)

As expresses simblicas podem ser apresentadas em muitas formas equivalentes. Algumas formas podem ser preferveis a outras em diferentes situaes. 24

%cria uma funo f=sym('(x^2-1)*(x-2)*(x-3)') f =(x^2-1)*(x-2)*(x-3) %rene todos os termos semelhantes collect(f) ans = x^4-5*x^3+5*x^2+5*x-6 %muda para a representao aninhada horner(ans) 15.10.2.FUNO SIMPLIFY ans =-6+(5+(5+(-5+x)*x)*x)*x

%representa como um produto de polinmios factor(ans) ans =(x-1)*(x-2)*(x-3)*(x+1) expand(f) % distribui o produto nas somas ans =x^4-5*x^3+5*x^2+5*x-6

uma ferramenta poderosa, de utilizao geral, que tenta simplificar uma expresso pela aplicao de muitos tipos diferentes de identidades algbricas envolvendo somas, potncias inteiras e fracionrias, funes trigonomtricas, exponenciais, logartmicas, funes de Bessel, hipergeomtricas e gama.
15.10.3. FUNO SIMPLE

uma das mais poderosas, mas a menos ortodoxa de todas as ferramentas de simplificao. A funo simple tenta usar vrias ferramentas diferentes de simplificao e seleciona a forma que tem o menor nmero de caracteres na expresso resultante. Algumas vezes til usar simple mais de uma vez, a fim de tentar uma operao de simplificao diferente ao da primeira.
simplify(sym('log(2*x/y)'))
ans =log(2)+log(x/y) f=sym('(1/x^3+6/x^2+12/x+8)^(1/3)'); simple(f) % sero apresentadas algumas ans = (2*x+1)/x %passagens antes do resultado simple(ans) ans =2+1/x

simplify(sym('sin(x)^2+3*x+cos(x)^2-5'))
ans =-4+3*x

15.11.FRAES PARCIAIS

As funes simblicas do MATLAB podem ser usadas para converter uma expresso simblica em sua representao fracionria parcial. Dado um polinmio racional f, int(f) integrar a funo e geralmente separar os termos. Ento, diff(ans) derivar cada termo a fim de obter a expresso original f na forma de uma soma de termos, que a representao de funo em fraes parciais.
y=sym('(10*s^2+40*s+30)/(s^2+6*s+8)');
% encontra a representao fracionria de y

g='(x^3+5)/(x^2-1)'; diff(int(g)) ans = x+3/(x-1)-2/(1+x) pretty(ans) 3 2 x + ----- - ----x-1 1+x

diff(int(y)) ans =10-15/(s+4)-5/(s+2) pretty(ans)

15.12.LATEX E FORTRAN

O comando latex til para quem usa o programa LaTeX para processamento de texto ou editorao eletrnica. Esse comando retorna o cdigo LaTeX necessrio para criar a expresso que voc fornecer e pode ainda armazenar o cdigo LaTeX em um arquivo. O comando fortran produz o cdigo da linguagem de programao FORTRAN.
f = taylor(sym('log(1+x)') ); latex(f) % produz o cdigo LaTeX da funo
ans =x-1/2\,{x}^{2}+1/3\,{x}^{3}-1/4\,{x}^{4}+1/5\,{x}^{5}

25

% produz o cdigo fortran da expresso simblica f fortran(f) ans = t0 = x-x**2/2+x**3/3-x**4/4+x**5/5

15.13.INSTRUO DIGITS

O Matlab se baseia exclusivamente na aritmtica de ponto flutuante do computador para o processamento dos nmeros. Embora sejam rpidas, as operaes de ponto flutuante so limitadas pelo nmero mximo de dgitos e podem introduzir erros de arredondamento em cada operao; elas no podem produzir resultados exatos. A preciso relativa das operaes aritmticas individuais em Matlab cerca de 16 dgitos de preciso a menos que se redefina o nmero de dgitos (n) pela instruo digits(n). A conseqncia do aumento do nmero de dgitos o aumento do tempo total de processamento, embora a visualizao dos resultados no seja alterada. A instruo vpa permite visualizar os dados na preciso desejada.
format long pi ans = 3.14159265358979 digits Digits = 16 vpa('pi') % preciso digits (16) ans =3.141592653589793 digits(20) vpa('pi') % preciso digits (20) ans =3.1415926535897932385 vpa('pi',30) % apresenta o resultado com 30 dgitos ans =3.14159265358979323846264338328 A=sym('[1/4,log(sqrt(2));exp(1),3/7]'); vpa(A,8) ans = [ .250000000000000000, .346573590279972655] [ 2.71828182845904524, .428571428571428571]

15.14.RESOLUO DE EQUAES

O Matlab permite resolver equaes simblicas usando-se ferramentas simblicas. Se a expresso no for uma equao (no contiver um sinal de igualdade), a funo solve define a expresso simblica como sendo igual a zero antes de resolv-la.
solve('a*x^2+b*x+c') % razes da equao ans =[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))] solve('a*x^2+b*x+c', 'b') % resolve para b ans =-(a*x^2+c)/x f=solve('cos(x)=sin(x)') f =1/4*pi e1='d+(c+u)/2=v'; e2='u=c+d+v-10'; e3='v+d=u+c/4'; e4='v+u=c+8*d-1'; [x1,x2,x3,x4]=solve(e1,e2,e3,e4,'u,c,d,v') x1 =8 x2 =3 x3 =16 x4 =15

15.15.EQUAES DIFERENCIAIS

A funo dsolve encontra solues simblicas para equaes diferenciais ordinrias. A sintaxe de dsolve um pouco diferente da maioria das outras funes. As equaes so definidas usando-se a letra D para significar derivao e D2 e D3 etc. para significar derivaes repetidas. Quaisquer letras aps D maisculo so consideradas varivel dependente. A equao d2y/dx=0 representada pela expresso simblica D2y=0. A varivel independente pode ser especificada ou ento ser tomada pelo padro seguindo-se a regra do symvar.

26

dsolve('Dy=1+y^2') ans = tan(t+C1)

% encontra a soluo geral para dy/dt=1+y2 % C1 uma constante de integrao

y=dsolve('Dy=1+y^2','y(0)=1') % adiciona uma condio incial y =tan(t+1/4*pi) dsolve('Dy=1+y^2','y(0)=1','v') ans =tan(v+1/4*pi) % especifica a varivel independente dy/dv

15.15.1.EQUAES DIFERENCIAIS DE SEGUNDA ORDEM

Considere a equao de segunda ordem

d2 y = cos(2t ) y, dt

dy (0) = 0, dt

y(0) = 2

y=dsolve('D2y=cos(2*t)-y','Dy(0)=0','y(0)=1') y =(1/2*sin(t)+1/6*sin(3*t))*sin(t)+(1/6*cos(3*t)-1/2*cos(t))*cos(t)+4/3*cos(t) y=simple(y) y =-1/3*cos(2*t)+4/3*cos(t)

Considere a equao de segunda ordem

d2 y dy 2 3y = 0, y(0) = 0, y(1) = 1 2 dt dt

y=dsolve('D2y-2*Dy-3*y=0','y(0)=0','y(1)=1') y = 1/(exp(3)-exp(-1))*exp(3*t)-1/(exp(3)-exp(-1))*exp(-t) y=simple(y) y =(exp(3*t)-exp(-t))/(exp(3)-exp(-1)) pretty(y) exp(3 t) - exp(-t)


-----------------------------

exp(3) - exp(-1) 15.15.2.EQUAES DIFERENCIAIS MLTIPLAS

dg df =3f +4g, = 4f +3g, f(0) = 0, g(0) =1 dt dt

[f,g]=dsolve('Df=3*f+4*g', 'Dg=-4*f+3*g', 'f(0)=0, g(0)=1')


f =exp(3*t)*sin(4*t) g =exp(3*t)*cos(4*t)

d2y + y = 4 cos(t ), y = 2, 2 dt 2

dy = 3 dt 2

y=dsolve('D2y+y=4*cos(t)','y(pi/2)=2*pi','Dy(pi/2)=-3') y =(2*sin(t)*cos(t)+2*t)*sin(t)-2*sin(t)^2*cos(t)+pi*sin(t)+5*cos(t) y=simple(y) y =2*sin(t)*t+pi*sin(t)+5*cos(t)

15.16.MATRIZES SIMBLICAS

Matrizes e vetores simblicos so conjuntos cujos elementos so expresses simblicas.

27

A=sym('[a b c;b c a;c a b]') % matriz simblica A =[ a, b, c] [ b, c, a] [ c, a, b] determ(A) % determinante ans =3*a*c*b-a^3-b^3-c^3 F=sym('[1/2,1/4;1/4,1/2]'); eigensys(F) % autovalores ans =[ 1/4] [ 3/4] [V,E]=eigensys(F) %autovalores E e
autovetores B

H=sym(hilb(3)) % matriz simblica de Hilbert H = [ 1, 1/2, 1/3] [ 1/2, 1/3, 1/4] [ 1/3, 1/4, 1/5] J=inv(H) % inversa da matriz simblica J =[ 9, -36, 30] [ -36, 192, -180] [ 30, -180, 180] jordan(F) ans =[ 1/4, 0] [ 0, 3/4] G=symop(F,'+','t') G =[ 1/2+t, 1/4+t] [ 1/4+t, 1/2+t]

% soma t diagonal de F

V = [ -1, 1] [ 1, 1]

E = [ 1/4, 0] [ 0, 3/4]

15.16.1.RESOLUO DE SISTEMAS LINEARES

Considere o sistema:

c + 2 c u 2 u c u c

u 2

+d +d

v +v

d v 8d + v

=0 =0 = 10 = 1

% matriz dos coeficientes A=sym('[1/2,1/2,1,-1;-1,-1/4,1,1;1,-1,-1,-1;1,-1,-8,1]'); B=sym('[0;0;-10;-1]'); X=linsolve(A,B) % resolve o sistema simblico A*X=B X =[ 16] [ 8] [ 3] [ 15]

15.17.TRANSFORMADAS
15.17.1.TRANSFORMADA DE LAPLACE

A funo laplace(f) transforma f(t), no domnio do tempo, em F(s), no domnio s. A expresso pode ser novamente transformada no domnio do tempo usando-se o inverso da transformada de Laplace,
15.17.2.TRANSFORMADA DE FOURIER

f=sym('exp(-a*t)*cos(w*t)'); F=laplace(f) F =(s+a)/((s+a)^2+w^2) ilaplace(F) ans =exp(-a*t)*cos(w*t)

A transformada de Fourier (fourier(f)) e sua inversa (ifourier(f)) so utilizadas para determinar as caractersticas de um sistema em ambos os domnios de tempo e freqncia
15.17.3.TRANSFORMADA Z

F=fourier(f)
F =-1/2*i*pi^(1/2)*w*exp(-1/4*w^2)

ifourier(F)
ans =1/2*4^(1/2)*x*exp(-x^2)

Utilizada para analisar sistemas de tempo discreto, sendo z um nmero complexo. A transformada z e a transformada z inversa so obtidas usando-se as funes ztrans(f) e iztrans(f).

f=sym('2^n/7-(-5)^n/7'); G=ztrans(f) G =1/14*z/(1/2*z-1)+1/35*z/(-1/5*z-1) simple(G) ans =z/(z-2)/(z+5) iztrans(G) ans =1/7*2^n-1/7*(-5)^n

28

15.18.SOMAS DE RIEMANN
A integral de uma funo pode representar a rea sob a curva da funo e ser aproximada em um intervalo fechado usando-se as somas de Riemann. O Matlab possui uma ferramenta interativa que lhe permite observar aproximaes diferentes da integral usando essa tcnica. A forma da funo rsums(f), onde f uma funo simblica. Ela far aparecer uma janela grfica, em que a rea sob a curva da funo de 0 a 1 ser aproximada por 10 retngulos. O ttulo exibe a funo e a rea total dos retngulos calculada . Sob o grfico est um deslizador horizontal que lhe permite mudar o nmero de retngulos usados para aproximar a curva de 2 a 256 usando o mouse
f=sym('10*x*exp(-5*x^2)'); ezplot(f) vpa(int(f,0,1),6) % calcula a integral ans =.993262 % aproximao de Riemann de 0 a 1 rsums(f)

15.19.CALCULADORA DE FUNES
Esta ferramenta uma calculadora de funes grficas interativas, chamada funtool, que usa o clique do mouse para efetuar clculos em expresses simblicas; funtool manipula duas funes de uma varivel (f(x) e g(x)) e traa os grficos das duas um janelas separadas. Uma terceira janela controla a calculadora e contm as funes simblicas f e g, o domnio em x dos grficos e uma expresso a constante que pode ser alterada digitando em caixas de texto. H trs linhas de teclas sob a caixa de textos, que invocam as funes simblicas do MATLAB, e uma quarta linha de teclas para controlar a prpria calculadora. A tecla Help fornece informaes mais detalhadas sobre funtool. A tecla Close fecha a janela da funo.

15.20.HELP DA MATEMTICA SIMBLICA


Para saber mais funo simblica consulte Help simbolic.

16.TPICOS EXTRAS

29

Você também pode gostar