apostila matlab.pdf

Embed Size (px)

Citation preview

  • 1

    INTRODUO AO MATLAB

    30 e 31 de Maio de 2006.

    FEIS-UNESP

    Profa. Dra. Erica Regina Marani Daruichi Machado Guilherme Borges Moreira

  • 2

    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, a+b + 5+3 Subtrao a-b - 23-12 Multiplicao a*b * 3.14*0.85Diviso a b / ou \ 56/8=8\56Potenciao ab ^ 5^2

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

    8/56 ans = 0.1429

  • 3

    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 devem ser palavras nicas, sem incluso de espaos;

    N=1; N1=1; N_a=1

    os nomes das variveis devem comear com uma letra, seguida de um nmero qualquer de letras, algarismos ou sublinhas.

    A12345=10 Rua_2=12 123_rua

    as variveis so sensveis a maisculas e minsculas;

    A=3; a=5 ;

    B=A+a

    caracteres de pontuao no so permitidos.

    A!=3 A1&3=2

    podem conter at 19 caracteres

    abcdefgj=1

    no necessrio declarar a varivel A=3.32+i

    se uma instruo for muito longa, coloque (...) seguidas de .

    N=1+x2...

    +2*x+3

    3.2.VARIVEIS ESPECIAIS O MATLAB tem diversas variveis especiais

    Ans Nome de uma varivel padro usada para resultados

    NAN No-nmero E: 0/0

    Pi Razo entre o permetro da circunferncia e seu dimetro

    i e j 1ji == eps Menor nmero que, somado a 1, cria um

    nmero de ponto flutuante maior que 1 no computador.

    Realmin Menor nmero real positivo utilizvel

    Inf Infinito, 1/0. Realmax Maior nmero real positivo utilizvel

    3.3.REDEFINIO DE VARIVEIS

    3.3.1. O COMANDO DE ATRIBUIO AUTODESTRUTIVO.

    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

    3.3.2. EXCLUSO MANUAL

    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

    a=3 a = 3 c=a+b c =5

    a=3.21+i a = 3.2100 + 1.0000i b=2 b = 2

    clear a c=a+b ??? Undefined function or variable 'a'.

  • 4

    3.3.3. LISTA DE VARIVEIS

    Para listar todas as variveis utilizadas na who Your variables are: b

    rea de trabalho digite o comando who.

    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

    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.

    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.

    4.4.HELP DA BARRA DE MENU Na barra de menus do MATLAB selecione o menu Help e verifique as opes.

  • 5

    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) valor absoluto ou mdulo de um no acos(x) arco cosseno acosh(x) arco cosseno hiperblico angle(x) ngulo de um no complexo asin(x) arco seno asinh(x) arco seno hiperblico atan(x) arco tangente atan2(x,y) arco tangente em quatro quadrantes ceil(x) arredondar para mais infinito conj(x) conjugado complexo cos(x) cosseno cosh(x) cosseno hiperblico exp(x) exponencial fix(x) arredondar par zero floor(x) arredondar para menos infinito imag(x) parte imaginria de um no complexo log10 logaritmo na base 10 log(x) logaritmo natural real(x) parte real de um no complexo sqrt(x) raiz quadrada rem(x,y) resto da diviso de x por y round(x) arredondar para o prximo no inteiro sing(x) retorna o sinal do argumento sin(x) seno sinh(x) seno hiperblico tanh(x) tangente hiperblica tan(x) Tangente

    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

    format short 34.5667 Apresentao padro format long 34.56666666666666 16 dgitos format short e 3.4567e+001 5 dgitos mais expoente format long e 3.456666666666666e+001 16 dgitos mais expoente format hex 4041488888888888 hexadecimal format bank 34.57 duas casas decimais format rat 1037/30 aproximao racional

    O Matlab no altera a representao interna de um nmero quando optamos por diferentes formatos, somente a visualizao alterada.

    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

    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 Retorna uma listagem de todos os arquivos M do diretrio dir, ls Lista todos os arquivos do diretrio type nome Mostra o arquivo M nome.m na janela de comandos delete nome Exclui o arquivo M nome.m cd, chdir caminho Muda para o diretrio dado por caminho cd, pwd Mostra o diretrio de trabalho atual which nome 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 Vetor coluna

    x=[3,2,1,5,6] x = 3 2 1 5 6

    x=[3 2 1 5 6] x = 3 2 1 5 6 7

    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 comea em x0, incrementa de inc e termina em xf. Os valores podem ser assumidos em forma decrescente. Quando o incremento inc no especificado explicitamente, ele assume o valor 1.

    y=0:0.1:0.5 y = 0 0.1000 0.2000 0.3000 0.4000 0 .5000

    y=1:5 y = 1 2 3 4 5

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

  • 7

    8.1.3. LEITURA DE VETOR

    x=input('') % Leitura de um vetor via teclado [1 2 3 4 5 6] x = 1 2 3 4 5 6

    8.1.4. ENDEREAMENTO

    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(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

    y(3) ans = -1

    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 2 1 2 3 d=[a(1:2:4) 5 5 5] d = -1 1 5 5 5 a-2 ans = -3 -2 -1 0 5*a-3 ans = -8 -3 2 7

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

    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 Columns 8 through 12 0 0.2856 0.5712 0.8568 1.1424 1.4280 1.7136 1.9992 2.2848 2.5704 2.8560 3.1416

  • 8

    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 Columns 8 through 1 1.0000 1.5849 2.5119 3.9811 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

    %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 (Ax-b=0) (soluo dos mnimos quadrados)

    % Caso subdeterminado x=(pinv(A)*B)' x = -46.3333 105.6667 -21.6667 %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 soluoque tem zero para alguns elementos de x.

    % 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 %Multiplicao de Matrizes Y=A*B Y = 2089 4591 2404

  • 9

    8.2.3. MANIPULAO MATRICIAL

    A(3,2)=0 % altera o elemento da linha 3 A = % e coluna 2 de 8 para 0 1 2 3 4 5 6 7 0 9 A(2,5)=1 % coloca 1 na segunda linha A = % e na quinta coluna.Como 1 2 3 0 0 % a matriz A no tem cinco 4 5 6 0 1 % colunas, o tamanho de A 7 0 9 0 0 % aumentado conforme % necessrio e A % preenchida com zeros.

    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])] %matriz A e todas asC = % linhas da matriz B 1 2 3 7 9 %das colunas 1 e 3 4 5 6 4 6 7 8 9 1 3

    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 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 0 1 0 0 1 0 0 1 0 0

    %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 % 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) % retorna o no de linhasans = 4 % ou o no de colunas, % o que for maior. %encontrar elementos especficos % acha os subscritos (posio) onde a expresso relacional verdadeira 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

  • 10

    Caractersticas da funo plot:

    escolhe automaticamente os limites dos eixos, marcar os pontos individuais e desenha linhas retas entre eles.

    plota mltiplos conjuntos de dados nos mesmos eixos; utiliza diferentes tipos de linhas; marca somente os pontos de dados sem interliga-los; linhas de grade; coloca nomes nos eixos e ttulos; usa cores distintas para diferentes curvas

    9.1.1. ESTILOS DE LINHA, MARCADORES E CORES

    Smbolo Cor Smbolo Tipo de linha y amarelo . ponto m magenta o crculo c ciano x x-marca r vermelho + mais g verde * asterisco b azul - linha contnua w branco : linha pontilhada k preta -. traos e pontos

    -- linha tracejada

    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 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 posio do cursor (d um clique na posio desejada) gtext('cos(x)')

    Os textos seno, cos podem ser introduzidos diretamente na figura, assim como a espessura das linhas.

    x=linspace(0,2*pi,30); y=sin(x); plot(x,y)

    Como exemplo inicial, ser ilustrado a funo seno no intervalo [0,2] com 30 pontos.

  • 11

    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 axis equal (equal) define os fatores de escalamento para ambos os eixos com sendo iguais

    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)')

  • 12

    9.6.OUTRAS CARACTERSTICAS

    loglog Mesmo que o plot mas as duas escalas so logartmicas semilog Escala logartmica para o eixo x e linear para y semilogy Escala logartmica para o eixo y e linear para x polar(t,r,s) Coordenadas polares,t vetor ngulo em radianos, r o vetor raio, s descreve cor,

    marcadores bar(x,y) Grfico de barras stairs(x,y) Grfico escada hist(y,n) Desenha um histograma com n divises do vetor y. hist(y,x) Desenha um histograma usando as divises especificadas no vetor x. hist(y) Faz um histograma de dez divises para os dados do vetor y rose(t) Desenha um histograma polar com 20 divises para os ngulos do vetor t. (t,n), (t,x) stem(y) Cria um grfico dos pontos de dados de y conectado ao eixo horizontal por uma linha stem(x,y) Cria um grfico de pontos de dados de y nos valores especificados em x. [x,y]=ginput(n)

    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

    fplot(fun,[xmim max])

    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.

    Figura 2

    % 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'); % hastes subplot(3,2,5); 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

  • 13

    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. ( ) 221y2y2x535x2x21y2 ye31eyx10ex12yxf = ++ )()()(),(

  • 14

    Voc pode especificar o tamanho da matriz quadrada de dados gerada por peaks passando-lhe 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.

  • 15

    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) % Indica o valor mnimo e o minimo = 0 -1 10 % local onde ocorreuq = 21 1 1

    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

    11.2.OPERAES COM POLINMIOS

    -1.2251 - 1.4672i

    pp=poly(r) pp = 1.0000 -12.0000 -0.0000 25.0000 116.0000

    a=[1 2 3 4]; b=[1 2 9 16]; s=a+b % adio s = 2 4 12 20

    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

    % Multiplicao polinomial c=conv(a,b) % convoluo c = 1 4 16 44 67 84 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')

  • 16

    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 % 03170x129320x81089y 2 ... += 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.

  • 17

    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

  • 18

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

    % 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

    apresentacao

    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

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

    %%%%%%% programa loopfor_2.m dados=[ 3 9 45 6; 7 16 -1 5]; for n=dados x=n(1)-n(2)

    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:

    end

    Qualquer conjunto vlido Matlab aceitvel no loop for.

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

    while expresso Comandos end

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

  • 19

    13.3.IF-ELSE-END Em diversas situaes, as seqncias de comandos tm de ser executadas condicionalmente, com

    base em um teste relacional.

    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, encontram-se 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.

    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 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 = 1 2 3 becomes 3 2 1 % 4 5 6 6 5 4 if ndims(x)~=2, error('X must be a 2-D matrix.'); end [m,n] = size(x); y = x(:,n:-1:1);

    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

    if condio Comandos end

    if condio Comandos_v else Comandos_f end

    if condio_1 comandos_1 elseif condicao_2 comandos_2 elseif condicao_3 comandos_3 else if else Comandos end

    %%% programa ifthen_1.m idade=input('Digite a idade: ') if idade14 & idade18 & idade

  • 20

    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.

  • 21

    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)) varivel livre: x 3*y+z varivel livre: y sin(pi/4)-cos(3/5) varivel livre: x a+sin(t) varivel livre: t

  • 22

    15.2.1.ESPECIFICANDO A VARIVEL INDEPENDENTE

    % deriva em relao a n diff('sin(omega)*a+t') diff('x^n','n') ans = 1 ans = x^n*log(x) % deriva em relao a omega

    diff('sin(omega)*a') diff('sin(omega)*a+t','omega') ans = cos(omega)*a ans = cos(omega)*a

    15.3.OPERAES ALGBRICAS PADRO 15.3.1.OPERAES AVANADAS

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

    f='cos(x)'; g='sin(2*x)'; % cria funes simblicas % encontra a expresso para f(g(x)) compose(f,g) symop(f, '/',g,'+',3) % combina as duas ans =1/(1+sin(x)^2) ans =cos(x)/sin(2*x)+3 %dados h(u), k(v),encontre h(k(v))

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

    15.3.2.FUNO INVERSA

    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')) finverse(sym('a*x+b')) % soluo para g(f(x))=x ans =x

    finverse(sym('1/x')) % o inverso de 1/x 1/x ans =-(b-x)/a ans =1/x % j que 1/(1/x) =x

    t=sym('a*b+c*d-a*z') t =a*b+c*d-a*z finverse(sym('x^2')) Warning: finverse(x^2) is not unique. finverse(t,'a') ans = x^(1/2) ans =-(c*d-a)/(b-z) % soluo para g(f(a))=a

    15.3.3.SOMATRIA DE SRIES f=sym('(2*n-1)^2');

    1x0

    2x n0

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

    ans =1/3*n*(2*n-1)*(2*n+1)

  • 23

    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.

    15.4.3.FUNO POLY2SYM X SYM2POLY

    phi=sym('(1+sqrt(5))/2') f=sym('2*x^2+x^3-3*x+5'); numeric(phi) % converte em valor um numrico n=sym2poly(f) % extrai o vetor de coeficientes ans = 1.6180 n = 1 2 -3 5 eval(phi) ans = 1.6180 poly2sym(n) % recria o polinmio em x poly2sym(n,'s') % recria o polinmio em s ans =2*x^2+x^3-3*x+5 ans =s^3+2*s^2-3*s+5

    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 F=sym('[a*x,b*x^2;c*x^3,d*x]');% matriz simblica diff(F) % deriva os elementos em relao a x

    diff(f) % deriva em relao ao padro (x) ans =[ a, 2*b*x] ans =3*a*x^2+2*x-b-1 [ 3*c*x^2, d] diff(f,'a') % deriva f em relao a a M=[(1:8).^2] % cria um vetor ans =x^3 M = 1 4 9 16 25 36 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

  • 24

    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,'s',pi/2,pi) % integra em relao a s de /2 a int(f) %integra em relao a x ans =-1/2*cos(s+2*x)

    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,'s') %integra em relao a s int(f) % integra os elementos de um conjunto

    ans =-cos(s+2*x) int(f,pi/2,pi) % integra em relao a x de /2 a

    ans =[ 1/2*a*x^2, 1/3*b*x^3] ans =-cos(s) [ 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'); ans =[ 1/2+1/6*141^(1/2)] [ 1/2-

    1/6*141^(1/2)] solve(v) %encontrar o valor de t quando v(t)=0 numeric(ans) ans =2 ans = 2.4791 -1.4791

    15.9.REPRESENTAO GRFICA DE EXPRESSES SIMBLICAS

    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.

    As expresses simblicas podem ser apresentadas em muitas formas equivalentes. Algumas

    formas podem ser preferveis a outras em diferentes situaes.

    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

    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)

  • 25

    15.10.2.FUNO SIMPLIFY

    %representa como um produto de polinmios %cria uma funo factor(ans) f=sym('(x^2-1)*(x-2)*(x-3)')

    f =(x^2-1)*(x-2)*(x-3) ans =(x-1)*(x-2)*(x-3)*(x+1)

    %rene todos os termos semelhantes expand(f) % distribui o produto nas somas collect(f) ans =x^4-5*x^3+5*x^2+5*x-6 ans = x^4-5*x^3+5*x^2+5*x-6 %muda para a representao aninhada horner(ans) ans =-6+(5+(5+(-5+x)*x)*x)*x

    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)')) f=sym('(1/x^3+6/x^2+12/x+8)^(1/3)'); simple(f) % sero apresentadas algumas ans =log(2)+log(x/y) ans = (2*x+1)/x %passagens antes do resultado simplify(sym('sin(x)^2+3*x+cos(x)^2-5')) simple(ans) ans =-4+3*x

    ans =2+1/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)'); g='(x^3+5)/(x^2-1)'; % encontra a representao fracionria de y diff(int(g)) diff(int(y)) ans = x+3/(x-1)-2/(1+x) ans =10-15/(s+4)-5/(s+2) pretty(ans) 3 2 pretty(ans) x + ----- - -----

    x - 1 1 + x

    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}

  • 26

    % 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 vpa('pi') % preciso digits (20) pi ans =3.1415926535897932385 ans = 3.14159265358979

    vpa('pi',30) % apresenta o resultado com 30 dgitos digits ans =3.14159265358979323846264338328 Digits = 16 A=sym('[1/4,log(sqrt(2));exp(1),3/7]'); vpa('pi') % preciso digits

    (16) vpa(A,8) ans =3.141592653589793 ans = [ .250000000000000000, .346573590279972655] digits(20) [ 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 e1='d+(c+u)/2=v'; e2='u=c+d+v-10'; ans =[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] e3='v+d=u+c/4'; e4='v+u=c+8*d-1'; [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))] [x1,x2,x3,x4]=solve(e1,e2,e3,e4,'u,c,d,v') solve('a*x^2+b*x+c', 'b') % resolve para b x1 =8 ans =-(a*x^2+c)/x x2 =3

    x3 =16 f=solve('cos(x)=sin(x)') x4 =15 f =1/4*pi

    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.

  • 27

    dsolve('Dy=1+y^2') % encontra a soluo geral para dy/dt=1+y2 ans = tan(t+C1) % 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') % especifica a varivel independente dy/dv

    ans =tan(v+1/4*pi)

    15.15.1.EQUAES DIFERENCIAIS DE SEGUNDA ORDEM

    Considere a equao de segunda ordem 2)0(y,0)0(dtdy,y)t2cos(

    dtyd2 ===

    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 1)1(y,0)0(y,0y3dtdy2

    dtyd2

    2

    ===

    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

    1)0(g,0)0(f,g3f4dtdg,g4f3

    dtdf ==+=+=

    [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)

    32dt

    dy,22

    y),tcos(4ydt

    yd2

    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.

  • 28

    A=sym('[a b c;b c a;c a b]') % matriz simblica

    H=sym(hilb(3)) % matriz simblica de Hilbert H = [ 1, 1/2, 1/3]

    A =[ a, b, c] [ 1/2, 1/3, 1/4] [ b, c, a] [ 1/3, 1/4, 1/5] [ c, a, b] J=inv(H) % inversa da matriz simblica determ(A) % determinante J =[ 9, -36, 30] ans =3*a*c*b-a^3-b^3-c^3 [ -36, 192, -180]

    [ 30, -180, 180]

    F=sym('[1/2,1/4;1/4,1/2]'); jordan(F) eigensys(F) % autovalores ans =[ 1/4, 0] ans =[ 1/4] [ 0, 3/4] [ 3/4] G=symop(F,'+','t') % soma t diagonal de F G =[ 1/2+t, 1/4+t] [V,E]=eigensys(F) %autovalores E e autovetores B

    [ 1/4+t, 1/2+t]

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

    15.16.1.RESOLUO DE SISTEMAS LINEARES

    Considere o sistema:

    =+==++=++

    1vd8cu10vdcu

    0vd2cu

    0vd2c

    2u

    % 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,

    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)

    15.17.2.TRANSFORMADA DE FOURIER

    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

    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)

    15.17.3.TRANSFORMADA Z

    f=sym('2^n/7-(-5)^n/7');

    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).

    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

  • 29

    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