You are on page 1of 29

INTRODUÇÃO AO MATLAB

30 e 31 de Maio de 2006.

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

1

1.INTRODUÇÃO
O MATALB é um ambiente computacional e também uma linguagem de programação, sendo um software amplamente difundido na área acadêmica. Estudantes de várias universidades do mundo têm utilizado o MATLAB para obter respostas aos seus problemas e principalmente para entender como obtê-las. Devido à diversidade de aplicações científicas, de engenharia, computação numérica, de análise e visualização de dados e outras, o MATLAB se tornou o ambiente de computação técnicas de grande versatilidade. Exemplos de aplicação do MATLAB: Estudante de física analisando e visualizando dados de seus experimentos com campos magnéticos; Controle de sistemas; Processo de codificação e compressão para TV digital; Modelagem de sistemas; Transformadas; Operações elementares; Estatística; Redes Neurais; Lógica Fuzzy... O ambiente MATLAB permite que o usuário utilize suas funções sem a necessidade de uma programação elaborada. Entretanto, como linguagem de programação permite a construção de ferramentas e funções pelo usuário (são os arquivos *.M). As TOOLBOXES são coleções de funções úteis relacionadas a um assunto. Essas TOOLBOXOES são elaboradas por pesquisadores de todo o mundo, em vários campos tais como controle, processamento de sinais, identificação de sistemas,... Neste mini-curso serão apresentados alguns exemplos de TOOLBOXES. O objetivo do curso é introduzir usuário no ambiente Matlab e apresentar suas ferramentas básicas. Uma vez conhecido o ambiente, o usuário pode procurar os recursos necessários dentro do próprio Matlab, através dos menus Help. Será apresentado o ambiente do Simulink e ilustradas algumas simulações de instruções básicas. Por sua simplicidade e clareza, os tópicos, texto e exemplos deste curso foram extraídos do livro MATLAB Versão Estudante 5.3, Guia do Usuário. Este livro contém instruções básicas do software, que é o objeto deste curso.

2.OPERAÇÕES BÁSICAS - MATEMÁTICA ELEMENTAR
Operação Símbolo Exemplo

Adição, Subtração Multiplicação Divisão Potenciação

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

2

3.VARIÁVEIS
3.1.DECLARAÇÃO DE VARIÁVEIS Assim como qualquer outra linguagem de programação, o MATLAB tem regras a respeito dos nomes das variáveis. os nomes das variáveis N=1; os nomes das variáveis devem começar A12345=10 devem ser palavras únicas, N1=1; com uma letra, seguida de um número Rua_2=12 sem inclusão de espaços; N_a=1 qualquer de letras, algarismos ou 123_rua χ sublinhas. as variáveis são sensíveis a A=3; caracteres de pontuação não são A!=3 maiúsculas e minúsculas; a=5 ; permitidos. A1&3=2χ B=A+a podem conter até 19 abcdefg caracteres j=1 se uma instrução for muito N=1+x 2 longa, coloque (...) ... +2*x+3 seguidas de <ENTER>. 3.2.VARIÁVEIS ESPECIAIS O MATLAB tem diversas variáveis especiais Ans Nome de uma variável padrão usada para NAN Não-número resultados E: 0/0 Pi iej Razão entre o perímetro da circunferência e i = j = −1 seu diâmetro eps Menor número que, somado a 1, cria um Realmin Menor número real número de ponto flutuante maior que 1 no utilizável computador. Inf Realmax Maior Infinito, 1/0. número real utilizável 3.3.REDEFINIÇÃO DE VARIÁVEIS
3.3.1. O COMANDO DE ATRIBUIÇÃO É AUTODESTRUTIVO.

não é necessário declarar a variável

A=3.32+i

positivo

positivo

Ao inserir um novo valor na variável o valor antigo é destruído. O MATLAB faz os cálculos utilizando os valores conhecidos no momento em que o cálculo foi solicitado
» a=3.21+i a =3.2100 + 1.0000i » b=2 b=2 3.3.2. EXCLUSÃO MANUAL » a=3 a=3 » c=a+b c =5

As variáveis do espaço de trabalho do MATLAB podem ser excluídas 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.3. LISTA DE VARIÁVEIS

Para listar todas as variáveis 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 não se sabe o nome do tópico a respeito do qual se necessita de informações. Digite help e a tela descreverá categorias sobre as quais você pode obter ajuda.
4.2.HELP < TÓPICO>

Utilizado no caso em que se sabe o nome o tópico a respeito do qual se necessita de informações
» 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 não tiver certeza da existência e da grafia exata de um tópico. Este comando fornece ajuda fazendo uma busca em toda primeira linha dos tópicos de ajuda e retornando aqueles que contêm a palavra-chave que você especificou. A palavra chave não 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 opções.

4

5.CARACTERÍSTICAS CIENTÍFICAS
O MATLAB oferece diversas funções importantes nas ciências em geral. A tabela a seguir apresenta uma lista parcial de funções básicas 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 módulo de um no arco cosseno hiperbólico 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 divisão de x por y retorna o sinal do argumento seno hiperbólico 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 hiperbólico arco tangente em quatro quadrantes conjugado complexo cosseno hiperbólico arredondar par zero parte imaginária de um no complexo logaritmo natural raiz quadrada arredondar para o próximo no inteiro seno tangente hiperbólica

5.1.HELP DAS FUNÇÕES

Para conhecer saber mais sobre as funções consulte o menu Help elfun.

6.MANIPULAÇÃO DE DADOS
6.1.FORMATOS E VISUALIZAÇÃO DE DADOS – FORMATOS NUMÉRICOS O Matlab não altera a 34.5667 Apresentação padrão format short representação interna de um 34.56666666666666 16 dígitos format long número quando optamos por 5 dígitos mais expoente format short e 3.4567e+001 format long e 3.456666666666666e+001 16 dígitos mais expoente diferentes formatos, somente a visualização é alterada. 4041488888888888 hexadecimal format hex
format bank format rat 34.57 1037/30 duas casas decimais aproximação racional

6.2.OUTRAS CARACTERÍSTICAS BÁSICAS

• A vírgula indica ao MATLAB para mostrar o resultado; o ponto-e-vírgula suprime a visualização; • A execução do MATLAB pode ser interrompida a qualquer momento pressionando CTRL-C; • O comando quit termina a execução do MATLAB; • Todo texto depois do sinal de porcentagem (%) é considerado um comentário; • Pode-se colocar mais de um comando em uma linha, separando-os por vírgula ou ponto-e-vírgula. • O comando clc apaga os dados da tela, mas não a memória (clear).
6.3.ENTRADA DE DADOS – INPUT

A função input permite a entrada de dados via teclado. Após esta instrução o MATLAB interrompe a execução do programa e espera que o usuário digite algum valor, que pode ser numérico ou literal (este valor deve ser inserido entre plicas ‘ ’) .
» a=input(' ') 'curso' a =curso » a=input(' ') 15 a =15

6.4.APRESENTAÇÃO DE TEXTOS - DISP

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

» disp('Curso de MATLAB') Curso de MATLAB

5

6.5.ARMAZENAMENTO DE DADOS - SAVE X LOAD

Este comando salva todas as variáveis em um arquivo em disco chamado matlab.mat. Para recuperar as variáveis em uma outra seção do MATLAB, pode-se executar o comando load para restaurar o espaço de trabalho com as variáveis de matlab.mat. Podem ser utilizados os comandos save e load em arquivos com outros nomes, ou salvar somente algumas variáveis.
» 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 diretório atual ou fichário.
what dir, ls type nome delete nome cd, chdir caminho cd, pwd which nome

Retorna uma listagem de todos os arquivos M do diretório Lista todos os arquivos do diretório Mostra o arquivo M nome.m na janela de comandos Exclui o arquivo M nome.m Muda para o diretório dado por caminho Mostra o diretório de trabalho atual Mostra o caminho para o para o diretório 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 espaços ou por vírgulas e em seguida fecha-se o colchete direito. Separando os elementos por espaços ou vírgulas especificam-se elementos de colunas diferentes; separando os elementos com pontos-e-vírgulas 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. ESPECIFICAÇÃO DE VETOR POR DOIS PONTOS

Sintaxe: (x0:inc:xf) cria um vetor que » y=0:0.1:0.5 começa 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” não é 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

2

3

4

5

6

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

No Matlab, elementos de conjunto individuais são 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. OPERAÇÕES COM VETORES

Quando se trata de operações com vetores na multiplicação, divisão e potenciação introduzem um ponto antes do símbolo da operação. Isto indica ao MATLAB que as operações se tratam de vetores e não 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 %multiplicação 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

0

-3

2

7

8.1.6. COMANDO LINSPACE

Sintaxe: linspace (primeiro_valor, último_valor, número_de_ valores). Este comando cria um conjunto de valores (vetor) onde é possível determinar o número de pontos, mas não 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

7

8.1.7. COMANDO LOGSPACE

Sintaxe: logspace(primeiro_expoente, último_expoente, número_de_ elementos) Este comando cria um conjunto de valores (vetor) com espaçamento logarítmico. » 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 começa em 100, termina em 102 e contém 11 elementos. 8.2.MATRIZES
8.2.1. INTRODUÇÃO DE UMA MATRIZ

Pode-se entrar com matrizes no MATLAB de diversas maneiras: • Entrar com uma lista explícita de elementos. • Gerar matrizes utilizando funções e linhas de comando do MATLAB. • Criar matrizes em arquivos-M. • Chamar matrizes de um arquivo de dados externo. • A maneira mais fácil de declarar matrizes é fazendo a explicitação da lista de elementos na linha de comando, seguindo as convenções abaixo: •Separar os elementos da lista de elementos através de espaços ou vírgulas. •Colocar os elementos entre colchetes, [ ]. •Usar (;) ponto-e-vírgula 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. OPERAÇÕES 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

%Divisão de matrizes » x=(A\B)’ % inv(A)*B x =-46.3333 105.6667 -21.6667
%Utiliza a Técnica de fatoração LU e representa a resposta como a divisão esquerda de A por B. O Operador não tem o ponto precedente porque se trata de divisão matricial e não operação de elementos. É mais rápida porque realiza menos cálculos internos. %No caso de sistemas lineares, se houver mais equações do que incógnitas, isto é, em um caso superdeterminado, o uso do operador \ automaticamente encontra a solução que minimiza o erro quadrado de (Axb=0) (solução dos mínimos quadrados)

% Caso subdeterminado » x=(pinv(A)*B)'
x = -46.3333 105.6667 -21.6667

%Multiplicação de Matrizes » Y=A*B Y = 2089 4591 2404

%Obtém-se a solução na qual o comprimento euclidiano ou norma de x é menor do que em qualquer outra solução possível. %A solução é baseada no pseudo-inverso (solução de norma mínima). Alternativamente ou operador de divisão calcula a solução que tem zero para alguns elementos de x.

8

8.2.3. MANIPULAÇÃO 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 não tem cinco 1 % colunas, o tamanho de A 0 % é aumentado conforme % necessário 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 unitária %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 aleatórios » 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 específicos % acha os subscritos (posição) onde a expressão 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

0

1

2

3

» 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 funções sobre matrizes consulte o Help matfun (funções com matrizes), Help elmat (matrizes elementares), Help sparfun.

9.GRÁFICOS
9.1.FUNÇÃO PLOT

Os gráficos constituem um recurso visual poderoso para interpretação de dados. Para iniciar a construção, determina-se inicialmente a variável independente que irá compor o eixo horizontal do gráfico. Depois disso determina-se a variável que irá compor o eixo vertical. 9

Como exemplo inicial, será ilustrado a função seno no intervalo [0,2π] com 30 pontos.
» x=linspace(0,2*pi,30); » y=sin(x); » plot(x,y)

Características da função plot: escolhe automaticamente os limites dos eixos, marcar os entre eles. plota múltiplos conjuntos de dados nos mesmos eixos; marca somente os pontos de dados sem interliga-los; coloca nomes nos eixos e títulos;
» 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('Ilustração do comando plot')
% coloca um título

» title('Funções seno(x) e cosseno(x)')
% linhas de grade

» grid % limite dos eixos % define os valores máximo e mínimo dos eixos usando um vetor linha »axis([0 6.5 -1 1])
% inserir textos no gráfico

»text(2.8,0.53,'sen(x)') % inserir textos no gráfico a partir da Os textos ‘seno’, ‘cos’ podem ser introduzidos
posição do cursor (dê um clique na posição desejada)

» gtext('cos(x)')

diretamente na figura, espessura das linhas.

assim

como

a

9.1.1. ESTILOS DE LINHA, MARCADORES E CORES

Símbolo y m c r g b w k

Cor amarelo magenta ciano vermelho verde azul branco preta

Símbolo . o x + * : -. --

Tipo de linha ponto círculo x-marca mais asterisco linha contínua linha pontilhada traços e pontos linha tracejada 10

9.2.EIXOS
axis([xmin xmax ymin ymax]) define os valores máximo e mínimo dos eixos axis auto retorna o escalamento de eixos para o modo automático padrão: xmion=min(x), xmax=max(x) axis(axis) congela a escala nos seus limites atuais axis square (‘square’) faz com que o gráfico seja quadrado e não 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 gráficos em diferentes janelas, use o comando figure ou a seleção 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 específica de número n. 9.4.COMANDO HOLD ON Permite que seja adicionada mais de uma curva no mesmo gráfico. Quando o hold on é acionado, o MATLAB não remove as curvas já existentes quando novos comandos plot são emitidos. Em vez disso, ele acrescenta novas curvas nos eixos já existentes. Contudo, se os novos valores não se ajustarem aos limites de eixos em vigor, os eixos podem ser reescalados. Fazendo hold off, libera-se a janela atual para novos gráficos. O comando hold sem argumentos comuta a função 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 gráficas e faz com que a p-ésima área fique ativa. Os subgráficos são 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('Gráfico 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 CARACTERÍSTICAS
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 são logarítmicas Escala logarítmica para o eixo x e linear para y Escala logarítmica para o eixo y e linear para x Coordenadas polares,t é vetor ângulo em radianos, r é o vetor raio, s descreve cor, marcadores Gráfico de barras Gráfico escada Desenha um histograma com n divisões do vetor y. Desenha um histograma usando as divisões especificadas no vetor x. Faz um histograma de dez divisões para os dados do vetor y Desenha um histograma polar com 20 divisões para os ângulos do vetor t. (t,n), (t,x) Cria um gráfico dos pontos de dados de y conectado ao eixo horizontal por uma linha Cria um gráfico de pontos de dados de y nos valores especificados em x. Seleciona n pontos de um gráfico 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 gráfico da função fun sobre o intervalo xmin≤x≤xmax com escalamento automático do eixo y. Fplot(‘fun’,[xmim max]) especifica também y. Há restrições de funções. 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 ('Gráfico polar'); % gráfico de barras »x=-2.9:0.2:2.9; »y=exp(-x.*x); »subplot(3,2,2); »bar(x,y,'w'); »title('Gráfico de barras') »ylabel('Curva normal'); % gráfico escada »subplot(3,2,3); »stairs(x,y), »title('Gráfico 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('Gráfico de haste'), »ylabel('Dados Aleatórios') %função »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('Gráfico de sen(x)^2/x') »[a,b]=ginput(4); »hold on »plot(a,b,'bo') »hold off

12

9.7.GRÁFICOS TRIDIMENSIONAIS Formato generalizado: plot3(x1,y1,z1,S1,x2,y2,z2,S2,...), onde xn, yn e zn são vetores ou matrizes e sn especifica as cores, símbolos 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.GRÁFICOS DE REDES E SUPERFÍCIE

O Matlab define uma superfície de rede por meio das coordenadas z de pontos acima de uma grade retangular no plano xy. Ele forma um gráfico unindo pontos adjacentes com linhas retas. O resultado se parece com uma rede de pesca com nós nos pontos de dados. Estes gráficos são muito úteis na visualização de grandes matrizes ou para a representação gráfica de funções de duas variáveis.
9.8.1. FUNÇÃO MESHGRID

O primeiro passo para gerar um gráfico de rede de uma função de duas variáveis é gerar matrizes X e Y que consistam em linhas e colunas repetidas, respectivamente, sobre um intervalo das variáveis x e y. Isto pode ser feito pela função meshgrid. [X,Y] = meshgrid(x,y) cria uma matriz x, cujas linhas são cópias do vetor x, e uma matriz Y, cujas colunas são cópias do vetor y. Esse par de matrizes pode então ser usado para calcular funções de duas variáveis 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. FUNÇÃO SURF

Um gráfico de superfície da mesma matriz Z (usado na função mesh) se parece com o gráfico em rede, exceto pelo fato de que os espaços entre as linhas são preenchidos.
9.8.3. FUNÇÃO PEAKS

Esta função (peaks.m) gera uma matriz quadrada de dados. Os dados são baseados em uma função de duas variáveis e contêm 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 padrão será 31.
»M=peaks(20) »plot(M) »title('Gráfico de Peaks') »mesh(M)

9.8.4. GRÁFICOS DE CONTORNO

Mostram linhas de elevação ou altura constante (um exemplo é o mapa topográfico). Os gráficos de contorno bi e tridimensionais são gerados usando-se as funções contour e controur3, respectivamente.

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

Outra forma de visualizar informações sobre contorno é usar cores para representar alturas. A função pcolor mapeia em um conjunto de cores e apresenta a mesma informação do gráfico de contorno, na mesma escala. Exemplo: digite ‘z=peaks’ e em seguida ‘pcolor(z)’. Uma vez que pcolor e contour mostram a mesma informação 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 GRÁFICOS

Para conhecer mais funções sobre gráficos consulte Help graphics, Help graph2d, Help graph3d, Help specgraph.

14

10.ANÁLISE DE DADOS
A análise de dados no Matlab é feita em matrizes orientadas por colunas. As diversas variáveis são armazenadas em colunas individuais e cada linha representa uma observação diferente de cada variável. Nesta análise podem ser verificados os valores críticos do conjunto, como o valor máximo, o mínimo, o valor médio, a covariância, a correlação...
» a=20:-1:0 » b=linspace(-1,9,length(a)); » c=linspace(10,100,length(a)); » x=[a',b',c'] % média de cada coluna » media=mean(x) %media das três colunas » m_media=mean(media) m_media = 23 » maximo=max(x) % valor máximo de cada coluna maximo = 20 9 100 » [maximo,p]=max(x) %Indica o valor máximo 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 mínimo 10 % local onde ocorreu

10.1.HELP DE ANÁLISE DE DADOS

Para conhecer mais funções de análise de dados consulte Help datafun.

11.POLINÔMIOS
11.1.RAÍZES X POLINÔMIO

Achar as raízes de um polinômio é encontrar os valores para os quais o polinômio é igual a zero. No Matlab, um polinômio é representado por um vetor de linha dos seus coeficientes em ordem decrescente. As raízes do polinômio são obtidas pelo comando roots. O Matlab adota como convenção colocar os polinômios como vetores de linha e as raízes como vetores de coluna. Dadas às raízes de um polinômio, também é possível construir o polinômio associado, através 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.OPERAÇÕES COM POLINÔMIOS
» a=[1 2 3 4]; » b=[1 2 9 16]; » s=a+b % adição s = 2 4 12 20 % Multiplicação polinomial » c=conv(a,b) % convolução »c = 1 4 16 44 67 84 » e=s+[0 0 1 s(4)] e = 2 4 13 40 » [q,r]=deconv(e,b) % divisão q=2 % quociente r = 0 0 -5 8 % resto da divisão

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 POLINÔMIOS

Para conhecer mais funções de análise de dados consulte Help polyfun.

12.AJUSTE DE CURVAS E INTERPOLAÇÃO
Em diversas áreas do conhecimento, com freqüência é necessário descrever os dados obtidos experimentalmente por meio de uma função analítica. Há duas alternativas pra resolver o problema: interpolação e ajuste de curvas ou regressão.
12.1.AJUSTE DE CURVAS

Para o Matlab, o melhor ajuste de curvas é interpretado como sendo a minimização da soma do erro quadrado dos pontos de dados e a curva utilizada é restrita a polinômios. Matematicamente falando, isso é denominado ajuste de curvas a um polinômio pelo mínimo quadrado (abreviação da minimização da soma do erro quadrado). Este método tem como objetivo achar alguma curva suave que “melhor se ajuste” aos dados, mas que não necessariamente passe por quaisquer dos pontos. A função polyfit resolve o problema do ajuste de curvas pelo método dos mínimos quadrados. A escolha da ordem do polinômio é de certa forma, arbitrária. Necessita-se de dois pontos para definir uma reta ou um polinômio de primeira ordem. Necessita-se de três pontos para definir um polinômio quadrático ou de segunda ordem. Seguindo-se essa progressão, necessita-se de n+1 pontos de dados para especificar de forma única um polinômio de ordem n. No exemplo acima, onde há 11 pontos, poderíamos escolher um polinômio até a décima ordem. Entretanto, das as propriedades dos polinômios de ordem superior, não se deve escolher a ordem com um valor mais alto que o necessário. Além disso, à medida que a ordem do polinômio aumenta, a aproximação torna-se menos suave, já que os polinômios 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 polinômio 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.INTERPOLAÇÃO

A interpolação é definida como sendo uma forma de estimar os valores de uma função entre aqueles fornecidos por um conjunto de dados. A interpolação é uma ferramenta valiosa quando não se pode calcular rapidamente a função nos pontos intermediários desejados. Por exemplo, isso ocorre quando os pontos de dados resultam de medições experimentais ou de procedimentos computacionais demorados. 16

12.2.1. INTERPOLAÇÃO LINEAR

A interpolação linear considera que os valores intermediários caem em uma linha reta entre os pontos definidos. Com certeza, à medida que se têm mais pontos de dados e a distância entre eles diminui, a interpolação 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 horários diferentes dos que foram realizadas as medidas.
» h=1:12 % horário das medições % 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.INTERPOLAÇÃO CÚBICA

Em vez de pressupor que uma linha reta conecta os pontos de dados, podemos considerar que alguma curva suave se ajusta a eles. A suposição mais comum é a de que um polinômio de terceira ordem, isto é, um polinômio cúbico, seja usado para modelar cada segmento entre pontos consecutivos e que a inclinação de cada polinômio cúbico se ajuste nos pontos dados. Este tipo de interpolação é chamado de splines cúbicas ou apenas splines. A função interp1 possui algumas restrições: não se pode pedir resultados fora da variável independente; a variável independente tem que ser monotônica (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.INTERPOLAÇÃO BIDIMENSIONAL

A interpolação bidimensional interpola funções de duas variáveis, z=f(x,y). Utilize a função interp2.
12.3.HELP DE GRÁFICOS

Para conhecer mais sobre funções de interpolação consulte Help polyfun.

13.PROGRAMAÇÃO
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 necessário, mude o diretório da 17

área de trabalho para a pasta onde está armazenado o programa. A área de trabalho padrão utiliza a pasta Work, do Maltab.
» apresentacao

% Programa apresentacao.m clear clc disp 'Execução de programas no Matlab' disp( ' ') disp 'Conversão 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 programação de computadores apresentam características que permitem o controle de fluxo de execução de comando, com base em estruturas de tomada de decisões. O controle de fluxo é um recurso poderoso, pois permite que cálculos feitos anteriormente influenciem operações futuras. Como estas estruturas freqüentemente 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 (repetição determinística) possibilitam que uma série de comandos seja repetida por um número 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 % não 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 não pode ser terminado reatribuindo-lhe a variável de loop dentro do loop for

Qualquer conjunto válido Matlab é aceitável no loop for.

13.2.LOOPS WHILE

Ao contrário do loop for, que executa um grupo de comandos um número fixo de vezes, o loop while executa um grupo de comandos um número indefinido de vezes. Forma geral do loop while:
while expressão Comandos end

Os comandos entre as instruções while e end são executados enquanto todos os elementos em expressão 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 situações, as seqüências de comandos têm de ser executadas condicionalmente, com base em um teste relacional.
if condição Comandos end if condição Comandos_v else Comandos_f end %%% programa ifthen_1.m idade=input('Digite a idade: ') if idade<=14 elseif condicao_2 disp ('Criança') 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 condição_1 comandos_1

13.4.FUNÇÕES DE ARQUIVO M
Quando utilizamos funções do Matlab como inv, abs, angle e sqrt, o Matlab toma as variáveis que foram definidas, calcula os resultados desejados usando sua entrada e depois devolve os resultados. Os comandos executados pela função, assim como quaisquer variáveis intermediárias criadas por esses comandos, encontramse ocultos. Apenas os dados de entrada e saída são disponíveis. Essas propriedades fazem das funções ferramentas muito poderosas para executar comandos que incluem dentro deles funções matemáticas úteis ou seqüências de comandos que apareçam freqüentemente quando algum problema de maior porte estiver sendo resolvido. Devido à deste recurso, o MATLAB apresenta uma estrutura que lhe permite criar suas próprias funções na forma de arquivos M armazenados em seu computador. Um arquivo M de função é semelhante a um arquivo de instrução, pois se trata também de um arquivo-texto com extensão.m. Assim como no caso dos arquivos M de instrução, os arquivos M de função não são introduzidos a partir da janela de comandos, mas sim de arquivos textos externos criados com um editor de texto. A primeira linha de uma função M define o arquivo M como uma função, especifica seu nome e os nomes de suas variáveis de entrada e saída.

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 FUNÇÃO

Digite no editor de texto do Matlab a função “operacao” mostrada abaixo. Salve o arquivo como operacao.m no diretório de trabalho. Em seguida faça 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 PROGRAMAÇÃO

Para saber mais sobre instruções de programação consulte Help lang.

14.SIMULINK
Simulink é um software para modelagem, simulação e análise de sistemas dinâmicos. Ele suporta sistemas lineares e não lineares, modelados em tempo contínuo, discreto ou híbrido. Para modelagem, SIMULINK fornece uma interface gráfica para construção de modelos em diagramas de blocos, usando operações de clique-e-arrasta do mouse. O software contém um bloco de biblioteca de fontes, componentes lineares, não lineares e conectores. Depois que o modelo é definido, ele pode ser simulado usando um método de integração a ser escolhido na janela de comandos do Matlab.
14.1.BIBLIOTECA

Após 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 serão inseridos os blocos do modelo. 14.2.CONSTRUÇÃO DE UM MODELO Será ilustrado a evolução da função ‘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 função sin(x) (dê dois cliques do bloco). faça uma cópia deste bloco e escolha a função cos(x). no menu Sinks, repita o procedimento para Scope (osciloscópio), To Workspace (armazenador) o ganho é obtido no menu Math, e o mux no menu Signal & Systems. conecte as entradas e saídas dos blocos, como ilustra a figura. Ajuste os parâmetros na opção Parameters ( tempo inicial, final e método de simulação) do menu Simulation; digite a=3, na tela de trabalho do Matlab. Inicie a simulação selecionando Start no menu Simulation da janela de modelo.

20

Nesta simulação foram armazenados os valores do sen(x), na variável valores_sin, os valores de sen(x)*3, na variável valores_ganho, os valores de |sen(x)|, na variável valores_abs e os valores do tempo, armazenados na variável tempo. Estas variáveis podem ser utilizadas normalmente no Matlab e todas tem o mesmo número 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.MATEMÁTICA SIMBÓLICA
Expressões simbólicas são strings de caracteres ou conjuntos de strings de caracteres que representam número, funções, operadores e variáveis. As variáveis não necessitam ter valores predefinidos. Equações simbólicas são expressões simbólicas quem contêm um sinal de igualdade. A aritmética simbólica é a prática de resolução dessas equações por meio da aplicação de regras conhecidas e de identidade a determinados símbolos, exatamente da forma como se resolve em álgebra ou cálculo.
15.1.REPRESENTAÇÃO DE EXPRESSÕES SIMBÓLICAS

As funções simbólicas do MATLAB possibilitam manipular essas expressões de diversas formas:
% derivada de cos(x) em relação a x % representação implícita » diff('cos(x)') ans =-sin(x) % cria uma matriz simbólica, representação explícita: uso obrigatório de sym » M=sym('[a,b;c,d]') M =[ a, b] [ c, d] % encontra o determinante da matriz simbólica M

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

15.2.VARIÁVEIS SIMBÓLICAS

Quando se trabalha com expressões simbólicas contendo mais de uma variável, uma variável é a variável independente. Se não for dito ao MATLAB qual variável é a independente, ele seleciona um baseado na regra seguinte: O caractere padrão escolhido é x. Se não existir x, aquele mais próximo 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)’ variável livre: x variável livre: x ‘3*y+z’ ‘a+sin(t)’ variável livre: y variável livre: t

21

15.2.1.ESPECIFICANDO A VARIÁVEL INDEPENDENTE % deriva em relação 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 relação a ‘omega’ » diff('sin(omega)*a+t','omega') ans = cos(omega)*a

15.3.OPERAÇÕES ALGÉBRICAS PADRÃO
»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.OPERAÇÕES AVANÇADAS % expressão simbólica % soma de expressões simbólicas % multiplicação de expressões simbólicas % divisão de expressões simbólicas % encontra a expressão simbólica para f^3

» f='cos(x)'; g='sin(2*x)'; % cria funções simbólicas » 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.FUNÇÃO INVERSA

% encontra a expressão 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 função inv(x) calcula a inversa de x, seja x simbólico ou numérico. O inverso funcional é calculado pela função finverse(x). O inverso funcional, digamos f(x), é a expressão g(x) que satisfaz a condição 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')) % solução 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) % solução para ‘g(f(a))=a’

15.3.3.SOMATÓRIA DE SÉRIES

∑x
0

x −1

2

»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. FUNÇÕES DE CONVERSÃO

Serão apresentadas algumas funções que convertem expressões simbólicas em valores numéricos e vice-versa. Algumas funções simbólicas automaticamente convertem um número em sua representação simbólica caso ele seja um dos argumentos da função.
15.4.1.FUNÇÃO NUMERIC

A função sym pode receber um argumento numérico e converte em uma representação simbólica. A função numeric faz o contrário. Ele converte uma constante simbólica (expressão simbólica sem variáveis) em um valor numérico.
15.4.2.FUNÇÃO EVAL

Calcula uma string de caracteres. Dessa forma, eval é outra função que pode ser usada para converter uma constante simbólica em um número, ou calcular uma expressão.
» phi=sym('(1+sqrt(5))/2') » numeric(phi) % converte em valor um numérico ans = 1.6180 » eval(phi) ans = 1.6180 » poly2sym(n,'s') % recria o polinômio 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 polinômio em x ans =2*x^2+x^3-3*x+5

15.4.3.FUNÇÃO POLY2SYM X SYM2POLY

A função simbólica sym2poly converte um polinômio simbólico em seu vetor de coeficientes equivalente no MATLAB. A função poly2sym faz o inverso e possibilita especificar a variável a ser usada na expressão resultante.
15.5.SUBSTITUIÇÃO DE VARIÁVEIS

A função subs permite mudar a variável em uma expressão simbólica. O formato é subs(f,novo,antigo), sendo f uma expressão simbólica e novo e antigo caracteres ou outras expressões simbólicas.
» f='a*x^2+b*x+c'; » subs(f,'s','x') % substitui ‘x’ por ‘s’ na expressão f ans =a*s^2+b*s+c

15.6.DERIVAÇÃO

A derivação de uma expressão simbólica usa da função diff em uma dentre quatro formas:
» f='a*x^3+x^2-b*x-x'; % expressão simbólica » diff(f) % deriva em relação ao padrão (x) ans =3*a*x^2+2*x-b-1 » diff(f,'a') % deriva f em relação a ‘a’ ans =x^3 » F=sym('[a*x,b*x^2;c*x^3,d*x]');% matriz simbólica » diff(F) % deriva os elementos em relação 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 relação a ‘x’ » diff(M) %encontra a diferença 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 relação a ‘a’ ans =0

23

15.7.INTEGRAÇÃO

A função de integração int(f), onde f é uma expressão simbólica, tenta encontrar outra expressão simbólica F tal que diff(F)=f. A integral ou antiderivada talvez não exista em forma fechada, ou pode existir mas o software não consegue achá-la, ou o software pode achá-la eventualmente, mas não consegue terminar o cálculo por falta de memória ou tempo. Quando o MATLAB não pode encontrar a antiderivada, ele devolve o comando sem ser processado. Como a função de derivada, a função de integração tem mais de uma forma.
» f=sym('sin(s+2*x)'); %função simbólica » int(f) %integra em relação a x ans =1/2*cos(s+2*x) » int(f,'s') %integra em relação a s ans =-cos(s+2*x) » int(f,pi/2,pi) % integra em relação a x de π/2 a π ans =-cos(s) » int(f,'s',pi/2,pi) % integra em relação 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.FUNÇÃO SOLVE

Essa função avalia a o string de caracteres simbólicos com apenas uma variável para o valor, no qual a função é definida como igual a zero. A função solve(f), onde f é função 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.REPRESENTAÇÃO GRÁFICA DE EXPRESSÕES SIMBÓLICAS

A função ezplot traça o gráfico de uma função simbólica dada no domínio –2*π ≤ t≤ 2*π e escala o eixo y de forma adequada.
» y=sym('-5*t^2+20*t+30'); » ezplot(y) % cria um gráfico a partir da função »ezplot(y,[0 6]) % cria o gráfico e limita o eixo

15.10.FORMATAÇÃO E SIMPLIFICAÇÃO DE EXPRESSÕES

Às vezes, o MATLAB retorna uma expressão simbólica que é difícil de ler. Entretanto, há diversas ferramentas disponíveis para ajudar a tornar a expressão mais legível.
15.10.1.FUNÇÃO PRETTY

Tenta exibir uma expressão simbólica de forma semelhante as dos livros de matemática. » 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 expressões simbólicas podem ser apresentadas em muitas formas equivalentes. Algumas formas podem ser preferíveis a outras em diferentes situações. 24

%cria uma função » f=sym('(x^2-1)*(x-2)*(x-3)') f =(x^2-1)*(x-2)*(x-3) %reúne todos os termos semelhantes » collect(f) ans = x^4-5*x^3+5*x^2+5*x-6 %muda para a representação aninhada » horner(ans) 15.10.2.FUNÇÃO SIMPLIFY ans =-6+(5+(5+(-5+x)*x)*x)*x

%representa como um produto de polinômios » 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 utilização geral, que tenta simplificar uma expressão pela aplicação de muitos tipos diferentes de identidades algébricas envolvendo somas, potências inteiras e fracionárias, funções trigonométricas, exponenciais, logarítmicas, funções de Bessel, hipergeométricas e gama.
15.10.3. FUNÇÃO SIMPLE

É uma das mais poderosas, mas a menos ortodoxa de todas as ferramentas de simplificação. A função simple tenta usar várias ferramentas diferentes de simplificação e seleciona a forma que tem o menor número de caracteres na expressão resultante. Algumas vezes é útil usar simple mais de uma vez, a fim de tentar uma operação de simplificação 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) % serão 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.FRAÇÕES PARCIAIS

As funções simbólicas do MATLAB podem ser usadas para converter uma expressão simbólica em sua representação fracionária parcial. Dado um polinômio racional f, int(f) integrará a função e geralmente separará os termos. Então, diff(ans) derivará cada termo a fim de obter a expressão original f na forma de uma soma de termos, que é a representação de função em frações parciais.
» y=sym('(10*s^2+40*s+30)/(s^2+6*s+8)');
% encontra a representação fracionária 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 editoração eletrônica. Esse comando retorna o código LaTeX necessário para criar a expressão que você fornecer e pode ainda armazenar o código LaTeX em um arquivo. O comando fortran produz o código da linguagem de programação FORTRAN.
» f = taylor(sym('log(1+x)') ); » latex(f) % produz o código LaTeX da função
ans =x-1/2\,{x}^{2}+1/3\,{x}^{3}-1/4\,{x}^{4}+1/5\,{x}^{5}

25

% produz o código fortran da expressão simbólica f » fortran(f) ans = t0 = x-x**2/2+x**3/3-x**4/4+x**5/5

15.13.INSTRUÇÃO DIGITS

O Matlab se baseia exclusivamente na aritmética de ponto flutuante do computador para o processamento dos números. Embora sejam rápidas, as operações de ponto flutuante são limitadas pelo número máximo de dígitos e podem introduzir erros de arredondamento em cada operação; elas não podem produzir resultados exatos. A precisão relativa das operações aritméticas individuais em Matlab é cerca de 16 dígitos de precisão a menos que se redefina o número de dígitos (n) pela instrução digits(n). A conseqüência do aumento do número de dígitos é o aumento do tempo total de processamento, embora a visualização dos resultados não seja alterada. A instrução vpa permite visualizar os dados na precisão desejada.
» format long » pi ans = 3.14159265358979 » digits Digits = 16 » vpa('pi') % precisão digits (16) ans =3.141592653589793 » digits(20) » vpa('pi') % precisão digits (20) ans =3.1415926535897932385 » vpa('pi',30) % apresenta o resultado com 30 dígitos 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.RESOLUÇÃO DE EQUAÇÕES

O Matlab permite resolver equações simbólicas usando-se ferramentas simbólicas. Se a expressão não for uma equação (não contiver um sinal de igualdade), a função solve define a expressão simbólica como sendo igual a zero antes de resolvê-la.
» solve('a*x^2+b*x+c') % raízes da equação 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.EQUAÇÕES DIFERENCIAIS

A função dsolve encontra soluções simbólicas para equações diferenciais ordinárias. A sintaxe de dsolve é um pouco diferente da maioria das outras funções. As equações são definidas usando-se a letra D para significar derivação e D2 e D3 etc. para significar derivações repetidas. Quaisquer letras após D maiúsculo são consideradas variável dependente. A equação d2y/dx=0 é representada pela expressão simbólica D2y=0. A variável independente pode ser especificada ou então será tomada pelo padrão seguindo-se a regra do symvar.

26

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

% encontra a solução geral para dy/dt=1+y2 % C1 é uma constante de integração

» y=dsolve('Dy=1+y^2','y(0)=1') % adiciona uma condição incial y =tan(t+1/4*pi) » dsolve('Dy=1+y^2','y(0)=1','v') ans =tan(v+1/4*pi) % especifica a variável independente dy/dv

15.15.1.EQUAÇÕES DIFERENCIAIS DE SEGUNDA ORDEM

Considere a equação 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 equação 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.EQUAÇÕES DIFERENCIAIS MÚLTIPLAS

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 SIMBÓLICAS

Matrizes e vetores simbólicos são conjuntos cujos elementos são expressões simbólicas.

27

» A=sym('[a b c;b c a;c a b]') % matriz simbólica 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 simbólica 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 simbólica 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.RESOLUÇÃO 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 simbólico A*X=B X =[ 16] [ 8] [ 3] [ 15]

15.17.TRANSFORMADAS
15.17.1.TRANSFORMADA DE LAPLACE

A função laplace(f) transforma f(t), no domínio do tempo, em F(s), no domínio s. A expressão pode ser novamente transformada no domínio 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)) são utilizadas para determinar as características de um sistema em ambos os domínios de tempo e freqüência
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 número complexo. A transformada z e a transformada z inversa são obtidas usando-se as funções 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 função pode representar a área sob a curva da função e ser aproximada em um intervalo fechado usando-se as somas de Riemann. O Matlab possui uma ferramenta interativa que lhe permite observar aproximações diferentes da integral usando essa técnica. A forma da função é rsums(f), onde f é uma função simbólica. Ela fará aparecer uma janela gráfica, em que a área sob a curva da função de 0 a 1 será aproximada por 10 retângulos. O título exibe a função e a área total dos retângulos calculada . Sob o gráfico está um deslizador horizontal que lhe permite mudar o número de retângulos 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 % aproximação de Riemann de 0 a 1 »rsums(f)

15.19.CALCULADORA DE FUNÇÕES
Esta ferramenta é uma calculadora de funções gráficas interativas, chamada funtool, que usa o clique do mouse para efetuar cálculos em expressões simbólicas; funtool manipula duas funções de uma variável (f(x) e g(x)) e traça os gráficos das duas um janelas separadas. Uma terceira janela controla a calculadora e contém as funções simbólicas f e g, o domínio em x dos gráficos e uma expressão ‘a’ constante que pode ser alterada digitando em caixas de texto. Há três linhas de teclas sob a caixa de textos, que invocam as funções simbólicas do MATLAB, e uma quarta linha de teclas para controlar a própria calculadora. A tecla Help fornece informações mais detalhadas sobre funtool. A tecla Close fecha a janela da função.

15.20.HELP DA MATEMÁTICA SIMBÓLICA
Para saber mais função simbólica consulte Help simbolic.

16.TÓPICOS EXTRAS

29