SlideShare ist ein Scribd-Unternehmen logo
1 von 74
Downloaden Sie, um offline zu lesen
Universidade Federal de São João Del-Rei
        Campus Alto Paraopeba


      Disciplina: Cálculo Numérico


           Apostila de Matlab




       Prof. Alexandre Cândido Moreira
       Prof. Heber Tormentino de Sousa




                 Agosto de 2010
_______________________________________________________________________________
                                   SUMÁRIO

1. INTRODUÇÃO                                                                  4
1.1 Vantagens do Matlab                                                        4
1.2 Desvantagens do Matlab                                                     5

2. O AMBIENTE MATLAB                                                           5
2.1 Comand Window                                                              6
2.2 Workspace                                                                  6
2.3 Current Directory                                                          7
2.4 Command History                                                            8

3. COMANDOS BÁSICOS E DECLARAÇÕES DE VARIÁVEIS                                 8

4. OPERAÇÕES ARITMÉTICAS                                                       8

5. EXIBINDO DADOS DE SAÍDA                                                    9
5.1 O Comando disp                                                           10

6. OPERADORES LÓGICOS                                                        12

7. OPERADORES RELACIONAIS                                                    12

8. CÁLCULO MATRICIAL                                                         13
8.1 Elementos de uma Matriz                                                  13
8.2 Soma e Subtração                                                         14
8.3 Multiplicação de uma Matriz por um Escalar                               15
8.4 Multiplicação entre Matrizes                                             15
8.5 Divisão Direta de Matrizes                                               16
8.6 Potênciação                                                              16
8.7 Transposta de uma Matriz                                                 17
8.8 Determinante                                                             17
8.9 Inversa da Matriz                                                        18
8.10 Autovalores e Autovetores                                               18
8.11 Matriz escalonada reduzida                                              19
8.12 Posto de uma Matriz                                                     19
8.13 Números e Matrizes Complexas                                            20
8.14 Matriz diagonal ou diagonal de uma matriz                               21
8.15 Matrizes Triangulares                                                   21
8.16 Matriz Identidade                                                       22
8.17 Matriz Composta por Elementos Unitários                                 22
8.18 Matriz Nula (composta por elementos nulos)                              23
8.19 Matriz Aleatória                                                        23
_______________________________________________________________________________ 2
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
9. GERANDO VETORES                                                           24
9.1 O Comando linspace                                                       25

10. ARQUIVOS M DE COMANDOS                                                   26

11. CONTROLE DE FLUXO                                                        28
11.1 Laço For                                                                28
11.2 Laço While                                                              29
11.3 Estrutura If-Else-End                                                   30
11.4 Estrutura Switch-Case                                                   32

12. ARQUIVOS M DE FUNÇÕES                                                    33

13. GRÁFICOS NO MATLAB                                                       35
13.1 Gráficos 2-D                                                            35
13.2 Estilos de Linhas e Símbolos                                            38
13.3 Coordenada Polar e Gráfico de Barras                                    40
13.4 Gráficos 3-D                                                            42
13.5 Anotações no Gráfico                                                    48

14. POLINÔMIOS                                                               49
14.1 Raízes                                                                  49
14.2 Multiplicação                                                           50
14.3 Adição                                                                  51
14.4 Divisão                                                                 51
14.5 Cálculo de Polinômios                                                   52
14.6 Derivada de Polinômios                                                  52
14.7 Derivada de um Produto de Polinômios                                    52
14.8 Derivada de um Quociente de Polinômios                                  53

15. LISTA DE FUNÇÕES DO MATLAB                                               54

16. REFERÊNCIAS BIBLIOGRÁFICAS                                               74




_______________________________________________________________________________ 3
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
1. INTRODUÇÃO
      MATLAB (abreviatura de Matrix Laboratory – Laboratório de Matrizes) é um
programa d ecomputador de uso específico, otimizado para executar cálculos científicos e
de engenharia. Ele nasceu como um programa para operações matemáticas sobre
matrizes, mas ao longo dos anos transformou-se em um sistema computacional flexível
capaz de resolver essencialmente qualquer problema técnico.
      Seus elementos básicos são matrizes que não requerem dimensionamento. Ele
permite    implementar e         resolver problemas matemáticos muito mais                rápida e
eficientemente que através de outras linguagens como C, Basic, Pascal ou Fortran.
      O MATLAB possui uma família de aplicativos específicos (“toolboxes”), que são
coleções de funções usadas para resolver determinados problemas tais como:
otimização, manipulação algébrica, redes neurais, processamento de sinais, simulação de
sistemas dinâmicos, entre outros.
      Provavelmente, a característica mais importante do MATLAB é a sua extensibilidade,
que permite que engenheiros, matemáticos cientistas, e até mesmo você, contribuam
para o enriquecimento.

1.1   Vantagens do Matlab
      O Matlab tem muitas vantagens, em comparação com linguagens computacionais
convencionais, para resolver problemas técnicos. Entre elas, temos:
          a) Facilidade de uso: o Matlab é uma linguagem interpretada, assim como muitas
              versões de Basic.
          b) Independência           de   Plataforma:   tem   suporte   em   diferentes   sistemas
              computacionais: Windows XP/Vista, Linux, diversas versões de Unix e
              Macintosh.
          c) Funções Predefinidas: conta com uma grande biblioteca de funções
              predefinidas, que apresentam soluções testadas e empacotadas para diversas
              tarefas técnicas básicas
          d) Desenhos Independentes de Dispositivos: diferente da maioria das linguagens
              de computador, o Matlab tem muitos comandos para desenhos e imagens,
              que podem ser exibidos em qualquer dispositivo de saída gráfica compatível
              com o computador que executa o Matlab. Este recurso torna o Matlab uma
              ferramenta excepcional para visualização de dados técnicos.



_______________________________________________________________________________ 4
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
        e) Interface Gráfica de Usuário: tem ferramentas que permitem a um
              programador construir interativamente uma interface gráfica de usuário (GUI –
              Graphical User Interface) para seus programas. Com este recurso, o
              programador é capaz de projetar programas sofisticados de análise de dados,
              os quais podem ser operados por usuários relativamente inexperientes.

1.2   Desvantagens do Matlab


      O Matlab tem duas desvantagens principais. Primeiro, é uma linguagem interpretada,
por isso pode ser mais lento que linguagens compiladas. Esse problema pode ser
diminuído pela estruturação apropriada dos programas Matlab para otimizar o
desempenho do código vetorizado.
      A segunda desvantagem é o custo: uma cópia completa do Matlab é de cinco a dez
vezes mais cara que um compilador convencional C ou Fortran.

2. O AMBIENTE MATLAB


      A unidade fundamental de dados em qualquer programa Matlab é a matriz, que é
uma coleção de valores de dados organizados em linhas e colunas, determinada por um
nome único. Até mesmo escalares são tratados como matrizes em Matlab, eles são
simplesmente matrizes co apenas uma linha e uma coluna.
      No Matlab, os arquivos de comando tem extensão .m (M-files) e os arquivos de
dados binários default tem extensão .mat (Mat-files).
      No Windows, o Matlab é instalado com os seguintes diretórios:
      BIN               contém os programas binários do Matlab;
      DEMOS             demonstração em HTML
      EXTERN            suporte às linguagens FORTRAN, C e C++
      HELP              contém arquivos de auxílio e documentação do Matlab
      JAVA              suporte à linguagem Java
      NOTEBOOK suporte à geração de documentação no formato MS-Word
      TEMP              diretório temporário
      TOLLBOX           “toolboxes” do Matlab
      WORK              diretório de trabalho.




_______________________________________________________________________________ 5
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




 Figura 1 – Ambiente Matlab janelas: “Comand Window”, “Workspace”, “Current Directory” e “Command History”.


2.1    Comand Window

      • É a área de trabalho onde os comandos (as instruções) são digitados;
      • As operações podem ser realizadas e seus resultados são mostrados;
      • Também é nessa janela que se pode executar um arquivo m-file;
      • O prompt “>>” indica que o programa está pronto aguardando uma instrução;
      • Com as teclas “↑” (seta para cima) e “↓” (seta para baixo) é possível recuperar
         todos os comandos já digitados.

2.2    Workspace




                                       Figura 2 – Janela “Workspace”.

_______________________________________________________________________________ 6
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
   • É a área na qual são exibidas todas as variáveis definidas na área de trabalho;
      • Essa janela possui quatro colunas indicando o nome, dimensão, número de bytes e
         a classe de cada variável;
      • As variáveis podem ser editadas e visualizadas nessa própria janela, basta dar um
         click-duplo para editá-las;
Há um menu flutuante que é possível:
      • Open – abrir a janela;
      • Graph – criar gráficos a partir dos dados contidos na variável;
      • Select All – selecionar todas as variáveis;
      • Import Data – importar variáveis de um arquivo para o workspace;
      • Save Selection As – salvar as variáveis selecionadas em um arquivo;
      • Save Workspace As – salvar todas as variáveis do workspace em um arquivo;
      • Copy – copiar a variável para a área de transferência de dados do Windows;
      • Delete – apagar a variável do workspace;
      • Clear Workspace – apagar todas as variáveis do workspace;
      • Rename – renomear a variável.


2.3     Current Directory


       Área onde é exibida uma lista dos arquivos contidos no diretório corrente.




                                     Figura 3 – Janela “Current Directory”.




_______________________________________________________________________________ 7
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
2.4 Command History


      Área onde ficam armazenadas todas as instruções executadas no MATLAB.




                                      Figura 4 – Janela “Command History”.

3. COMANDOS BÁSICOS E DECLARAÇÕES DE VARIÁVEIS


      Para iniciar o nosso trabalho no MATLAB é necessário aprender alguns comandos
essenciais da janela de trabalho (command window) e na seqüência vamos aplicá-los.
                                    Tabela 1 – Comando Básicos.
               who       Mostra as variáveis do espaço de trabalho
               whos      Mostra as variáveis do espaço de trabalho com detalhes
               clear     Limpa a memória do espaço de trabalho
                clc      Limpa a tela
                dir      Mostra o conteúdo do diretório que se encontra
                cd       Informa ou altera o diretório corrente
               what      Exibe os arquivos Matlab contidos no diretório



4. OPERAÇÕES ARITMÉTICAS

      As expressões podem ser construídas usando os operadores aritméticos usuais:


                                     Tabela 2 – Operadores aritméticos.
                                            +         Adição
                                             -      Subtração
                                            *      Multiplicação
                                             /        Divisão
                                            ^      Potenciação




_______________________________________________________________________________ 8
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                 Figura 5 – Exemplos de operações aritméticas.



5. EXIBINDO DADOS DE SAÍDA


      O formato numérico exibido na tela pode ser modificado utilizando-se o comando
format, que afeta somente o modo como as matrizes são mostradas, e não como elas
são computadas ou salvas.
      Se todos os elementos das matrizes são inteiros exatos, a matriz é mostrada em um
formato sem qualquer ponto decimal. Por exemplo,
x = [-1 0 1]

resulta em:
x =
-1 0 1


      Se pelo menos um dos elementos da matriz não é inteiro exato, existem várias
possibilidades de formatar a saída. O formato "default", chamado de formato “short”,



_______________________________________________________________________________ 9
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
   mostra aproximadamente 4 dígitos decimais ou usam notação científica. Por exemplo, a
   matriz:
   x = [4/3 1.2345e-6]
         é mostrada , para cada formato usado, da seguinte maneira:
   x =

         1.3333       0.0000


         O formato-padrão pode ser alterado de duas maneiras: a partir da Janela de Menu
   Principal do Matlab ou pelo uso do comando “format”. O formato pode ser alterado pela
   seleção da opção “File>>Preferences>>Command Window”.
         Alternativamente, o usuário pode acionar o comando format para alterar as
   preferências. Este comando altera o formato-padrão de acordo com os valores dados na
   Tabela 3. O formato-padrão pode ser modificado para exibir mais dígitos significativos,
   para forçar a exibição em notação científica, exibir dados com dois dígitos decimais ou
   então eliminar linhas adicionais para que mais dados sejam visíveis por vez na Janela de
   comandos.
                                  Tabela 3 – Formatos de exibição de saída.
 Comando de Formatação                           Resultados                           Exemplo
format short                    4 dígitos decimais (formato-padrão)           12,3457
format long                     14 dígitos decimais                           12,34567890123457
format short e                  5 dígitos mais expoente                       1,2346e+001
format short g                  5 dígitos no total, com ou sem expoente       12,346
format long e                   15 dígitos mais expoente                      1,234567890123457e+0001
format long g                   15 dígitos no total, com ou sem expoente      12,3456789012346
format bank                     Formato monetário                             12,35
format hex                      Exibição hexadecimal de bits                  4028b0fcd32f707a
format rat                      Razão aproximada entre inteiros pequenos      1000/81

   5.1   O Comando disp
         O comando disp exibe o conteúdo de uma variável, mas, ocultando o nome da
   mesma, e/ou mostra strings na forma de textos. A formageral do comando disp é:
                   disp (nome de uma variável)        ou dsisp (‘string de texto’)


         Toda vez que um comando disp é executado, a saída que ele produz é mostrada
   numa nova linha. Por exemplo:
   % A variável A é inicializada com uma matriz 2x3
   A=[5 9 1; 7 2 4]

   A =

          5       9       1
          7       2       4

                                                                                 10
   _______________________________________________________________________________
   Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
% O comando disp é utilizado para exibir a matriz A

disp(A)
     5         9       1
     7         2       4

% O comando disp é utilizado para mostrar uma mensagem
disp('O problema não possui solução')
O problema não possui solução


      O código abaixo ensina como utilizar os comandos input e disp em uma rotina para
calcular a soma entre 3 números. Ao final da soma o a rotina exibe um texto juntamente
com o resultado da soma.




                                 Figura 6 – M-File implementado, Janela Editor.




                            Figura 7 – Algoritmo executando na Janela de Comandos.




                                                                              11
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
6. OPERADORES LÓGICOS


      Um operador lógico examina senteças verdadeiras/falsas e produz resultados
verdadeiro (1) ou falso (0), de acordo com a funcionalidade do operador. Por exemplo, o
operador lógico AND resulta 1 (verdadeiro) se, e somente se, todas as senteças
envolvidas na operação forem verdadeiras. Tanto os operadores lógicos quanto
relacionais podem ser utlizados em expressões matemáticas ou, como será visto adiante,
serem combinados a outros comando para controlar ou tomar decisão sobre o fluxo do
programa.


                                      Tabela 4 – Operadores lógicos.
                                       Símbolo       Operador
                                           &              e
                                           |             ou
                                           ~            não



7. OPERADORES RELACIONAIS


      O operador relacional compara dois números determinando se oresultado da sentça
de comparação é verdadeiro (V) ou falso (F). Por exemplo (5<8            V), ou seja, se a
senteça for verdadeira o valor retornado é 1. Caso contrário, o valor retornado é 0.


                                      Tabela 5 – Operadores lógicos.
                                     Símbolo         Operador
                                        <            menor que
                                       <=        menor ou igual que
                                        >            maior que
                                       >=        maior ou igual que
                                       ==               igual
                                       ~=             diferente


      Perceba que o operador relacional que testa a igualdade entre dois objetos é
representado por dois sinais de igualdade (==), sem espaço entre eles. Isso porque um
único sinal de igualdade representa o operador de atribuição. Os demais operadores
duplos (representados por dois caracteres) também não possuem espaços entre os
caracteres (<=, >=, ~=).



                                                                              12
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                Figura 8 – Exemplos com operadores relacionais.



8. CÁLCULO MATRICIAL


       As matrizes em Matlab podem ter uma ou mais dimensões. Matrizes unidimensionais
podem ser visualizadas como uma série de valores colcoados em uma linha ou em uma
coluna, como um único índice para selecionar os elementos individuais da matriz.
       O Matlab permite a criação de matrizes com tantas dimensões quanto necessário
para um dado problema. Essas matrizes têm um índice para cada dimensão, e um
elemento individual é selecionado pela especificação de um valor para cada índice.

8.1    Elementos de uma Matriz


       Elementos de uma matriz podem ser qualquer expressão do MATLAB. Por exemplo:
x=[-1.3 log(4.23^3) (1+2+3)/4*5]
x =

      -1.3000      4.3266       7.5000


       Elementos individuais de uma matriz podem ser referenciados com seus respectivos
índices entre parênteses. No exemplo anterior, para referenciar o segundo elemento do
vetor x:
x(2)

ans =

       4.3266

                                                                              13
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________

       Analogamente em uma matriz, com linha e coluna determinada tenho um elemento.
Seja:
x=[1 2 3;4 5 6;7 8 9]

x =

        1      2       3
        4      5       6
        7      8       9

>>

%% extrair o elemento da linha 2 e coluna 3
x(2,3)

ans =

        6


       Repare que a referência é sempre na forma matriz(linha,coluna).

8.2     Soma e Subtração


       Os símbolos + e - denotam adição e subtração de matrizes. A operação é definida
sempre que as matrizes tenham a mesma dimensão. Exemplo:
A = [1 2; 3 4]

A =

        1      2
        3      4


B=A'

B =

        1      3
        2      4

C=A+B

C =

        2      5
        5      8


       A adição e subtração também é definida quando um dos operandos for um escalar.
Exemplo:
D=C-2

D =

                                                                              14
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________

        0      3
        3      6




8.3   Multiplicação de uma Matriz por um Escalar
A

A =

        1      2
        3      4

2*A

ans =

        2      4
        6      8

D=3*A

D =

        3     6
        9    12


8.4   Multiplicação entre Matrizes


      A multiplicação de matrizes é indicada por "*". A multiplicação A*B é definida
somente se a segunda dimensão de A for igual à primeira dimensão de B, ou seja, o
número de colunas da primeira matriz for igual ao número de linhas da segunda
matriz. Assim a multiplicação pode ser executada como:
A

A =

        1      2
        3      4

B

B =

        1      3
        2      4

A*B

ans =

       5     11
      11     25


                                                                              15
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
8.5 Divisão Direta de Matrizes
     Existem dois símbolos para divisão de matrizes no MATLAB "" e "/". Se A é uma
matriz quadrada não singular, então AB e A/B correspondem respectivamente a inv(A)*B
e A*inv(B), por exemplo:
A=[1 2; 3 4]

A =

        1       2
        3       4

B=[5 6; 7 8]

B =

        5       6
        7       8

AB

ans =

      -3       -4
       4        5

A/B

ans =

      3.0000        -2.0000
      2.0000        -1.0000

%%divisão de elemento por elemento
A./B

ans =

      0.2000         0.3333
      0.4286         0.5000


8.6   Potênciação


      A expressão A^p eleva A à p-ésima potência e é definida se A é matriz quadrada e
p um escalar. Se p é um inteiro maior do que um, a potenciação é computada como
múltiplas multiplicações.
      Por exemplo:
A

A =

        1       2
        3       4

A^3

                                                                              16
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
ans =

       37    54
       81   118

%% potenciação de elementos por elementos
A.^3

ans =

        1     8
       27    64


8.7    Transposta de uma Matriz


       O caracter ' (apóstrofe) denota transposta de uma matriz. Se z for complexo, z' é o
transposto conjugado complexo de z. Exemplo:
A = [1 2; 3 4]

A =

        1      2
        3      4

%% realiza a transposta da matriz A
A'

ans =

        1      3
        2      4

%% no caso de números complexos, z’ é o conjugado complexo de z
z=2+5i

z =

      2.0000 + 5.0000i

z'

ans =

      2.0000 - 5.0000i


8.8    Determinante


       Para calcularmos o determinante de uma matriz utilizamos o comando det(matriz).
%% Entrando com a matriz A 5x5
A=[1 2 4 5 6;5 1 1 3 5;7 8 9 9 0;2 2 4 0 9;1 1 1 2 3]

A =

        1      2       4       5     6
        5      1       1       3     5

                                                                              17
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
        7        8       9     9     0
        2        2       4     0     9
        1        1       1     2     3

%% Calculando o determinante da matriz A
det(A)

ans =

            -1145


8.9    Inversa da Matriz
       Para calcularmos a inversa de uma matriz utilizamos o comando inv(matriz).
%% Calculando a inversa da Matriz A
inv(A)

ans =

      -0.0271         0.2489    0.0227    0.0157   -0.4079
      -0.6218        -0.3799    0.1022    0.0707    1.6646
       0.3991         0.1048    0.0201    0.0908   -1.2454
       0.1747         0.0393   -0.0175   -0.1659    0.0830
      -0.0332        -0.0175   -0.0367    0.0515    0.2742


8.10 Autovalores e Autovetores
     A função eig( ) calcula os autovetores e os autovalores de A, respectivamente.
Existem funções que retornam dois ou mais valores. Nestes casos, os valores de saída
devem estar entre colchetes [ ] e separados por vírgula. Exemplo:
A=[1 -1;-4 1]

A =
        1       -1
       -4        1

%% Retorna um vetor com os autovalores da matriz A;
eig(A)

ans =

       3.0000
      -1.0000

       [V, D] = eig( A ): Produz matrizes de autovalores (D) e auto-vetores (V) da matriz A,
de forma que A*V = V*D. A matriz D é a forma canônica de A menos uma matriz diagonal
com os autovalores de A na diagonal principal. As colunas da matriz V são os autovetores
de A;

[V,D] = eig(A)
%% autovetores associados a matriz A
V =

       0.4472         0.4472
      -0.8944         0.8944

                                                                              18
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
%% autovalores associados a matriz A
D =

      3.0000             0
           0       -1.0000


8.11 Matriz escalonada reduzida


      O comando rref(matriz) encontra a matriz escalonada reduzida através do processo
de escalonamento de Gauss Jordan.
A=[1 2 4 5 6;5 1 1 3 5;7 8 9 9 0;2 2 4 0 9;1 1 1 2 3]

A =

        1      2       4       5     6
        5      1       1       3     5
        7      8       9       9     0
        2      2       4       0     9
        1      1       1       2     3

rref(A)

ans =

        1      0       0       0     0
        0      1       0       0     0
        0      0       1       0     0
        0      0       0       1     0
        0      0       0       0     1

%% exemplo de um sistema possível e indeterminado 0*z=0

A=[1 2 8; 2 4 16; 0 1 3]

A =

        1      2       8
        2      4      16
        0      1       3

rref(A)

ans =

        1      0       2
        0      1       3
        0      0       0


8.12 Posto de uma Matriz
     Do exemplo anterior nota-se que a matriz em sua forma escalonda reduzida possui
duas linhas não-nulas e infinitos valores para z. O número de linhas não-nulas pode ser
encontrado através do comando rank(matriz), ou seja, o comano “rank” encontra o



                                                                              19
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
“posto” da matriz, que nada mais é do que a quantidade máxima de linhas linearmente
independentes da matriz.
A=[1 2 8; 2 4 16; 0 1 3]

A =

        1      2      8
        2      4     16
        0      1      3

rank(A)

ans =

        2

rref(A)

ans =

        1      0       2
        0      1       3
        0      0       0


8.13 Números e Matrizes Complexas


       Números complexos são permitidos em todas operações e funções no MATLAB. Os
números complexos são introduzidos usando-se as funções especiais i e j. Por exemplo
z= 3 + 4*i

z =

      3.0000 + 4.0000i

%% ou podemos escrever também
z= 3 +4*j

z =

      3.0000 + 4.0000i

       As seguintes declarações mostram dois caminhos convenientes para se introduzir
matrizes complexas no MATLAB:
A= [1 2; 3 4]+i*[5 6;7 8]

A =

      1.0000 + 5.0000i        2.0000 + 6.0000i
      3.0000 + 7.0000i        4.0000 + 8.0000i


       Que produz o mesmo resultado que:
A= [1+5*i 2+6*i; 3+7*i 4+8*i]


                                                                              20
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
A =

      1.0000 + 5.0000i        2.0000 + 6.0000i
      3.0000 + 7.0000i        4.0000 + 8.0000i



8.14 Matriz diagonal ou diagonal de uma matriz


       Se x é um vetor, diag(x) é a matriz diagonal com x na diagonal. Por exemplo:
>> x=[1 2 3 1 -1 4]

x =

        1      2       3       1     -1    4

%% como x é um vetor, diag(x) monta uma matriz na qual a diagonoal principal é o
vetor x

diag(x)

ans =

        1      0       0       0      0    0
        0      2       0       0      0    0
        0      0       3       0      0    0
        0      0       0       1      0    0
        0      0       0       0     -1    0
        0      0       0       0      0    4



       Se A é uma matriz quadrada, então diag(A) é um vetor cujos componentes são os
elementos da diagonal de A.
A=[3 11 5; 4 1 -3; 6 2 1]

A =

     3    11     5
     4     1    -3
     6     2     1
%% extrai a diagonal principal da matriz
diag(A)

ans =

        3
        1
        1


8.15 Matrizes Triangulares


       O comando triu extrai a matriz triangular superior da matriz A, enquanto o comando
tril extrai a matriz triangular inferior da matriz A. Por exemplo:
A=[3 11 5; 4 1 -3; 6 2 1]

                                                                              21
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
A =

        3    11       5
        4     1      -3
        6     2       1

%% matriz triangular superior
triu(A)

ans =

        3    11       5
        0     1      -3
        0     0       1

%% matriz triangular inferior
tril(A)

ans =

        3      0       0
        4      1       0
        6      2       1


8.16 Matriz Identidade
     De modo a construir uma matriz identidade (quadrada ou com dimensão n x m), a
função a utilizar é dada por:
eye(n,m)
Exemplo:
eye(5,5)

ans =

        1      0       0       0     0
        0      1       0       0     0
        0      0       1       0     0
        0      0       0       1     0
        0      0       0       0     1

eye(5,8)

ans =

        1      0       0       0     0   0   0   0
        0      1       0       0     0   0   0   0
        0      0       1       0     0   0   0   0
        0      0       0       1     0   0   0   0
        0      0       0       0     1   0   0   0

8.17 Matriz Composta por Elementos Unitários


      No caso de ser necessário a obtenção de uma matriz composta apenas por
elementos unitários, temos que:
ones(n,m)

                                                                              22
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
ones(5,5)

ans =

        1      1       1       1     1
        1      1       1       1     1
        1      1       1       1     1
        1      1       1       1     1
        1      1       1       1     1

ones(5,8)

ans =

        1      1       1       1     1     1       1       1
        1      1       1       1     1     1       1       1
        1      1       1       1     1     1       1       1
        1      1       1       1     1     1       1       1
        1      1       1       1     1     1       1       1


8.18 Matriz Nula (composta por elementos nulos)
     Para efetuar qualquer tipo de manipulação matricial, poderá ser útil a construção de
uma matriz composta por elementos nulos:
zeros(n,m)
zeros(5,5)

ans =

        0      0       0       0     0
        0      0       0       0     0
        0      0       0       0     0
        0      0       0       0     0
        0      0       0       0     0


8.19 Matriz Aleatória
     A elaboração de testes a qualquer programa desenvolvido no MATLAB, ou para
utilização de um outro qualquer modo, poderá fazer uso de matrizes compostas por
números aleatórios uniformemente distribuídos no intervalo entre 0 e 1:
rand(n,m)
rand(3,3)

ans =

    0.171186687811562          0.276922984960890       0.823457828327293
    0.706046088019609          0.046171390631154       0.694828622975817
    0.031832846377421          0.097131781235848       0.317099480060861

      No caso de se pretender uma distribuição normal dos números aleatórios
compreendidos entre 0 e 1, a função a utilizar será:
randn(n,m)
randn(3,3)

                                                                              23
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________

ans =

  -0.432564811528221           0.287676420358549          1.189164201652103
  -1.665584378238097          -1.146471350681464         -0.037633276593318
   0.125332306474831           1.190915465642999          0.327292361408654



9. Gerando Vetores


      O dois pontos ( : ) é um caracter importante no MATLAB. Escrevendo:
x=1:8

x =

        1        2      3      4        5    6       7        8

      Cria um vetor cujo primeiro elemento é 1, o último é 8 e o passo entre os elementos
do vetor é 1. O mesmo comando pode ser modificado de forma a alterar o passo entre os
elementos do vetor:
x = 1:1.5:8

x =

      1.0000         2.5000        4.0000   5.5000         7.0000

      Os dois pontos significam início:passo:fim. O valor de passo pode ser qualquer
número real ( ≅ 0). A notação ( : ) é muito útil para gerar tabelas e plotar gráficos, como
veremos adiante.
%% cria um vetor linha x
x=0:0.2:3

x =

  Columns 1 through 11

            0       0.2000     0.4000       0.6000         0.8000    1.0000   1.2000   1.4000
1.6000          1.8000     2.0000

  Columns 12 through 16

      2.2000         2.4000        2.6000   2.8000         3.0000


%% cria um vetor linha y, a partir dos valores de x
y=exp(-x) + sin(x)

y =

  Columns 1 through 11

    1.0000     1.0174     1.0597            1.1135         1.1667    1.2094   1.2332   1.2320
1.2015     1.1391     1.0446


                                                                              24
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
  Columns 12 through 16

      0.9193        0.7662         0.5898   0.3958   0.1909

%% cria uma matriz 16x2 a partir dos vetores x e y transpostos
z=[x' y']

z =

           0        1.0000
      0.2000        1.0174
      0.4000        1.0597
      0.6000        1.1135
      0.8000        1.1667
      1.0000        1.2094
      1.2000        1.2332
      1.4000        1.2320
      1.6000        1.2015
      1.8000        1.1391
      2.0000        1.0446
      2.2000        0.9193
      2.4000        0.7662
      2.6000        0.5898
      2.8000        0.3958
      3.0000        0.1909

      Outros incrementos, diferentes da unidade podem ser utilizados, como seja o caso
do seguinte exemplo que impõe um incremento de pi/4.
%% criamos um vetor que começa em 0 e vai até PI, com um passo de PI/4
y = 0 : pi/4 : pi

y =

            0       0.7854         1.5708   2.3562   3.1416


      Também são possíveis incrementos negativos:
%% criamos um vetor que começa em 6 e vai até 1, com um passo de -1
z = 6 : -1 : 1

z =

       6        5      4       3        2    1


9.1   O Comando linspace
      Pode-se, também, gerar vetores linearmente espaçados fazendo uso da função
linspace. Por exemplo:
%% criamos 6 pontos igualmente espaçados entre 0 e 1.
k = linspace(0,1,6)

k =

            0       0.2000         0.4000   0.6000   0.8000   1.0000

%% criamos 5 pontos igualmente espaçados entre 0 e 10.
k1=linspace(0,10,5)


                                                                              25
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
k1 =

            0      2.5000       5.0000        7.5000      10.0000

       Também é possível criar um espaçamento logarítmico entre os pontos do vetor. Isto
é possível através do comando logspace(x1,x2,k). Onde x1 é o ponto inicial, x2 o ponto
final e k o numero total de elementos.


10. ARQUIVOS M DE COMANDOS


       O MATLAB normalmente é usado no modo de comando(Janela de comandos –
“Command Window”). Quando você entra com uma linha de comando, ele processa e
imediatamente mostra o resultado. O MATLAB também pode executar uma seqüência de
comandos que está armazenada num arquivo. Estes dois modos formam um ambiente
interpretativo. Os arquivos que contém declarações MATLAB são chamados M-files
porque usam a extensão “*.m”. Por exemplo, o arquivo senoide.m contém declarações
MATLAB para o cálculo e desenho de uma função senoidal com amplitude unitária,
freqüência de 1000 Hz e ângulo de fase igual a zero:




                  Figura 9 – Arquivo .m para o calculo de uma função seno com A=1, f=1000Hz.




                                                                              26
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                         Figura 10 – Resultado após a execução do arquivo “senoide.m”.


      Um M-file consiste de uma seqüência de declarações MATLAB normais, podendo
incluir referencias à outros M-files. Um M-file pode chamar ele próprio de forma recursiva.
Você pode criar um M-file usando um editor de texto tal como o Notepad do Windows™,
Edit do DOS ou outro qualquer. Dois tipos de M-files podem ser usadas: manuscritas
(scripts) e funções. Arquivos scripts automatizam uma seqüência longa de comandos.
Arquivos de função permite criar novas funções às existentes. Ambos, scripts e funções
são arquivos texto tipo ASCII.




                                     Figura 11 – Arquivos .m de scripts e funções.


      Normalmente, enquanto um M-file está sendo executado, os comandos contidos no
arquivo não são mostrados na tela. O comando echo permite visualizar o comando a
medida que ele vai sendo executado. Isso é especialmente útil na depuração de um
programa ou para a confecção de um programa demonstrativo.
      Em virtude da grande utilidade dos arquivos de comandos o MATLAB possui várias
funções apropriadas para o uso em arquivos M. Essas funções são:




                                                                              27
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
            Tabela 6 – Comando de entrada,saída, depuração e interação com o usuário.
   Comandos        Descrição
disp(ans)              Mostra os resultados sem identificar o nome das variáveis
echo                   Controla a exibição dos comandos dos arquivos M na janela de comandos
Input                  Solicita ao usuário que forneça um dado de entrada
pause                  Suspende a execução até que o usuário pressione alguma tecla
pause(n)               Suspende a execução por n segundos
waitforbuttonpress     Suspende a execução até o usuário pressione uma tecla ou um botão do mouse.



  11. CONTROLE DE FLUXO
       Os comandos que controlam o fluxo especificam a ordem em que a computação é
  feita. No MATLAB estes comandos são semelhantes aos usados na linguagem C, mas
  com uma estrutura diferente (mais simples).

  11.1 Laço For


        O laço for é o controlador de fluxo mais simples e usado na programação MATLAB.
        Em geral:
        for x = <valor inicial>:<incremento>:<valor final>
        comandos
        end
        O laço for repete as instruções dentro do laço até que o índice contador do laço
  alcance a condição final:
  for i=[1,2,3,4]
  disp(i^2)
  end
  1
  4
  9
  16
  (Observe o uso da função disp, que exibe na tela o conteúdo do seu argumento). O laço
  for, tal como o bloco if, deve ser terminado com a instrução end. Este laço poderia ser
  expresso na forma mais comum:
  for i=1:4
  disp(i^2)
  end
  1
  4
  9
  16
  (lembre-se que 1:4 é equivalente a [1,2,3,4]).
  %% utilizando o incremento
  for i=1:1:4
  disp(i^2)
  end

                                                                                28
  _______________________________________________________________________________
  Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
      1

      4

      9

     16


      O laço for possibilita que uma série de comandos seja repetida por um número de
vezes fixo e pré-definido. O comando end é usado como limite inferior do corpo do laço.
Exemplos:
1) Calcular a tabuada do número 17:
for n=0:10
tab(n+1)=17*n;
end
disp(tab)
     0     17        34       51     68   85   102   119   136   153   170

2) Calcular a soma de todos os números pares de 0 a 100:
soma=0;
for n=0:2:10
soma=soma+n;
end
disp(soma)


3) Calcular o fatorial de um número n:
n=input(‘Digite um valor para calcular o fatorial: ‘) ;
fatorial=1;
for a=1:n
fatorial=fatorial*a;
end
disp(fatorial)

11.2 Laço While
     Ao contrário do Laço For, que executa um grupo de comandos um número fixo de
vezes, o laço while executa um grupo de comandos um número indefinido de vezes. O
laço while é executado enquanto a condição expr for verdadeira:
x=1;
while 1+x > 1
x = x/2;
end
x
x =
1.1102e-16


      A estrutura geral é:
      while expressão
             comandos
      end
                                                                              29
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________

Calcular o fatorial de um número qualquer.
%Fatorial com While
x=input('Digite um valor: ');
fat=1;
while x>0
fat=fat*x;
x=x-1;
end
disp(fat)


Calcule a seguinte série com 50 termos:




%Cálculo da Série
n=0;
x=1;
serie=0;
while n<50
serie=serie+x/2;
x=x+2;
n=n+1;
end
disp(serie)
1250



11.3 Estrutura If-Else-End


      Em diversas situações, as seqüências de comandos têm de ser executadas
condicionalmente, com base em um teste relacional. Essa lógica é implementada por
meio de uma das diversas formas da estrutura if-else-end. A mais simples é:
if expressão
     comandos
end
      Os comandos entre as instruções if e end são executados se todos os elementos na
expressão forem Verdadeiros.
      Exemplo:
      Calcular o desconto de 20% para um número de cadeiras maior que 5. Sendo que o
custo de cada cadeira é de R$55,00.
cadeiras=input('digite o numero      de cadeiras desejadas: ');
preco=55;
custo=cadeiras*preco;
if cadeiras>5
custo=(1-20/100)*custo;
end
disp(custo)

                                                                              30
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
     Outra forma de usar a estrutura é:
if expressão
        comandos executados se Verdadeiro
   else
        comandos executados se Falso
end

Exemplos:
      1) Dado qualquer distância que um veículo deve percorrer (valor real em km), a
capacidade do tanque de combustível (valor real em litros) e a média de consumo de
combustível do veículo (valor real em km/litros). Supondo que o tanque estará cheio na
partida, mostrar umas das mensagens:
      DEVE HAVER REABASTECIMENTO
      OU
      NÃO DEVE HAVER REABASTECIMENTO
% DISTÂNCIA
%
d=input('Digite a distância a ser percorrida: ');
mc=15; %media de consumo
ct=45; %capacidade do tanque
if mc*ct>=d
     disp('Não deve haver reabastecimento')
else
disp('Deve haver reabastecimento')
end


      Testar para 780 km e 600 km


      2) Os funcionários contratados pela prefeitura de uma cidade são classificados em 3
(três) níveis conforme a pontuação obtida em 2 (duas) provas aplicadas de acordo com o
seguinte critério:


                                     Tabela 7 – Dados exemplo 2.
     Nível    Pontuação
       A      Superior a 8 em pelo menos uma das provas ou soma dos pontos superior a 14.
       B      Superior a 6 em pelo menos uma das provas ou soma dos pontos superior a 9.
       C      Nenhm dos casos acima.


      Em cada prova a pontuação é um valor real de 0 a 10. Desenvolva um programa que
receba 2 (duas) notas de um funcionário e mostre como resposta o nível em que está
classificado.
%Classificação de Funcionários
nota1=input('Digite a primeira nota: ');

                                                                              31
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
nota2=input('Digite a segunda nota: ');
if nota1>=8 | nota2>=8 | (nota1+nota2)>=14
disp('aluno nível A')
elseif nota1>=6 | nota2>=6 | (nota1+nota2)>=9
disp('aluno nível B')
else
disp('aluno nivel C')
end



11.4 Estrutura Switch-Case


      Essa estrutura funciona como uma chave seletora, escolhendo a expressão correta
para executar os comandos.
      O    comando       switch      é   utilizado   quando   desejamos   selecionar   (chavear)
condicionalmente expressões porém, na forma de lista. O formato geral do comando
switch é:


switch expressão
        case valor 1
        ......... grupo de comandos
        case valor 2
        ......... grupo de comandos
        case valor 3
        ......... grupo de comandos
        otherwise
        ......... grupo de comandos
end


1) Faça um programa que o usuário possa digitar qualquer mês do ano e como resultado
seja mostrado o número de dias do mês correspondente.
%Programa para saber quantos dias tem o mes
%
clear;
clc;
mes=input('digite o mes desejado: ');
switch mes
case {'Janeiro','Marco','Maio','Julho','Agosto','Outubro','Dezembro'}
disp('31 dias')
case {'Fevereiro'}
disp('28 ou 29 dias')
case {'Abril','Junho','Setembro','Novembro'}
disp('30 dias')



                                                                              32
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
12. ARQUIVOS M DE FUNÇÕES


      É um programa elaborado como arquivo.m e que calcula algo desejado pelo
programador, devolvendo somente o valor da resposta. Os comandos executados por
esse programa ficam ocultos. Você só visualiza o que entra e o que sai, ou seja, uma
função é uma caixa preta.




                             Figura 12 – Princípio de funcionamento de uma função.


      O Matlab, como outras linguagens de programação, possui duas formas de criação
de programas: roteiro (script) e função (function). Na aula passada, vimos um exemplo
prático de criação de um roteiro que executava uma seqüência de comandos Matlab para
o ajuste de curvas (linear, polinomial e não-linear). Quando um programa executa uma
seqüência de comandos que pode ou não retornar parâmetros na janela de comandos do
Matlab, então esse programa denomina-se “roteiro” no Matlab. Em inglês, roteiro é
chamado script, termo esse que também é usado na língua portuguesa para descrever
uma seqüência de eventos.
      A primeira linha executável no arquivo deve ser a linha de declaração da função. De
outro modo, o MATLAB tratará o arquivo como uma rotina. A linha de declaração de uma
função:
    • Define o arquivo como uma função (diferenciando-o de uma rotina);
    • Define o nome da função;
    • Define o número e a ordem das variáveis de entrada, além de especificar o que a
        função irá retornar (variáveis de saída).
      O formato característico da linha de declaração de uma função é:


        function [argumentos de saida] = nome_funcao (argumentos de entrada)


Exemplo:
      1) Montar um programa que realize o cálculo da distância entre dois pontos (x1, y1) e
(x2, y2) em um sistema de coordenadas cartesianas.

                                       d=    (x 2 − x1 )2 + ( y 2 − y1 )2

                                                                              33
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
     No caso, vamos criar um programa principal chamado distancia e através deste
programa vamos chamar a função dist2.m, na qual estará implementada a foruma acima.
      Passo 1: Criando a função:




                                 Figura 13 – Implementação da Função “dist2”.


      Em um m.File implementamos o código da função. Lembre-se este arquivo .m deve
ser salvo com o nome da função no caso dist2.m.
      Passo 2:
      Criando o programa principal:
%% Programa distancia entre pontos %%
%% o programa principal chama a função dist2 para o calculo %%

disp('Calculando a distância entre dois pontos:');
ax=input('Entre com o valor de x do ponto A: ');
ay=input('Entre com o valor de y do ponto A: ');
bx=input('Entre com o valor de x do ponto B: ');
by=input('Entre com o valor de y do ponto B: ');

resp=dist2(ax,ay,bx,by);
fprintf('A distância entre os potnos A e B é %fn:',resp);




                                      Figura 14 – Programa em execução.

                                                                              34
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
13. GRÁFICOS NO MATLAB

      Gráficos são ferramentas poderosas quando se deseja interpretar visualmente os
resultados. Um recurso especialmente interessante nas engnharias e demais ciências
exatas, onde o MATLAB encontra as maiores aplicações.
      O comando plot é utilizado para criação de gráficos bidimensionais. A forma mais
simples desse comando é:
                                       plot (x,y)
      Cada um dos argumentos x e y deve ser um vetor. Além disso, os dois vetores
devem possuir a mesma quantidade de elementos. Ao executar o omando plot, é gerada
uma saída na janela Figure Window. Caso a janela Figure Window esteja fechada, ela
será aberta automaticamente após a execução do comando.



13.1 Gráficos 2-D
     Os resultados apresentados a seguir foram obtidos com o auxílio do “software” de
simulação PSCAD/EMTDC, no qual foram implementadas distintas situações de carga e
de tensão de alimentação para averiguar os efeitos da conexão das cargas especiais
modeladas no SEP.
Exemplo:
%% plotar a função seno %%

x=0:0.1:2*pi; %%gera um vetor de 0 a 2pi
y=sin(x);     %% calcula o vetor das amplitudes
plot(x,y);    %% plota o gráfico
xlabel('valores de x'); %%adiciona legenda no eixo x
ylabel('amplitude');    %%adiciona legenda no eixo y
grid on;                %%coloca grid no grafico
y2=2*sin(x); %% gera um outro vetor de amplitudes
hold on;      %% segura o grafico anterior para plotar junto com o novo grafico
plot(x,y2,'r+:'); %%plota o novo grafico, linha na cor vermelha, "+" em cada
ponto, ":" para linha tracejada
title('Gráfico da Função seno'); %% insere título no grafico
legend('Amplitude = 1','Amplitude = 2'); %%insere legenda no gráfico




                                                                              35
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                            Figura 15 – Gráfico gerado após a execução do programa.

Exemplo:
    1) Seja a função y = e ⋅ sen(x) . Como seria seu gráfico no intervalo [0 ; e1 ⋅ π ]?
                          −x


%%% Gráfico da função f(x)=exp(-x)*sin(x) %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

x=0:0.1:exp(1)*pi; %%gera o vetor x
y=exp(-x).*sin(x); %%calcula as amplitudes, vetor y
plot(x,y,'--b');    %%plota o grafico
grid on;            %% coloca o grid
title('gráfico f(x)=exp(-x)*sin(x)'); %% coloca o titulo no grafico
xlabel('eixo x'); %% coloca texto no eixo x
ylabel('eixo y'); %% coloca texto no eixo y
gtext('ponto de máximo local'); %%disponibiliza ao usuario marcar o ponto no
grafico




                            Figura 16 – Gráfico gerado após a execução do programa.


                                                                              36
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
    1) Seja a função f ( x) = x 3 − 9 x + 3 (livro, pg.31). Como seria seu gráfico no intervalo [-4 ,
        3]?
%%% Gráfico da função f(x)=x.^3-9.*x+3 %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

x = -4:0.1:3; %%gera o vetor x
y = x.^3-9.*x+3; %%calcula as amplitudes, vetor y
plot(x,y,'--b'); %%plota o grafico, linha pontilhada, na cor azul
grid on;          %% coloca o grid
title('bf{gráfico f(x)=x.^3-9.*x+3}' ); %% coloca o titulo no grafico em
negrito
xlabel('eixo x'); %% coloca texto no eixo x
ylabel('eixo y'); %% coloca texto no eixo y
axis([-4 4 -25 15]) %%ajusta os eixos para os limites [XMIN XMAX YMIN YMAX]

%%bf negrito{'texto'}, it italico{'texto'};
%%fontname{arial}




                                     Figura 17 – Gráfico da função x^3-9*x+3.




    2) Utilizando o processo de ii), pg. 33 livro, vamos isolar a função f(x) e obter a
        equação equivalente g(x)=h(x) e esboçar o gráfico das funções g(x) e h(x) no
        mesmo eixo cartesiano e localizar os pontos x onde as duas curvas se interceptam.
                                              f ( x) = x 3 − 9 x + 3

                                                   g ( x) = x 3
                                                 h( x) = 9 x − 3



                                                                              37
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Gráfico das funções g(x)=x.^3 e h(x)=9.*x-3 %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

x = -10:0.1:10; %%gera o vetor x
g = x.^3; %%calcula as amplitudes, vetor g
plot(x,g,'--b'); %%plota o grafico g(x), linha pontilhada, na cor azul
grid on;          %% coloca o grid
h=9.*x-3; %%calcula as amplitudes, vetor h
hold on; %%segura o grafico g(x) para que possamos plotar h(x)
plot(x,h,'r'); %%plota o grafico h(x), linha pontilhada, na cor vermelho
%% vamos plotar g e h para analisar onde g(x)=h(x), pg 35 livro.
xlabel('eixo x'); %% coloca texto no eixo x
ylabel('eixo y'); %% coloca texto no eixo y
axis([-5 5 -40 40]) %%ajusta os eixos para os limites [XMIN XMAX YMIN YMAX]




                             Figura 18 – Gráficos das funções g(x)=x^3 e h(x)=9x-3.



13.2 Estilos de Linhas e Símbolos


      Os tipos de linhas, símbolos e cores usados para plotar gráficos podem ser
controlados se os padrões não são satisfatórios. Por exemplo,
x = 0:0.05:1;
subplot(1,2,1)
plot(x,x.^2,'k*')
subplot(1,2,2)
plot(x,x.^2,'k --')




                                                                              38
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




           Figura 19 – Plotando gráficos com marcadores e linha pontilhada, detalhe comando “subplot”.




      Comando subplot = Gera vários eixos em uma mesma janela.
      Sintaxe:
      subplot(m,n,p)
      Parâmetros de entrada:
      m= número de eixos na vertical (número de linhas).
      n=Número de eixos na horizontal (número de colunas).
      p=Índice do eixo corrente
      Outros tipos de linhas, pontos e cores também podem ser usados:




                                                                              39
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




13.3 Coordenada Polar e Gráfico de Barras

      polar(theta,r,fmt) plota em coordenadas polares o ângulo theta, em radianos, r que é
a variação radial linear, e fmt é a cadeia de caracteres contendo a descrição do tipo de
curva a ser traçado (como o plot);
%% Gerando gráficos em coordenadas polares
theta=-2*pi:0.1:2*pi;
rho=1:126;
polar(theta,rho,'r*')




                                                                              40
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                     Figura 20 – Coordenadas polares.




                                      Figura 21 – Gráficos de barras.




                                                                              41
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
%% Gerando gráficos de Barras
x=-2.9:0.2:2.9;
y=exp(-x.*x);
subplot(2,2,1)
bar(x,y)
title('Grafico de barras de uma curva em forma de sino');
subplot(2,2,2)
bar3(x,y)
title('Grafico de barras 3-D de uma curva em forma de sino');
subplot(2,2,3)
stairs(x,y)
title('Grafico em escada de uma curva em forma de sino');
subplot(2,2,4)
barh(x,y)
title('Grafico de barras horizontal');



13.4 Gráficos 3-D


      O MATLAB possui muitos recursos para visualização de dados em 3D. Este item
representa as principais funções relacionadas a este tópico.
      Estes são alguns comandos para plotar gráficos tridimensionais e contornos.
                             Tabela 8 – Comandos para plotar gráficos 3-D.




      O MATLAB define uma superfície do tipo mesh (rede) pelas coordenadas Z sobre
um plano x-y. Superfícies tipo mesh são úteis para visualizar matrizes demasiadamente
grandes para serem mostradas na forma numérica, ou para plotar funções de duas
variáveis.
      O primeiro passo para plotar uma função de 2 variáveis z=f(x,y) é gerar matrizes X e
Y contendo linhas e colunas repetidas, respectivamente, para funcionarem como o
domínio da função. A função meshgrid transforma o domínio especificado por dois vetores
x y em duas matrizes X e Y. Essas matrizes então são usadas para avaliar a função de 2
variáveis. Por exemplo, seja a função:

                                                                              42
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
x=-pi:0.5:pi;
y=-pi:0.5:pi;
[Mx,My]=meshgrid(x,y);
Mz=cos(Mx).*sin(My);
mesh(Mx,My,Mz);




                                     Figura 22




x=-pi:0.5:pi;
y=-pi:0.5:pi;
[Mx,My]=meshgrid(x,y);
Mz=cos(Mx).*sin(My);
mesh(Mx,My,Mz);
surf(Mx,My,Mz)




                                     Figura 23

                                                                              43
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________

[X,Y]=meshgrid(-8:0.5:8,-8:0.5:8);
r= sqrt(X.^2+Y.^2)+eps;
Z=sin(r)./r;
mesh(X,Y,Z)




                                     Figura 24



[X,Y]=meshgrid(-8:0.5:8,-8:0.5:8);
r= sqrt(X.^2+Y.^2)+eps;
Z=sin(r)./r;
mesh(X,Y,Z)
surf(X,Y,Z)




                                     Figura 25




                                                                              44
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
figure(2)
[X,Y]=meshgrid(-8:0.5:8,-8:0.5:8);
mesh(X,Y,3*sqrt(X.^2+Y.^2))




                                     Figura 26




figure(3)
[X,Y]=meshgrid(-8:0.5:8,-8:0.5:8);
mesh(X,Y,3*sqrt(X.^2+Y.^2))
surf(X,Y,3*sqrt(X.^2+Y.^2))




                                     Figura 27




                                                                              45
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
                                     Tabela 9




x=-4*pi:0.1:4*pi;
y=-4*pi:0.1:4*pi;
plot3(cos(x),sin(y),(x+y))




                                     Figura 28


                                                                              46
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
%% Equações paramétricas
t=0:0.1:6*pi;
x=sqrt(t).*sin(2*t);
y=sqrt(t).*cos(2*t);
z=0.5*t;
plot3(x,y,z,'k','linewidth',2)
grid on
xlabel('x');
ylabel('y');
zlabel('z');




                                     Figura 29

%% Malha e persianas verticais
x=-3:0.25:3;
y=-3:0.25:3;
[X,Y]=meshgrid(x,y);
Z=1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
meshz(X,Y,Z)
xlabel('x');
ylabel('y');
zlabel('z');




                                     Figura 30

                                                                              47
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
13.5 Anotações no Gráfico
     O MATLAB possui comandos de fácil utilização para adicionar informações em um
gráfico:
                                     Tabela 10




Por exemplo:
fplot('sin', [-pi pi])
title('Gráfico da função f(x)=seno(x), -pi<x<pi')
xlabel('x')
ylabel('f(x)')
grid




                                     Figura 31




                                                                              48
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
14. POLINÔMIOS


       Encontrar raízes de um polinômio, isto é, os valores para os quais o polinômio é igual
a zero. No MATLAB, um polinômio é representado por um vetor linha contendo seus
coeficientes em ordem decrescente. Por exemplo:                 x 4 − 12 x 3 + 0 x 2 + 25 x + 116   é
introduzido como:
p=[1 -12 0 25 116]

p =

        1   -12        0      25     116




14.1 Raízes
     Dada essa forma, as raízes do polinômio são encontradas usando-se a função
roots(p):
roots(p)

ans =

     11.7473
      2.7028
     -1.2251 + 1.4672i
     -1.2251 - 1.4672i

       Dadas as raízes também é possível construir o polinômio associado. O comando que
executa tal procedimento é o comando poly, como exemplo:
>> p=[1 -12 0 25 116]

p =

        1   -12        0      25     116

>> r=roots(p)

r =

     11.7473
      2.7028
     -1.2251 + 1.4672i
     -1.2251 - 1.4672i

>> p2=poly(r)

p2 =

       1.0000     -12.0000     -0.0000     25.0000   116.0000

>>




                                                                              49
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
Calcular a raiz do polinômio           P ( x) = x 3 − 2 x − 5
>> p=[1 0 -2 -5]

p =

        1      0      -2       -5

>> r=roots(p)

r =

      2.0946
     -1.0473 + 1.1359i
     -1.0473 - 1.1359i

>>


       Por convenção o Matlab armazena as raízes em vetores coluna.



14.2 Multiplicação
     A multiplicação polinomial é efetuada por meio da função conv(que faz a convolução
entre dois vetores). Consideremos o produto de dois polinômios a ( x) = x + 2 x + 3 x + 4 e
                                                                         3     2



b( x) = x 3 + 4 x 2 + 9 x + 16 .
a=[1 2 3 4];
b=[1 4 9 16];
c=conv(a,b)

c =

        1      6      20       50    75       84      64


Consideremos os polinômios           P ( x) = x 2 + 2 x + 3 e Q( x) = 4 x 2 + 5 x + 6
>> P=[1 2 3]

P =

        1      2        3

>> Q=[4 5 6]

Q =

        4      5        6

>> R=conv(P,Q)

R =

        4     13      28       27    18

>>


                                                                              50
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
Nos devolve o resultado: 4 13 28 27 18. Isto é
R ( x) = P ( x).Q( x) = 4 x 4 + 13x 3 + 28 x 2 + 27 x + 18


14.3 Adição
     O MATLAB possui uma função direta para somar polinômios:
a=[1 2 3 4];
b=[1 4 9 16];

d=a+b
d =

        2      6     12       20

      Quando dois polinômios forem de ordens diferentes, aquele que tiver menor ordem
terá de ser preenchido com coeficientes iguais a zero, a fim de torná-lo da mesma ordem
do polinômio de ordem mais alta.
      Exemplo:
>> e= c+[0 0 0 d]
e=
1 6 20 52 81 96 84

14.4 Divisão
      Consideremos o polinômio P ( x) = 4 x 3 + x 2 − 2 x + 3 e Q( x) = x 2 + 3 x + 6 .
>> P=[4 1 -2 3]

P =

        4      1     -2        3

>> Q=[1 3 6]

Q =

        1      3       6

>> [q r]=deconv(P,Q)

q =

        4   -11


r =

        0      0       7      69

      Isto é, q ( x ) = 4 x − 11 quociente e r ( x ) = 7 x + 69 resto.




                                                                              51
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
14.5 Cálculo de Polinômios
     O comando que realiza o calculo dos valores de f(x) podem ser realizados através
do comando polyval.

x=linspace(-1,3);%% escolhe 100 pontos entre –1 e 3.
p=[1 4 -7 -10]; %%define o polinômio p(x)=x3+4x2-7x-10
v=polyval(p,x)   %%calcula p(x) nos valores armazenados em x e armazena o
resultado em v. O resultado pode ser representado graficamente usando-se:
plot(x,v)
grid



14.6 Derivada de Polinômios


      Considere o seguinte polinômio P ( x) = 2 x 4 − x 3 + 3 x 2 + 5 x + 9 , vamos derivar este
polinômio:
>> P=[2 -1 3 5 9]

P =

        2    -1          3       5   9

>> polyder(P)

ans =

        8    -3          6       5

>>
Isto é P ' ( x ) = 8 x − 3 x + 6 x + 5
                     3       2




14.7 Derivada de um Produto de Polinômios


      Considere os seguintes polinômios: P ( x) = x 2 − 5 x + 9 e Q( x) = x 2 + x − 1
>> P=[1 -5 9]

P =

        1    -5          9

>> Q=[1 1 -1]

Q =

        1      1     -1

>> polyder(P,Q)

ans =


                                                                              52
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
      4     -12        6      14

>>
      Nos devolve como resultado: 4 -12 6 14. Isto é P ' ( x ) = 4 x − 12 x + 6 x + 14
                                                                      3      2




14.8 Derivada de um Quociente de Polinômios


Considere os seguintes polinômios: P ( x) = x − 5 x + 9 e Q( x ) = x + 7
                                             2


>> P=[1 -5 9]

P =

      1      -5        9

>> Q=[1 7]

Q =

      1        7

>> [n,d]=polyder(P,Q)

n =

      1      14     -44


d =

      1      14      49

>>
      Isto é n( x ) = x + 14 x − 44 numerador e n( x ) = x + 14 x + 49 o denominador.
                       2                                  2




                                                                              53
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________
15. LISTA DE FUNÇÕES DO MATLAB




                                                                              54
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              55
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              56
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              57
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              58
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              59
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              60
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              61
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              62
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              63
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              64
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              65
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              66
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              67
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              68
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              69
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              70
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              71
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              72
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________




                                                                              73
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab
_______________________________________________________________________________

16. REFERÊNCIAS BIBLIOGRÁFICAS

[1].   S. J. Chapman. “Programação em Matlab Para Engenheiros”. Editora Cengage Learning, 2ª
       Edição, 2010.

[2].   A. Gilat. “Matlab Com Aplicações em Engenharia”. Editora Bookman, 2° Edição, 2006.

[3].   S. A. Vicente. “Curso Introdutório de Matlab 6.5”. Apostila, Janeiro, 2003.

[4].   Matlab & Simulink, Apostila, Faculdade de Engenharia Industrial, 1994.

[5].   Matlab Curso Introdutório, Apostila, Centro Brasileiro de Pesquisas Físicas, 2002.




                                                                              74
_______________________________________________________________________________
Cálculo Numérico Utilizando Matlab

Weitere ähnliche Inhalte

Was ist angesagt?

Matlab - Conceitos Básicos
Matlab - Conceitos BásicosMatlab - Conceitos Básicos
Matlab - Conceitos BásicosRodolfo Almeida
 
Tutorial br mathematica 5.2
Tutorial br mathematica 5.2Tutorial br mathematica 5.2
Tutorial br mathematica 5.2Luiz Dias
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlabblogmaxima
 
Filtro_matlab_toobox
Filtro_matlab_tooboxFiltro_matlab_toobox
Filtro_matlab_tooboxDiego Menezes
 
Introdução ao Octave
Introdução ao OctaveIntrodução ao Octave
Introdução ao OctavePeslPinguim
 
FIS146 - Informática Aplicada a Fı́sica
FIS146 - Informática Aplicada a Fı́sicaFIS146 - Informática Aplicada a Fı́sica
FIS146 - Informática Aplicada a Fı́sicaMarcilio Guimarães
 
Apostila de algoritimo super básica
Apostila de algoritimo super básicaApostila de algoritimo super básica
Apostila de algoritimo super básicaPablo Verlly Moreira
 
Aula 1 - Estudando o problema a ser resolvido
Aula 1 - Estudando o problema a ser resolvidoAula 1 - Estudando o problema a ser resolvido
Aula 1 - Estudando o problema a ser resolvidoEduardo de Lucena Falcão
 
Curso basico matlab
Curso basico matlabCurso basico matlab
Curso basico matlabEva Santana
 

Was ist angesagt? (12)

Matlab - Conceitos Básicos
Matlab - Conceitos BásicosMatlab - Conceitos Básicos
Matlab - Conceitos Básicos
 
Tutorial br mathematica 5.2
Tutorial br mathematica 5.2Tutorial br mathematica 5.2
Tutorial br mathematica 5.2
 
Apostila vol1 matlab
Apostila vol1 matlabApostila vol1 matlab
Apostila vol1 matlab
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlab
 
Filtro_matlab_toobox
Filtro_matlab_tooboxFiltro_matlab_toobox
Filtro_matlab_toobox
 
Introdução ao Octave
Introdução ao OctaveIntrodução ao Octave
Introdução ao Octave
 
Hp 50g menor
Hp 50g   menorHp 50g   menor
Hp 50g menor
 
FIS146 - Informática Aplicada a Fı́sica
FIS146 - Informática Aplicada a Fı́sicaFIS146 - Informática Aplicada a Fı́sica
FIS146 - Informática Aplicada a Fı́sica
 
Apostila de algoritimo super básica
Apostila de algoritimo super básicaApostila de algoritimo super básica
Apostila de algoritimo super básica
 
Aula 1 - Estudando o problema a ser resolvido
Aula 1 - Estudando o problema a ser resolvidoAula 1 - Estudando o problema a ser resolvido
Aula 1 - Estudando o problema a ser resolvido
 
Simulink 4
Simulink 4Simulink 4
Simulink 4
 
Curso basico matlab
Curso basico matlabCurso basico matlab
Curso basico matlab
 

Ähnlich wie Apostila matlab (20)

Apostila matematica basica
Apostila matematica basicaApostila matematica basica
Apostila matematica basica
 
Apostila matematica basica
Apostila matematica basicaApostila matematica basica
Apostila matematica basica
 
Apostila matematica basica
Apostila matematica basicaApostila matematica basica
Apostila matematica basica
 
C00748637 Manual HP 50g
C00748637 Manual HP 50gC00748637 Manual HP 50g
C00748637 Manual HP 50g
 
C00748637
C00748637C00748637
C00748637
 
Apostila_MATLAB.pdf
Apostila_MATLAB.pdfApostila_MATLAB.pdf
Apostila_MATLAB.pdf
 
Apostila matlab
Apostila matlabApostila matlab
Apostila matlab
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Guia Matlab
Guia MatlabGuia Matlab
Guia Matlab
 
Apostila 20 matlab
Apostila 20 matlabApostila 20 matlab
Apostila 20 matlab
 
Apostila estatistica 2009 mec
Apostila estatistica 2009 mecApostila estatistica 2009 mec
Apostila estatistica 2009 mec
 
Tese marinho
Tese marinhoTese marinho
Tese marinho
 
Apostila curso matlab
Apostila curso matlabApostila curso matlab
Apostila curso matlab
 
mech-course.pdf
mech-course.pdfmech-course.pdf
mech-course.pdf
 
Apostila lineares.pdf
Apostila lineares.pdfApostila lineares.pdf
Apostila lineares.pdf
 
Cálculo numérico
Cálculo numéricoCálculo numérico
Cálculo numérico
 
Curs omatlab52
Curs omatlab52Curs omatlab52
Curs omatlab52
 
Pi raciocinio lógico
Pi   raciocinio lógicoPi   raciocinio lógico
Pi raciocinio lógico
 
06 projeto-churrasco-dos-sonhos-gerando-a-eap-gráfica-guia-03
06 projeto-churrasco-dos-sonhos-gerando-a-eap-gráfica-guia-0306 projeto-churrasco-dos-sonhos-gerando-a-eap-gráfica-guia-03
06 projeto-churrasco-dos-sonhos-gerando-a-eap-gráfica-guia-03
 
sumando 1 2 3
sumando 1 2 3sumando 1 2 3
sumando 1 2 3
 

Apostila matlab

  • 1. Universidade Federal de São João Del-Rei Campus Alto Paraopeba Disciplina: Cálculo Numérico Apostila de Matlab Prof. Alexandre Cândido Moreira Prof. Heber Tormentino de Sousa Agosto de 2010
  • 2. _______________________________________________________________________________ SUMÁRIO 1. INTRODUÇÃO 4 1.1 Vantagens do Matlab 4 1.2 Desvantagens do Matlab 5 2. O AMBIENTE MATLAB 5 2.1 Comand Window 6 2.2 Workspace 6 2.3 Current Directory 7 2.4 Command History 8 3. COMANDOS BÁSICOS E DECLARAÇÕES DE VARIÁVEIS 8 4. OPERAÇÕES ARITMÉTICAS 8 5. EXIBINDO DADOS DE SAÍDA 9 5.1 O Comando disp 10 6. OPERADORES LÓGICOS 12 7. OPERADORES RELACIONAIS 12 8. CÁLCULO MATRICIAL 13 8.1 Elementos de uma Matriz 13 8.2 Soma e Subtração 14 8.3 Multiplicação de uma Matriz por um Escalar 15 8.4 Multiplicação entre Matrizes 15 8.5 Divisão Direta de Matrizes 16 8.6 Potênciação 16 8.7 Transposta de uma Matriz 17 8.8 Determinante 17 8.9 Inversa da Matriz 18 8.10 Autovalores e Autovetores 18 8.11 Matriz escalonada reduzida 19 8.12 Posto de uma Matriz 19 8.13 Números e Matrizes Complexas 20 8.14 Matriz diagonal ou diagonal de uma matriz 21 8.15 Matrizes Triangulares 21 8.16 Matriz Identidade 22 8.17 Matriz Composta por Elementos Unitários 22 8.18 Matriz Nula (composta por elementos nulos) 23 8.19 Matriz Aleatória 23 _______________________________________________________________________________ 2 Cálculo Numérico Utilizando Matlab
  • 3. _______________________________________________________________________________ 9. GERANDO VETORES 24 9.1 O Comando linspace 25 10. ARQUIVOS M DE COMANDOS 26 11. CONTROLE DE FLUXO 28 11.1 Laço For 28 11.2 Laço While 29 11.3 Estrutura If-Else-End 30 11.4 Estrutura Switch-Case 32 12. ARQUIVOS M DE FUNÇÕES 33 13. GRÁFICOS NO MATLAB 35 13.1 Gráficos 2-D 35 13.2 Estilos de Linhas e Símbolos 38 13.3 Coordenada Polar e Gráfico de Barras 40 13.4 Gráficos 3-D 42 13.5 Anotações no Gráfico 48 14. POLINÔMIOS 49 14.1 Raízes 49 14.2 Multiplicação 50 14.3 Adição 51 14.4 Divisão 51 14.5 Cálculo de Polinômios 52 14.6 Derivada de Polinômios 52 14.7 Derivada de um Produto de Polinômios 52 14.8 Derivada de um Quociente de Polinômios 53 15. LISTA DE FUNÇÕES DO MATLAB 54 16. REFERÊNCIAS BIBLIOGRÁFICAS 74 _______________________________________________________________________________ 3 Cálculo Numérico Utilizando Matlab
  • 4. _______________________________________________________________________________ 1. INTRODUÇÃO MATLAB (abreviatura de Matrix Laboratory – Laboratório de Matrizes) é um programa d ecomputador de uso específico, otimizado para executar cálculos científicos e de engenharia. Ele nasceu como um programa para operações matemáticas sobre matrizes, mas ao longo dos anos transformou-se em um sistema computacional flexível capaz de resolver essencialmente qualquer problema técnico. Seus elementos básicos são matrizes que não requerem dimensionamento. Ele permite implementar e resolver problemas matemáticos muito mais rápida e eficientemente que através de outras linguagens como C, Basic, Pascal ou Fortran. O MATLAB possui uma família de aplicativos específicos (“toolboxes”), que são coleções de funções usadas para resolver determinados problemas tais como: otimização, manipulação algébrica, redes neurais, processamento de sinais, simulação de sistemas dinâmicos, entre outros. Provavelmente, a característica mais importante do MATLAB é a sua extensibilidade, que permite que engenheiros, matemáticos cientistas, e até mesmo você, contribuam para o enriquecimento. 1.1 Vantagens do Matlab O Matlab tem muitas vantagens, em comparação com linguagens computacionais convencionais, para resolver problemas técnicos. Entre elas, temos: a) Facilidade de uso: o Matlab é uma linguagem interpretada, assim como muitas versões de Basic. b) Independência de Plataforma: tem suporte em diferentes sistemas computacionais: Windows XP/Vista, Linux, diversas versões de Unix e Macintosh. c) Funções Predefinidas: conta com uma grande biblioteca de funções predefinidas, que apresentam soluções testadas e empacotadas para diversas tarefas técnicas básicas d) Desenhos Independentes de Dispositivos: diferente da maioria das linguagens de computador, o Matlab tem muitos comandos para desenhos e imagens, que podem ser exibidos em qualquer dispositivo de saída gráfica compatível com o computador que executa o Matlab. Este recurso torna o Matlab uma ferramenta excepcional para visualização de dados técnicos. _______________________________________________________________________________ 4 Cálculo Numérico Utilizando Matlab
  • 5. _______________________________________________________________________________ e) Interface Gráfica de Usuário: tem ferramentas que permitem a um programador construir interativamente uma interface gráfica de usuário (GUI – Graphical User Interface) para seus programas. Com este recurso, o programador é capaz de projetar programas sofisticados de análise de dados, os quais podem ser operados por usuários relativamente inexperientes. 1.2 Desvantagens do Matlab O Matlab tem duas desvantagens principais. Primeiro, é uma linguagem interpretada, por isso pode ser mais lento que linguagens compiladas. Esse problema pode ser diminuído pela estruturação apropriada dos programas Matlab para otimizar o desempenho do código vetorizado. A segunda desvantagem é o custo: uma cópia completa do Matlab é de cinco a dez vezes mais cara que um compilador convencional C ou Fortran. 2. O AMBIENTE MATLAB A unidade fundamental de dados em qualquer programa Matlab é a matriz, que é uma coleção de valores de dados organizados em linhas e colunas, determinada por um nome único. Até mesmo escalares são tratados como matrizes em Matlab, eles são simplesmente matrizes co apenas uma linha e uma coluna. No Matlab, os arquivos de comando tem extensão .m (M-files) e os arquivos de dados binários default tem extensão .mat (Mat-files). No Windows, o Matlab é instalado com os seguintes diretórios: BIN contém os programas binários do Matlab; DEMOS demonstração em HTML EXTERN suporte às linguagens FORTRAN, C e C++ HELP contém arquivos de auxílio e documentação do Matlab JAVA suporte à linguagem Java NOTEBOOK suporte à geração de documentação no formato MS-Word TEMP diretório temporário TOLLBOX “toolboxes” do Matlab WORK diretório de trabalho. _______________________________________________________________________________ 5 Cálculo Numérico Utilizando Matlab
  • 6. _______________________________________________________________________________ Figura 1 – Ambiente Matlab janelas: “Comand Window”, “Workspace”, “Current Directory” e “Command History”. 2.1 Comand Window • É a área de trabalho onde os comandos (as instruções) são digitados; • As operações podem ser realizadas e seus resultados são mostrados; • Também é nessa janela que se pode executar um arquivo m-file; • O prompt “>>” indica que o programa está pronto aguardando uma instrução; • Com as teclas “↑” (seta para cima) e “↓” (seta para baixo) é possível recuperar todos os comandos já digitados. 2.2 Workspace Figura 2 – Janela “Workspace”. _______________________________________________________________________________ 6 Cálculo Numérico Utilizando Matlab
  • 7. _______________________________________________________________________________ • É a área na qual são exibidas todas as variáveis definidas na área de trabalho; • Essa janela possui quatro colunas indicando o nome, dimensão, número de bytes e a classe de cada variável; • As variáveis podem ser editadas e visualizadas nessa própria janela, basta dar um click-duplo para editá-las; Há um menu flutuante que é possível: • Open – abrir a janela; • Graph – criar gráficos a partir dos dados contidos na variável; • Select All – selecionar todas as variáveis; • Import Data – importar variáveis de um arquivo para o workspace; • Save Selection As – salvar as variáveis selecionadas em um arquivo; • Save Workspace As – salvar todas as variáveis do workspace em um arquivo; • Copy – copiar a variável para a área de transferência de dados do Windows; • Delete – apagar a variável do workspace; • Clear Workspace – apagar todas as variáveis do workspace; • Rename – renomear a variável. 2.3 Current Directory Área onde é exibida uma lista dos arquivos contidos no diretório corrente. Figura 3 – Janela “Current Directory”. _______________________________________________________________________________ 7 Cálculo Numérico Utilizando Matlab
  • 8. _______________________________________________________________________________ 2.4 Command History Área onde ficam armazenadas todas as instruções executadas no MATLAB. Figura 4 – Janela “Command History”. 3. COMANDOS BÁSICOS E DECLARAÇÕES DE VARIÁVEIS Para iniciar o nosso trabalho no MATLAB é necessário aprender alguns comandos essenciais da janela de trabalho (command window) e na seqüência vamos aplicá-los. Tabela 1 – Comando Básicos. who Mostra as variáveis do espaço de trabalho whos Mostra as variáveis do espaço de trabalho com detalhes clear Limpa a memória do espaço de trabalho clc Limpa a tela dir Mostra o conteúdo do diretório que se encontra cd Informa ou altera o diretório corrente what Exibe os arquivos Matlab contidos no diretório 4. OPERAÇÕES ARITMÉTICAS As expressões podem ser construídas usando os operadores aritméticos usuais: Tabela 2 – Operadores aritméticos. + Adição - Subtração * Multiplicação / Divisão ^ Potenciação _______________________________________________________________________________ 8 Cálculo Numérico Utilizando Matlab
  • 9. _______________________________________________________________________________ Figura 5 – Exemplos de operações aritméticas. 5. EXIBINDO DADOS DE SAÍDA O formato numérico exibido na tela pode ser modificado utilizando-se o comando format, que afeta somente o modo como as matrizes são mostradas, e não como elas são computadas ou salvas. Se todos os elementos das matrizes são inteiros exatos, a matriz é mostrada em um formato sem qualquer ponto decimal. Por exemplo, x = [-1 0 1] resulta em: x = -1 0 1 Se pelo menos um dos elementos da matriz não é inteiro exato, existem várias possibilidades de formatar a saída. O formato "default", chamado de formato “short”, _______________________________________________________________________________ 9 Cálculo Numérico Utilizando Matlab
  • 10. _______________________________________________________________________________ mostra aproximadamente 4 dígitos decimais ou usam notação científica. Por exemplo, a matriz: x = [4/3 1.2345e-6] é mostrada , para cada formato usado, da seguinte maneira: x = 1.3333 0.0000 O formato-padrão pode ser alterado de duas maneiras: a partir da Janela de Menu Principal do Matlab ou pelo uso do comando “format”. O formato pode ser alterado pela seleção da opção “File>>Preferences>>Command Window”. Alternativamente, o usuário pode acionar o comando format para alterar as preferências. Este comando altera o formato-padrão de acordo com os valores dados na Tabela 3. O formato-padrão pode ser modificado para exibir mais dígitos significativos, para forçar a exibição em notação científica, exibir dados com dois dígitos decimais ou então eliminar linhas adicionais para que mais dados sejam visíveis por vez na Janela de comandos. Tabela 3 – Formatos de exibição de saída. Comando de Formatação Resultados Exemplo format short 4 dígitos decimais (formato-padrão) 12,3457 format long 14 dígitos decimais 12,34567890123457 format short e 5 dígitos mais expoente 1,2346e+001 format short g 5 dígitos no total, com ou sem expoente 12,346 format long e 15 dígitos mais expoente 1,234567890123457e+0001 format long g 15 dígitos no total, com ou sem expoente 12,3456789012346 format bank Formato monetário 12,35 format hex Exibição hexadecimal de bits 4028b0fcd32f707a format rat Razão aproximada entre inteiros pequenos 1000/81 5.1 O Comando disp O comando disp exibe o conteúdo de uma variável, mas, ocultando o nome da mesma, e/ou mostra strings na forma de textos. A formageral do comando disp é: disp (nome de uma variável) ou dsisp (‘string de texto’) Toda vez que um comando disp é executado, a saída que ele produz é mostrada numa nova linha. Por exemplo: % A variável A é inicializada com uma matriz 2x3 A=[5 9 1; 7 2 4] A = 5 9 1 7 2 4 10 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 11. _______________________________________________________________________________ % O comando disp é utilizado para exibir a matriz A disp(A) 5 9 1 7 2 4 % O comando disp é utilizado para mostrar uma mensagem disp('O problema não possui solução') O problema não possui solução O código abaixo ensina como utilizar os comandos input e disp em uma rotina para calcular a soma entre 3 números. Ao final da soma o a rotina exibe um texto juntamente com o resultado da soma. Figura 6 – M-File implementado, Janela Editor. Figura 7 – Algoritmo executando na Janela de Comandos. 11 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 12. _______________________________________________________________________________ 6. OPERADORES LÓGICOS Um operador lógico examina senteças verdadeiras/falsas e produz resultados verdadeiro (1) ou falso (0), de acordo com a funcionalidade do operador. Por exemplo, o operador lógico AND resulta 1 (verdadeiro) se, e somente se, todas as senteças envolvidas na operação forem verdadeiras. Tanto os operadores lógicos quanto relacionais podem ser utlizados em expressões matemáticas ou, como será visto adiante, serem combinados a outros comando para controlar ou tomar decisão sobre o fluxo do programa. Tabela 4 – Operadores lógicos. Símbolo Operador & e | ou ~ não 7. OPERADORES RELACIONAIS O operador relacional compara dois números determinando se oresultado da sentça de comparação é verdadeiro (V) ou falso (F). Por exemplo (5<8 V), ou seja, se a senteça for verdadeira o valor retornado é 1. Caso contrário, o valor retornado é 0. Tabela 5 – Operadores lógicos. Símbolo Operador < menor que <= menor ou igual que > maior que >= maior ou igual que == igual ~= diferente Perceba que o operador relacional que testa a igualdade entre dois objetos é representado por dois sinais de igualdade (==), sem espaço entre eles. Isso porque um único sinal de igualdade representa o operador de atribuição. Os demais operadores duplos (representados por dois caracteres) também não possuem espaços entre os caracteres (<=, >=, ~=). 12 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 13. _______________________________________________________________________________ Figura 8 – Exemplos com operadores relacionais. 8. CÁLCULO MATRICIAL As matrizes em Matlab podem ter uma ou mais dimensões. Matrizes unidimensionais podem ser visualizadas como uma série de valores colcoados em uma linha ou em uma coluna, como um único índice para selecionar os elementos individuais da matriz. O Matlab permite a criação de matrizes com tantas dimensões quanto necessário para um dado problema. Essas matrizes têm um índice para cada dimensão, e um elemento individual é selecionado pela especificação de um valor para cada índice. 8.1 Elementos de uma Matriz Elementos de uma matriz podem ser qualquer expressão do MATLAB. Por exemplo: x=[-1.3 log(4.23^3) (1+2+3)/4*5] x = -1.3000 4.3266 7.5000 Elementos individuais de uma matriz podem ser referenciados com seus respectivos índices entre parênteses. No exemplo anterior, para referenciar o segundo elemento do vetor x: x(2) ans = 4.3266 13 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 14. _______________________________________________________________________________ Analogamente em uma matriz, com linha e coluna determinada tenho um elemento. Seja: x=[1 2 3;4 5 6;7 8 9] x = 1 2 3 4 5 6 7 8 9 >> %% extrair o elemento da linha 2 e coluna 3 x(2,3) ans = 6 Repare que a referência é sempre na forma matriz(linha,coluna). 8.2 Soma e Subtração Os símbolos + e - denotam adição e subtração de matrizes. A operação é definida sempre que as matrizes tenham a mesma dimensão. Exemplo: A = [1 2; 3 4] A = 1 2 3 4 B=A' B = 1 3 2 4 C=A+B C = 2 5 5 8 A adição e subtração também é definida quando um dos operandos for um escalar. Exemplo: D=C-2 D = 14 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 15. _______________________________________________________________________________ 0 3 3 6 8.3 Multiplicação de uma Matriz por um Escalar A A = 1 2 3 4 2*A ans = 2 4 6 8 D=3*A D = 3 6 9 12 8.4 Multiplicação entre Matrizes A multiplicação de matrizes é indicada por "*". A multiplicação A*B é definida somente se a segunda dimensão de A for igual à primeira dimensão de B, ou seja, o número de colunas da primeira matriz for igual ao número de linhas da segunda matriz. Assim a multiplicação pode ser executada como: A A = 1 2 3 4 B B = 1 3 2 4 A*B ans = 5 11 11 25 15 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 16. _______________________________________________________________________________ 8.5 Divisão Direta de Matrizes Existem dois símbolos para divisão de matrizes no MATLAB "" e "/". Se A é uma matriz quadrada não singular, então AB e A/B correspondem respectivamente a inv(A)*B e A*inv(B), por exemplo: A=[1 2; 3 4] A = 1 2 3 4 B=[5 6; 7 8] B = 5 6 7 8 AB ans = -3 -4 4 5 A/B ans = 3.0000 -2.0000 2.0000 -1.0000 %%divisão de elemento por elemento A./B ans = 0.2000 0.3333 0.4286 0.5000 8.6 Potênciação A expressão A^p eleva A à p-ésima potência e é definida se A é matriz quadrada e p um escalar. Se p é um inteiro maior do que um, a potenciação é computada como múltiplas multiplicações. Por exemplo: A A = 1 2 3 4 A^3 16 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 17. _______________________________________________________________________________ ans = 37 54 81 118 %% potenciação de elementos por elementos A.^3 ans = 1 8 27 64 8.7 Transposta de uma Matriz O caracter ' (apóstrofe) denota transposta de uma matriz. Se z for complexo, z' é o transposto conjugado complexo de z. Exemplo: A = [1 2; 3 4] A = 1 2 3 4 %% realiza a transposta da matriz A A' ans = 1 3 2 4 %% no caso de números complexos, z’ é o conjugado complexo de z z=2+5i z = 2.0000 + 5.0000i z' ans = 2.0000 - 5.0000i 8.8 Determinante Para calcularmos o determinante de uma matriz utilizamos o comando det(matriz). %% Entrando com a matriz A 5x5 A=[1 2 4 5 6;5 1 1 3 5;7 8 9 9 0;2 2 4 0 9;1 1 1 2 3] A = 1 2 4 5 6 5 1 1 3 5 17 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 18. _______________________________________________________________________________ 7 8 9 9 0 2 2 4 0 9 1 1 1 2 3 %% Calculando o determinante da matriz A det(A) ans = -1145 8.9 Inversa da Matriz Para calcularmos a inversa de uma matriz utilizamos o comando inv(matriz). %% Calculando a inversa da Matriz A inv(A) ans = -0.0271 0.2489 0.0227 0.0157 -0.4079 -0.6218 -0.3799 0.1022 0.0707 1.6646 0.3991 0.1048 0.0201 0.0908 -1.2454 0.1747 0.0393 -0.0175 -0.1659 0.0830 -0.0332 -0.0175 -0.0367 0.0515 0.2742 8.10 Autovalores e Autovetores A função eig( ) calcula os autovetores e os autovalores de A, respectivamente. Existem funções que retornam dois ou mais valores. Nestes casos, os valores de saída devem estar entre colchetes [ ] e separados por vírgula. Exemplo: A=[1 -1;-4 1] A = 1 -1 -4 1 %% Retorna um vetor com os autovalores da matriz A; eig(A) ans = 3.0000 -1.0000 [V, D] = eig( A ): Produz matrizes de autovalores (D) e auto-vetores (V) da matriz A, de forma que A*V = V*D. A matriz D é a forma canônica de A menos uma matriz diagonal com os autovalores de A na diagonal principal. As colunas da matriz V são os autovetores de A; [V,D] = eig(A) %% autovetores associados a matriz A V = 0.4472 0.4472 -0.8944 0.8944 18 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 19. _______________________________________________________________________________ %% autovalores associados a matriz A D = 3.0000 0 0 -1.0000 8.11 Matriz escalonada reduzida O comando rref(matriz) encontra a matriz escalonada reduzida através do processo de escalonamento de Gauss Jordan. A=[1 2 4 5 6;5 1 1 3 5;7 8 9 9 0;2 2 4 0 9;1 1 1 2 3] A = 1 2 4 5 6 5 1 1 3 5 7 8 9 9 0 2 2 4 0 9 1 1 1 2 3 rref(A) ans = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 %% exemplo de um sistema possível e indeterminado 0*z=0 A=[1 2 8; 2 4 16; 0 1 3] A = 1 2 8 2 4 16 0 1 3 rref(A) ans = 1 0 2 0 1 3 0 0 0 8.12 Posto de uma Matriz Do exemplo anterior nota-se que a matriz em sua forma escalonda reduzida possui duas linhas não-nulas e infinitos valores para z. O número de linhas não-nulas pode ser encontrado através do comando rank(matriz), ou seja, o comano “rank” encontra o 19 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 20. _______________________________________________________________________________ “posto” da matriz, que nada mais é do que a quantidade máxima de linhas linearmente independentes da matriz. A=[1 2 8; 2 4 16; 0 1 3] A = 1 2 8 2 4 16 0 1 3 rank(A) ans = 2 rref(A) ans = 1 0 2 0 1 3 0 0 0 8.13 Números e Matrizes Complexas Números complexos são permitidos em todas operações e funções no MATLAB. Os números complexos são introduzidos usando-se as funções especiais i e j. Por exemplo z= 3 + 4*i z = 3.0000 + 4.0000i %% ou podemos escrever também z= 3 +4*j z = 3.0000 + 4.0000i As seguintes declarações mostram dois caminhos convenientes para se introduzir matrizes complexas no MATLAB: A= [1 2; 3 4]+i*[5 6;7 8] A = 1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 7.0000i 4.0000 + 8.0000i Que produz o mesmo resultado que: A= [1+5*i 2+6*i; 3+7*i 4+8*i] 20 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 21. _______________________________________________________________________________ A = 1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 7.0000i 4.0000 + 8.0000i 8.14 Matriz diagonal ou diagonal de uma matriz Se x é um vetor, diag(x) é a matriz diagonal com x na diagonal. Por exemplo: >> x=[1 2 3 1 -1 4] x = 1 2 3 1 -1 4 %% como x é um vetor, diag(x) monta uma matriz na qual a diagonoal principal é o vetor x diag(x) ans = 1 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 4 Se A é uma matriz quadrada, então diag(A) é um vetor cujos componentes são os elementos da diagonal de A. A=[3 11 5; 4 1 -3; 6 2 1] A = 3 11 5 4 1 -3 6 2 1 %% extrai a diagonal principal da matriz diag(A) ans = 3 1 1 8.15 Matrizes Triangulares O comando triu extrai a matriz triangular superior da matriz A, enquanto o comando tril extrai a matriz triangular inferior da matriz A. Por exemplo: A=[3 11 5; 4 1 -3; 6 2 1] 21 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 22. _______________________________________________________________________________ A = 3 11 5 4 1 -3 6 2 1 %% matriz triangular superior triu(A) ans = 3 11 5 0 1 -3 0 0 1 %% matriz triangular inferior tril(A) ans = 3 0 0 4 1 0 6 2 1 8.16 Matriz Identidade De modo a construir uma matriz identidade (quadrada ou com dimensão n x m), a função a utilizar é dada por: eye(n,m) Exemplo: eye(5,5) ans = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 eye(5,8) ans = 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 8.17 Matriz Composta por Elementos Unitários No caso de ser necessário a obtenção de uma matriz composta apenas por elementos unitários, temos que: ones(n,m) 22 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 23. _______________________________________________________________________________ ones(5,5) ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ones(5,8) ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8.18 Matriz Nula (composta por elementos nulos) Para efetuar qualquer tipo de manipulação matricial, poderá ser útil a construção de uma matriz composta por elementos nulos: zeros(n,m) zeros(5,5) ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.19 Matriz Aleatória A elaboração de testes a qualquer programa desenvolvido no MATLAB, ou para utilização de um outro qualquer modo, poderá fazer uso de matrizes compostas por números aleatórios uniformemente distribuídos no intervalo entre 0 e 1: rand(n,m) rand(3,3) ans = 0.171186687811562 0.276922984960890 0.823457828327293 0.706046088019609 0.046171390631154 0.694828622975817 0.031832846377421 0.097131781235848 0.317099480060861 No caso de se pretender uma distribuição normal dos números aleatórios compreendidos entre 0 e 1, a função a utilizar será: randn(n,m) randn(3,3) 23 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 24. _______________________________________________________________________________ ans = -0.432564811528221 0.287676420358549 1.189164201652103 -1.665584378238097 -1.146471350681464 -0.037633276593318 0.125332306474831 1.190915465642999 0.327292361408654 9. Gerando Vetores O dois pontos ( : ) é um caracter importante no MATLAB. Escrevendo: x=1:8 x = 1 2 3 4 5 6 7 8 Cria um vetor cujo primeiro elemento é 1, o último é 8 e o passo entre os elementos do vetor é 1. O mesmo comando pode ser modificado de forma a alterar o passo entre os elementos do vetor: x = 1:1.5:8 x = 1.0000 2.5000 4.0000 5.5000 7.0000 Os dois pontos significam início:passo:fim. O valor de passo pode ser qualquer número real ( ≅ 0). A notação ( : ) é muito útil para gerar tabelas e plotar gráficos, como veremos adiante. %% cria um vetor linha x x=0:0.2:3 x = Columns 1 through 11 0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000 1.8000 2.0000 Columns 12 through 16 2.2000 2.4000 2.6000 2.8000 3.0000 %% cria um vetor linha y, a partir dos valores de x y=exp(-x) + sin(x) y = Columns 1 through 11 1.0000 1.0174 1.0597 1.1135 1.1667 1.2094 1.2332 1.2320 1.2015 1.1391 1.0446 24 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 25. _______________________________________________________________________________ Columns 12 through 16 0.9193 0.7662 0.5898 0.3958 0.1909 %% cria uma matriz 16x2 a partir dos vetores x e y transpostos z=[x' y'] z = 0 1.0000 0.2000 1.0174 0.4000 1.0597 0.6000 1.1135 0.8000 1.1667 1.0000 1.2094 1.2000 1.2332 1.4000 1.2320 1.6000 1.2015 1.8000 1.1391 2.0000 1.0446 2.2000 0.9193 2.4000 0.7662 2.6000 0.5898 2.8000 0.3958 3.0000 0.1909 Outros incrementos, diferentes da unidade podem ser utilizados, como seja o caso do seguinte exemplo que impõe um incremento de pi/4. %% criamos um vetor que começa em 0 e vai até PI, com um passo de PI/4 y = 0 : pi/4 : pi y = 0 0.7854 1.5708 2.3562 3.1416 Também são possíveis incrementos negativos: %% criamos um vetor que começa em 6 e vai até 1, com um passo de -1 z = 6 : -1 : 1 z = 6 5 4 3 2 1 9.1 O Comando linspace Pode-se, também, gerar vetores linearmente espaçados fazendo uso da função linspace. Por exemplo: %% criamos 6 pontos igualmente espaçados entre 0 e 1. k = linspace(0,1,6) k = 0 0.2000 0.4000 0.6000 0.8000 1.0000 %% criamos 5 pontos igualmente espaçados entre 0 e 10. k1=linspace(0,10,5) 25 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 26. _______________________________________________________________________________ k1 = 0 2.5000 5.0000 7.5000 10.0000 Também é possível criar um espaçamento logarítmico entre os pontos do vetor. Isto é possível através do comando logspace(x1,x2,k). Onde x1 é o ponto inicial, x2 o ponto final e k o numero total de elementos. 10. ARQUIVOS M DE COMANDOS O MATLAB normalmente é usado no modo de comando(Janela de comandos – “Command Window”). Quando você entra com uma linha de comando, ele processa e imediatamente mostra o resultado. O MATLAB também pode executar uma seqüência de comandos que está armazenada num arquivo. Estes dois modos formam um ambiente interpretativo. Os arquivos que contém declarações MATLAB são chamados M-files porque usam a extensão “*.m”. Por exemplo, o arquivo senoide.m contém declarações MATLAB para o cálculo e desenho de uma função senoidal com amplitude unitária, freqüência de 1000 Hz e ângulo de fase igual a zero: Figura 9 – Arquivo .m para o calculo de uma função seno com A=1, f=1000Hz. 26 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 27. _______________________________________________________________________________ Figura 10 – Resultado após a execução do arquivo “senoide.m”. Um M-file consiste de uma seqüência de declarações MATLAB normais, podendo incluir referencias à outros M-files. Um M-file pode chamar ele próprio de forma recursiva. Você pode criar um M-file usando um editor de texto tal como o Notepad do Windows™, Edit do DOS ou outro qualquer. Dois tipos de M-files podem ser usadas: manuscritas (scripts) e funções. Arquivos scripts automatizam uma seqüência longa de comandos. Arquivos de função permite criar novas funções às existentes. Ambos, scripts e funções são arquivos texto tipo ASCII. Figura 11 – Arquivos .m de scripts e funções. Normalmente, enquanto um M-file está sendo executado, os comandos contidos no arquivo não são mostrados na tela. O comando echo permite visualizar o comando a medida que ele vai sendo executado. Isso é especialmente útil na depuração de um programa ou para a confecção de um programa demonstrativo. Em virtude da grande utilidade dos arquivos de comandos o MATLAB possui várias funções apropriadas para o uso em arquivos M. Essas funções são: 27 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 28. _______________________________________________________________________________ Tabela 6 – Comando de entrada,saída, depuração e interação com o usuário. Comandos Descrição disp(ans) Mostra os resultados sem identificar o nome das variáveis echo Controla a exibição dos comandos dos arquivos M na janela de comandos Input Solicita ao usuário que forneça um dado de entrada pause Suspende a execução até que o usuário pressione alguma tecla pause(n) Suspende a execução por n segundos waitforbuttonpress Suspende a execução até o usuário pressione uma tecla ou um botão do mouse. 11. CONTROLE DE FLUXO Os comandos que controlam o fluxo especificam a ordem em que a computação é feita. No MATLAB estes comandos são semelhantes aos usados na linguagem C, mas com uma estrutura diferente (mais simples). 11.1 Laço For O laço for é o controlador de fluxo mais simples e usado na programação MATLAB. Em geral: for x = <valor inicial>:<incremento>:<valor final> comandos end O laço for repete as instruções dentro do laço até que o índice contador do laço alcance a condição final: for i=[1,2,3,4] disp(i^2) end 1 4 9 16 (Observe o uso da função disp, que exibe na tela o conteúdo do seu argumento). O laço for, tal como o bloco if, deve ser terminado com a instrução end. Este laço poderia ser expresso na forma mais comum: for i=1:4 disp(i^2) end 1 4 9 16 (lembre-se que 1:4 é equivalente a [1,2,3,4]). %% utilizando o incremento for i=1:1:4 disp(i^2) end 28 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 29. _______________________________________________________________________________ 1 4 9 16 O laço for possibilita que uma série de comandos seja repetida por um número de vezes fixo e pré-definido. O comando end é usado como limite inferior do corpo do laço. Exemplos: 1) Calcular a tabuada do número 17: for n=0:10 tab(n+1)=17*n; end disp(tab) 0 17 34 51 68 85 102 119 136 153 170 2) Calcular a soma de todos os números pares de 0 a 100: soma=0; for n=0:2:10 soma=soma+n; end disp(soma) 3) Calcular o fatorial de um número n: n=input(‘Digite um valor para calcular o fatorial: ‘) ; fatorial=1; for a=1:n fatorial=fatorial*a; end disp(fatorial) 11.2 Laço While Ao contrário do Laço For, que executa um grupo de comandos um número fixo de vezes, o laço while executa um grupo de comandos um número indefinido de vezes. O laço while é executado enquanto a condição expr for verdadeira: x=1; while 1+x > 1 x = x/2; end x x = 1.1102e-16 A estrutura geral é: while expressão comandos end 29 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 30. _______________________________________________________________________________ Calcular o fatorial de um número qualquer. %Fatorial com While x=input('Digite um valor: '); fat=1; while x>0 fat=fat*x; x=x-1; end disp(fat) Calcule a seguinte série com 50 termos: %Cálculo da Série n=0; x=1; serie=0; while n<50 serie=serie+x/2; x=x+2; n=n+1; end disp(serie) 1250 11.3 Estrutura If-Else-End Em diversas situações, as seqüências de comandos têm de ser executadas condicionalmente, com base em um teste relacional. Essa lógica é implementada por meio de uma das diversas formas da estrutura if-else-end. A mais simples é: if expressão comandos end Os comandos entre as instruções if e end são executados se todos os elementos na expressão forem Verdadeiros. Exemplo: Calcular o desconto de 20% para um número de cadeiras maior que 5. Sendo que o custo de cada cadeira é de R$55,00. cadeiras=input('digite o numero de cadeiras desejadas: '); preco=55; custo=cadeiras*preco; if cadeiras>5 custo=(1-20/100)*custo; end disp(custo) 30 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 31. _______________________________________________________________________________ Outra forma de usar a estrutura é: if expressão comandos executados se Verdadeiro else comandos executados se Falso end Exemplos: 1) Dado qualquer distância que um veículo deve percorrer (valor real em km), a capacidade do tanque de combustível (valor real em litros) e a média de consumo de combustível do veículo (valor real em km/litros). Supondo que o tanque estará cheio na partida, mostrar umas das mensagens: DEVE HAVER REABASTECIMENTO OU NÃO DEVE HAVER REABASTECIMENTO % DISTÂNCIA % d=input('Digite a distância a ser percorrida: '); mc=15; %media de consumo ct=45; %capacidade do tanque if mc*ct>=d disp('Não deve haver reabastecimento') else disp('Deve haver reabastecimento') end Testar para 780 km e 600 km 2) Os funcionários contratados pela prefeitura de uma cidade são classificados em 3 (três) níveis conforme a pontuação obtida em 2 (duas) provas aplicadas de acordo com o seguinte critério: Tabela 7 – Dados exemplo 2. Nível Pontuação A Superior a 8 em pelo menos uma das provas ou soma dos pontos superior a 14. B Superior a 6 em pelo menos uma das provas ou soma dos pontos superior a 9. C Nenhm dos casos acima. Em cada prova a pontuação é um valor real de 0 a 10. Desenvolva um programa que receba 2 (duas) notas de um funcionário e mostre como resposta o nível em que está classificado. %Classificação de Funcionários nota1=input('Digite a primeira nota: '); 31 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 32. _______________________________________________________________________________ nota2=input('Digite a segunda nota: '); if nota1>=8 | nota2>=8 | (nota1+nota2)>=14 disp('aluno nível A') elseif nota1>=6 | nota2>=6 | (nota1+nota2)>=9 disp('aluno nível B') else disp('aluno nivel C') end 11.4 Estrutura Switch-Case Essa estrutura funciona como uma chave seletora, escolhendo a expressão correta para executar os comandos. O comando switch é utilizado quando desejamos selecionar (chavear) condicionalmente expressões porém, na forma de lista. O formato geral do comando switch é: switch expressão case valor 1 ......... grupo de comandos case valor 2 ......... grupo de comandos case valor 3 ......... grupo de comandos otherwise ......... grupo de comandos end 1) Faça um programa que o usuário possa digitar qualquer mês do ano e como resultado seja mostrado o número de dias do mês correspondente. %Programa para saber quantos dias tem o mes % clear; clc; mes=input('digite o mes desejado: '); switch mes case {'Janeiro','Marco','Maio','Julho','Agosto','Outubro','Dezembro'} disp('31 dias') case {'Fevereiro'} disp('28 ou 29 dias') case {'Abril','Junho','Setembro','Novembro'} disp('30 dias') 32 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 33. _______________________________________________________________________________ 12. ARQUIVOS M DE FUNÇÕES É um programa elaborado como arquivo.m e que calcula algo desejado pelo programador, devolvendo somente o valor da resposta. Os comandos executados por esse programa ficam ocultos. Você só visualiza o que entra e o que sai, ou seja, uma função é uma caixa preta. Figura 12 – Princípio de funcionamento de uma função. O Matlab, como outras linguagens de programação, possui duas formas de criação de programas: roteiro (script) e função (function). Na aula passada, vimos um exemplo prático de criação de um roteiro que executava uma seqüência de comandos Matlab para o ajuste de curvas (linear, polinomial e não-linear). Quando um programa executa uma seqüência de comandos que pode ou não retornar parâmetros na janela de comandos do Matlab, então esse programa denomina-se “roteiro” no Matlab. Em inglês, roteiro é chamado script, termo esse que também é usado na língua portuguesa para descrever uma seqüência de eventos. A primeira linha executável no arquivo deve ser a linha de declaração da função. De outro modo, o MATLAB tratará o arquivo como uma rotina. A linha de declaração de uma função: • Define o arquivo como uma função (diferenciando-o de uma rotina); • Define o nome da função; • Define o número e a ordem das variáveis de entrada, além de especificar o que a função irá retornar (variáveis de saída). O formato característico da linha de declaração de uma função é: function [argumentos de saida] = nome_funcao (argumentos de entrada) Exemplo: 1) Montar um programa que realize o cálculo da distância entre dois pontos (x1, y1) e (x2, y2) em um sistema de coordenadas cartesianas. d= (x 2 − x1 )2 + ( y 2 − y1 )2 33 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 34. _______________________________________________________________________________ No caso, vamos criar um programa principal chamado distancia e através deste programa vamos chamar a função dist2.m, na qual estará implementada a foruma acima. Passo 1: Criando a função: Figura 13 – Implementação da Função “dist2”. Em um m.File implementamos o código da função. Lembre-se este arquivo .m deve ser salvo com o nome da função no caso dist2.m. Passo 2: Criando o programa principal: %% Programa distancia entre pontos %% %% o programa principal chama a função dist2 para o calculo %% disp('Calculando a distância entre dois pontos:'); ax=input('Entre com o valor de x do ponto A: '); ay=input('Entre com o valor de y do ponto A: '); bx=input('Entre com o valor de x do ponto B: '); by=input('Entre com o valor de y do ponto B: '); resp=dist2(ax,ay,bx,by); fprintf('A distância entre os potnos A e B é %fn:',resp); Figura 14 – Programa em execução. 34 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 35. _______________________________________________________________________________ 13. GRÁFICOS NO MATLAB Gráficos são ferramentas poderosas quando se deseja interpretar visualmente os resultados. Um recurso especialmente interessante nas engnharias e demais ciências exatas, onde o MATLAB encontra as maiores aplicações. O comando plot é utilizado para criação de gráficos bidimensionais. A forma mais simples desse comando é: plot (x,y) Cada um dos argumentos x e y deve ser um vetor. Além disso, os dois vetores devem possuir a mesma quantidade de elementos. Ao executar o omando plot, é gerada uma saída na janela Figure Window. Caso a janela Figure Window esteja fechada, ela será aberta automaticamente após a execução do comando. 13.1 Gráficos 2-D Os resultados apresentados a seguir foram obtidos com o auxílio do “software” de simulação PSCAD/EMTDC, no qual foram implementadas distintas situações de carga e de tensão de alimentação para averiguar os efeitos da conexão das cargas especiais modeladas no SEP. Exemplo: %% plotar a função seno %% x=0:0.1:2*pi; %%gera um vetor de 0 a 2pi y=sin(x); %% calcula o vetor das amplitudes plot(x,y); %% plota o gráfico xlabel('valores de x'); %%adiciona legenda no eixo x ylabel('amplitude'); %%adiciona legenda no eixo y grid on; %%coloca grid no grafico y2=2*sin(x); %% gera um outro vetor de amplitudes hold on; %% segura o grafico anterior para plotar junto com o novo grafico plot(x,y2,'r+:'); %%plota o novo grafico, linha na cor vermelha, "+" em cada ponto, ":" para linha tracejada title('Gráfico da Função seno'); %% insere título no grafico legend('Amplitude = 1','Amplitude = 2'); %%insere legenda no gráfico 35 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 36. _______________________________________________________________________________ Figura 15 – Gráfico gerado após a execução do programa. Exemplo: 1) Seja a função y = e ⋅ sen(x) . Como seria seu gráfico no intervalo [0 ; e1 ⋅ π ]? −x %%% Gráfico da função f(x)=exp(-x)*sin(x) %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% x=0:0.1:exp(1)*pi; %%gera o vetor x y=exp(-x).*sin(x); %%calcula as amplitudes, vetor y plot(x,y,'--b'); %%plota o grafico grid on; %% coloca o grid title('gráfico f(x)=exp(-x)*sin(x)'); %% coloca o titulo no grafico xlabel('eixo x'); %% coloca texto no eixo x ylabel('eixo y'); %% coloca texto no eixo y gtext('ponto de máximo local'); %%disponibiliza ao usuario marcar o ponto no grafico Figura 16 – Gráfico gerado após a execução do programa. 36 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 37. _______________________________________________________________________________ 1) Seja a função f ( x) = x 3 − 9 x + 3 (livro, pg.31). Como seria seu gráfico no intervalo [-4 , 3]? %%% Gráfico da função f(x)=x.^3-9.*x+3 %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% x = -4:0.1:3; %%gera o vetor x y = x.^3-9.*x+3; %%calcula as amplitudes, vetor y plot(x,y,'--b'); %%plota o grafico, linha pontilhada, na cor azul grid on; %% coloca o grid title('bf{gráfico f(x)=x.^3-9.*x+3}' ); %% coloca o titulo no grafico em negrito xlabel('eixo x'); %% coloca texto no eixo x ylabel('eixo y'); %% coloca texto no eixo y axis([-4 4 -25 15]) %%ajusta os eixos para os limites [XMIN XMAX YMIN YMAX] %%bf negrito{'texto'}, it italico{'texto'}; %%fontname{arial} Figura 17 – Gráfico da função x^3-9*x+3. 2) Utilizando o processo de ii), pg. 33 livro, vamos isolar a função f(x) e obter a equação equivalente g(x)=h(x) e esboçar o gráfico das funções g(x) e h(x) no mesmo eixo cartesiano e localizar os pontos x onde as duas curvas se interceptam. f ( x) = x 3 − 9 x + 3 g ( x) = x 3 h( x) = 9 x − 3 37 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 38. _______________________________________________________________________________ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Gráfico das funções g(x)=x.^3 e h(x)=9.*x-3 %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% x = -10:0.1:10; %%gera o vetor x g = x.^3; %%calcula as amplitudes, vetor g plot(x,g,'--b'); %%plota o grafico g(x), linha pontilhada, na cor azul grid on; %% coloca o grid h=9.*x-3; %%calcula as amplitudes, vetor h hold on; %%segura o grafico g(x) para que possamos plotar h(x) plot(x,h,'r'); %%plota o grafico h(x), linha pontilhada, na cor vermelho %% vamos plotar g e h para analisar onde g(x)=h(x), pg 35 livro. xlabel('eixo x'); %% coloca texto no eixo x ylabel('eixo y'); %% coloca texto no eixo y axis([-5 5 -40 40]) %%ajusta os eixos para os limites [XMIN XMAX YMIN YMAX] Figura 18 – Gráficos das funções g(x)=x^3 e h(x)=9x-3. 13.2 Estilos de Linhas e Símbolos Os tipos de linhas, símbolos e cores usados para plotar gráficos podem ser controlados se os padrões não são satisfatórios. Por exemplo, x = 0:0.05:1; subplot(1,2,1) plot(x,x.^2,'k*') subplot(1,2,2) plot(x,x.^2,'k --') 38 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 39. _______________________________________________________________________________ Figura 19 – Plotando gráficos com marcadores e linha pontilhada, detalhe comando “subplot”. Comando subplot = Gera vários eixos em uma mesma janela. Sintaxe: subplot(m,n,p) Parâmetros de entrada: m= número de eixos na vertical (número de linhas). n=Número de eixos na horizontal (número de colunas). p=Índice do eixo corrente Outros tipos de linhas, pontos e cores também podem ser usados: 39 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 40. _______________________________________________________________________________ 13.3 Coordenada Polar e Gráfico de Barras polar(theta,r,fmt) plota em coordenadas polares o ângulo theta, em radianos, r que é a variação radial linear, e fmt é a cadeia de caracteres contendo a descrição do tipo de curva a ser traçado (como o plot); %% Gerando gráficos em coordenadas polares theta=-2*pi:0.1:2*pi; rho=1:126; polar(theta,rho,'r*') 40 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 41. _______________________________________________________________________________ Figura 20 – Coordenadas polares. Figura 21 – Gráficos de barras. 41 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 42. _______________________________________________________________________________ %% Gerando gráficos de Barras x=-2.9:0.2:2.9; y=exp(-x.*x); subplot(2,2,1) bar(x,y) title('Grafico de barras de uma curva em forma de sino'); subplot(2,2,2) bar3(x,y) title('Grafico de barras 3-D de uma curva em forma de sino'); subplot(2,2,3) stairs(x,y) title('Grafico em escada de uma curva em forma de sino'); subplot(2,2,4) barh(x,y) title('Grafico de barras horizontal'); 13.4 Gráficos 3-D O MATLAB possui muitos recursos para visualização de dados em 3D. Este item representa as principais funções relacionadas a este tópico. Estes são alguns comandos para plotar gráficos tridimensionais e contornos. Tabela 8 – Comandos para plotar gráficos 3-D. O MATLAB define uma superfície do tipo mesh (rede) pelas coordenadas Z sobre um plano x-y. Superfícies tipo mesh são úteis para visualizar matrizes demasiadamente grandes para serem mostradas na forma numérica, ou para plotar funções de duas variáveis. O primeiro passo para plotar uma função de 2 variáveis z=f(x,y) é gerar matrizes X e Y contendo linhas e colunas repetidas, respectivamente, para funcionarem como o domínio da função. A função meshgrid transforma o domínio especificado por dois vetores x y em duas matrizes X e Y. Essas matrizes então são usadas para avaliar a função de 2 variáveis. Por exemplo, seja a função: 42 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 43. _______________________________________________________________________________ x=-pi:0.5:pi; y=-pi:0.5:pi; [Mx,My]=meshgrid(x,y); Mz=cos(Mx).*sin(My); mesh(Mx,My,Mz); Figura 22 x=-pi:0.5:pi; y=-pi:0.5:pi; [Mx,My]=meshgrid(x,y); Mz=cos(Mx).*sin(My); mesh(Mx,My,Mz); surf(Mx,My,Mz) Figura 23 43 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 44. _______________________________________________________________________________ [X,Y]=meshgrid(-8:0.5:8,-8:0.5:8); r= sqrt(X.^2+Y.^2)+eps; Z=sin(r)./r; mesh(X,Y,Z) Figura 24 [X,Y]=meshgrid(-8:0.5:8,-8:0.5:8); r= sqrt(X.^2+Y.^2)+eps; Z=sin(r)./r; mesh(X,Y,Z) surf(X,Y,Z) Figura 25 44 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 45. _______________________________________________________________________________ figure(2) [X,Y]=meshgrid(-8:0.5:8,-8:0.5:8); mesh(X,Y,3*sqrt(X.^2+Y.^2)) Figura 26 figure(3) [X,Y]=meshgrid(-8:0.5:8,-8:0.5:8); mesh(X,Y,3*sqrt(X.^2+Y.^2)) surf(X,Y,3*sqrt(X.^2+Y.^2)) Figura 27 45 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 46. _______________________________________________________________________________ Tabela 9 x=-4*pi:0.1:4*pi; y=-4*pi:0.1:4*pi; plot3(cos(x),sin(y),(x+y)) Figura 28 46 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 47. _______________________________________________________________________________ %% Equações paramétricas t=0:0.1:6*pi; x=sqrt(t).*sin(2*t); y=sqrt(t).*cos(2*t); z=0.5*t; plot3(x,y,z,'k','linewidth',2) grid on xlabel('x'); ylabel('y'); zlabel('z'); Figura 29 %% Malha e persianas verticais x=-3:0.25:3; y=-3:0.25:3; [X,Y]=meshgrid(x,y); Z=1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X); meshz(X,Y,Z) xlabel('x'); ylabel('y'); zlabel('z'); Figura 30 47 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 48. _______________________________________________________________________________ 13.5 Anotações no Gráfico O MATLAB possui comandos de fácil utilização para adicionar informações em um gráfico: Tabela 10 Por exemplo: fplot('sin', [-pi pi]) title('Gráfico da função f(x)=seno(x), -pi<x<pi') xlabel('x') ylabel('f(x)') grid Figura 31 48 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 49. _______________________________________________________________________________ 14. POLINÔMIOS Encontrar raízes de um polinômio, isto é, os valores para os quais o polinômio é igual a zero. No MATLAB, um polinômio é representado por um vetor linha contendo seus coeficientes em ordem decrescente. Por exemplo: x 4 − 12 x 3 + 0 x 2 + 25 x + 116 é introduzido como: p=[1 -12 0 25 116] p = 1 -12 0 25 116 14.1 Raízes Dada essa forma, as raízes do polinômio são encontradas usando-se a função roots(p): roots(p) ans = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i Dadas as raízes também é possível construir o polinômio associado. O comando que executa tal procedimento é o comando poly, como exemplo: >> p=[1 -12 0 25 116] p = 1 -12 0 25 116 >> r=roots(p) r = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i >> p2=poly(r) p2 = 1.0000 -12.0000 -0.0000 25.0000 116.0000 >> 49 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 50. _______________________________________________________________________________ Calcular a raiz do polinômio P ( x) = x 3 − 2 x − 5 >> p=[1 0 -2 -5] p = 1 0 -2 -5 >> r=roots(p) r = 2.0946 -1.0473 + 1.1359i -1.0473 - 1.1359i >> Por convenção o Matlab armazena as raízes em vetores coluna. 14.2 Multiplicação A multiplicação polinomial é efetuada por meio da função conv(que faz a convolução entre dois vetores). Consideremos o produto de dois polinômios a ( x) = x + 2 x + 3 x + 4 e 3 2 b( x) = x 3 + 4 x 2 + 9 x + 16 . a=[1 2 3 4]; b=[1 4 9 16]; c=conv(a,b) c = 1 6 20 50 75 84 64 Consideremos os polinômios P ( x) = x 2 + 2 x + 3 e Q( x) = 4 x 2 + 5 x + 6 >> P=[1 2 3] P = 1 2 3 >> Q=[4 5 6] Q = 4 5 6 >> R=conv(P,Q) R = 4 13 28 27 18 >> 50 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 51. _______________________________________________________________________________ Nos devolve o resultado: 4 13 28 27 18. Isto é R ( x) = P ( x).Q( x) = 4 x 4 + 13x 3 + 28 x 2 + 27 x + 18 14.3 Adição O MATLAB possui uma função direta para somar polinômios: a=[1 2 3 4]; b=[1 4 9 16]; d=a+b d = 2 6 12 20 Quando dois polinômios forem de ordens diferentes, aquele que tiver menor ordem terá de ser preenchido com coeficientes iguais a zero, a fim de torná-lo da mesma ordem do polinômio de ordem mais alta. Exemplo: >> e= c+[0 0 0 d] e= 1 6 20 52 81 96 84 14.4 Divisão Consideremos o polinômio P ( x) = 4 x 3 + x 2 − 2 x + 3 e Q( x) = x 2 + 3 x + 6 . >> P=[4 1 -2 3] P = 4 1 -2 3 >> Q=[1 3 6] Q = 1 3 6 >> [q r]=deconv(P,Q) q = 4 -11 r = 0 0 7 69 Isto é, q ( x ) = 4 x − 11 quociente e r ( x ) = 7 x + 69 resto. 51 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 52. _______________________________________________________________________________ 14.5 Cálculo de Polinômios O comando que realiza o calculo dos valores de f(x) podem ser realizados através do comando polyval. x=linspace(-1,3);%% escolhe 100 pontos entre –1 e 3. p=[1 4 -7 -10]; %%define o polinômio p(x)=x3+4x2-7x-10 v=polyval(p,x) %%calcula p(x) nos valores armazenados em x e armazena o resultado em v. O resultado pode ser representado graficamente usando-se: plot(x,v) grid 14.6 Derivada de Polinômios Considere o seguinte polinômio P ( x) = 2 x 4 − x 3 + 3 x 2 + 5 x + 9 , vamos derivar este polinômio: >> P=[2 -1 3 5 9] P = 2 -1 3 5 9 >> polyder(P) ans = 8 -3 6 5 >> Isto é P ' ( x ) = 8 x − 3 x + 6 x + 5 3 2 14.7 Derivada de um Produto de Polinômios Considere os seguintes polinômios: P ( x) = x 2 − 5 x + 9 e Q( x) = x 2 + x − 1 >> P=[1 -5 9] P = 1 -5 9 >> Q=[1 1 -1] Q = 1 1 -1 >> polyder(P,Q) ans = 52 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 53. _______________________________________________________________________________ 4 -12 6 14 >> Nos devolve como resultado: 4 -12 6 14. Isto é P ' ( x ) = 4 x − 12 x + 6 x + 14 3 2 14.8 Derivada de um Quociente de Polinômios Considere os seguintes polinômios: P ( x) = x − 5 x + 9 e Q( x ) = x + 7 2 >> P=[1 -5 9] P = 1 -5 9 >> Q=[1 7] Q = 1 7 >> [n,d]=polyder(P,Q) n = 1 14 -44 d = 1 14 49 >> Isto é n( x ) = x + 14 x − 44 numerador e n( x ) = x + 14 x + 49 o denominador. 2 2 53 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 54. _______________________________________________________________________________ 15. LISTA DE FUNÇÕES DO MATLAB 54 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 55. _______________________________________________________________________________ 55 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 56. _______________________________________________________________________________ 56 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 57. _______________________________________________________________________________ 57 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 58. _______________________________________________________________________________ 58 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 59. _______________________________________________________________________________ 59 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 60. _______________________________________________________________________________ 60 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 61. _______________________________________________________________________________ 61 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 62. _______________________________________________________________________________ 62 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 63. _______________________________________________________________________________ 63 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 64. _______________________________________________________________________________ 64 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 65. _______________________________________________________________________________ 65 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 66. _______________________________________________________________________________ 66 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 67. _______________________________________________________________________________ 67 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 68. _______________________________________________________________________________ 68 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 69. _______________________________________________________________________________ 69 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 70. _______________________________________________________________________________ 70 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 71. _______________________________________________________________________________ 71 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 72. _______________________________________________________________________________ 72 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 73. _______________________________________________________________________________ 73 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab
  • 74. _______________________________________________________________________________ 16. REFERÊNCIAS BIBLIOGRÁFICAS [1]. S. J. Chapman. “Programação em Matlab Para Engenheiros”. Editora Cengage Learning, 2ª Edição, 2010. [2]. A. Gilat. “Matlab Com Aplicações em Engenharia”. Editora Bookman, 2° Edição, 2006. [3]. S. A. Vicente. “Curso Introdutório de Matlab 6.5”. Apostila, Janeiro, 2003. [4]. Matlab & Simulink, Apostila, Faculdade de Engenharia Industrial, 1994. [5]. Matlab Curso Introdutório, Apostila, Centro Brasileiro de Pesquisas Físicas, 2002. 74 _______________________________________________________________________________ Cálculo Numérico Utilizando Matlab