Upload
bortho10
View
4
Download
0
Embed Size (px)
Citation preview
Universidade Federal de So Joo Del-Rei Campus Alto Paraopeba
Disciplina: Clculo Numrico
Apostila de Matlab
Prof. Alexandre Cndido Moreira Prof. Heber Tormentino de Sousa
Agosto de 2010
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 2
SUMRIO
1. INTRODUO 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 BSICOS E DECLARAES DE VARIVEIS 8
4. OPERAES ARITMTICAS 8
5. EXIBINDO DADOS DE SADA 9 5.1 O Comando disp 10
6. OPERADORES LGICOS 12
7. OPERADORES RELACIONAIS 12
8. CLCULO MATRICIAL 13 8.1 Elementos de uma Matriz 13 8.2 Soma e Subtrao 14 8.3 Multiplicao de uma Matriz por um Escalar 15 8.4 Multiplicao entre Matrizes 15 8.5 Diviso Direta de Matrizes 16 8.6 Potnciao 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 Nmeros 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 Unitrios 22 8.18 Matriz Nula (composta por elementos nulos) 23 8.19 Matriz Aleatria 23
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico 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 Lao For 28 11.2 Lao While 29 11.3 Estrutura If-Else-End 30 11.4 Estrutura Switch-Case 32
12. ARQUIVOS M DE FUNES 33
13. GRFICOS NO MATLAB 35 13.1 Grficos 2-D 35 13.2 Estilos de Linhas e Smbolos 38 13.3 Coordenada Polar e Grfico de Barras 40 13.4 Grficos 3-D 42 13.5 Anotaes no Grfico 48
14. POLINMIOS 49 14.1 Razes 49 14.2 Multiplicao 50 14.3 Adio 51 14.4 Diviso 51 14.5 Clculo de Polinmios 52 14.6 Derivada de Polinmios 52 14.7 Derivada de um Produto de Polinmios 52 14.8 Derivada de um Quociente de Polinmios 53
15. LISTA DE FUNES DO MATLAB 54
16. REFERNCIAS BIBLIOGRFICAS 74
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 4
1. INTRODUO
MATLAB (abreviatura de Matrix Laboratory Laboratrio de Matrizes) um programa d ecomputador de uso especfico, otimizado para executar clculos cientficos e de engenharia. Ele nasceu como um programa para operaes matemticas sobre matrizes, mas ao longo dos anos transformou-se em um sistema computacional flexvel capaz de resolver essencialmente qualquer problema tcnico.
Seus elementos bsicos so matrizes que no requerem dimensionamento. Ele permite implementar e resolver problemas matemticos muito mais rpida e eficientemente que atravs de outras linguagens como C, Basic, Pascal ou Fortran.
O MATLAB possui uma famlia de aplicativos especficos (toolboxes), que so colees de funes usadas para resolver determinados problemas tais como: otimizao, manipulao algbrica, redes neurais, processamento de sinais, simulao de sistemas dinmicos, entre outros.
Provavelmente, a caracterstica mais importante do MATLAB a sua extensibilidade, que permite que engenheiros, matemticos cientistas, e at mesmo voc, contribuam para o enriquecimento.
1.1 Vantagens do Matlab O Matlab tem muitas vantagens, em comparao com linguagens computacionais
convencionais, para resolver problemas tcnicos. Entre elas, temos: a) Facilidade de uso: o Matlab uma linguagem interpretada, assim como muitas
verses de Basic. b) Independncia de Plataforma: tem suporte em diferentes sistemas
computacionais: Windows XP/Vista, Linux, diversas verses de Unix e Macintosh.
c) Funes Predefinidas: conta com uma grande biblioteca de funes predefinidas, que apresentam solues testadas e empacotadas para diversas tarefas tcnicas bsicas
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 sada grfica compatvel com o computador que executa o Matlab. Este recurso torna o Matlab uma ferramenta excepcional para visualizao de dados tcnicos.
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 5
e) Interface Grfica de Usurio: tem ferramentas que permitem a um programador construir interativamente uma interface grfica de usurio (GUI Graphical User Interface) para seus programas. Com este recurso, o programador capaz de projetar programas sofisticados de anlise de dados, os quais podem ser operados por usurios 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 diminudo pela estruturao apropriada dos programas Matlab para otimizar o desempenho do cdigo vetorizado.
A segunda desvantagem o custo: uma cpia 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 coleo de valores de dados organizados em linhas e colunas, determinada por um nome nico. At mesmo escalares so tratados como matrizes em Matlab, eles so simplesmente matrizes co apenas uma linha e uma coluna.
No Matlab, os arquivos de comando tem extenso .m (M-files) e os arquivos de dados binrios default tem extenso .mat (Mat-files).
No Windows, o Matlab instalado com os seguintes diretrios: BIN contm os programas binrios do Matlab; DEMOS demonstrao em HTML EXTERN suporte s linguagens FORTRAN, C e C++ HELP contm arquivos de auxlio e documentao do Matlab JAVA suporte linguagem Java NOTEBOOK suporte gerao de documentao no formato MS-Word TEMP diretrio temporrio TOLLBOX toolboxes do Matlab WORK diretrio de trabalho.
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico 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 instrues) so digitados; As operaes podem ser realizadas e seus resultados so mostrados; Tambm nessa janela que se pode executar um arquivo m-file; O prompt >> indica que o programa est pronto aguardando uma instruo; Com as teclas (seta para cima) e (seta para baixo) possvel recuperar
todos os comandos j digitados.
2.2 Workspace
Figura 2 Janela Workspace.
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 7
a rea na qual so exibidas todas as variveis definidas na rea de trabalho; Essa janela possui quatro colunas indicando o nome, dimenso, nmero de bytes e
a classe de cada varivel; As variveis podem ser editadas e visualizadas nessa prpria janela, basta dar um
click-duplo para edit-las; H um menu flutuante que possvel:
Open abrir a janela; Graph criar grficos a partir dos dados contidos na varivel; Select All selecionar todas as variveis; Import Data importar variveis de um arquivo para o workspace; Save Selection As salvar as variveis selecionadas em um arquivo; Save Workspace As salvar todas as variveis do workspace em um arquivo; Copy copiar a varivel para a rea de transferncia de dados do Windows; Delete apagar a varivel do workspace; Clear Workspace apagar todas as variveis do workspace; Rename renomear a varivel.
2.3 Current Directory
rea onde exibida uma lista dos arquivos contidos no diretrio corrente.
Figura 3 Janela Current Directory.
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 8
2.4 Command History
rea onde ficam armazenadas todas as instrues executadas no MATLAB.
Figura 4 Janela Command History.
3. COMANDOS BSICOS E DECLARAES DE VARIVEIS
Para iniciar o nosso trabalho no MATLAB necessrio aprender alguns comandos essenciais da janela de trabalho (command window) e na seqncia vamos aplic-los.
Tabela 1 Comando Bsicos. who Mostra as variveis do espao de trabalho
whos Mostra as variveis do espao de trabalho com detalhes clear Limpa a memria do espao de trabalho clc Limpa a tela dir Mostra o contedo do diretrio que se encontra cd Informa ou altera o diretrio corrente
what Exibe os arquivos Matlab contidos no diretrio
4. OPERAES ARITMTICAS
As expresses podem ser construdas usando os operadores aritmticos usuais:
Tabela 2 Operadores aritmticos. + Adio -
Subtrao * Multiplicao / Diviso ^ Potenciao
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 9
Figura 5 Exemplos de operaes aritmticas.
5. EXIBINDO DADOS DE SADA
O formato numrico exibido na tela pode ser modificado utilizando-se o comando format, que afeta somente o modo como as matrizes so mostradas, e no como elas so computadas ou salvas.
Se todos os elementos das matrizes so 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 no inteiro exato, existem vrias possibilidades de formatar a sada. O formato "default", chamado de formato short,
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 10
mostra aproximadamente 4 dgitos decimais ou usam notao cientfica. 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-padro 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 seleo da opo File>>Preferences>>Command Window.
Alternativamente, o usurio pode acionar o comando format para alterar as preferncias. Este comando altera o formato-padro de acordo com os valores dados na Tabela 3. O formato-padro pode ser modificado para exibir mais dgitos significativos, para forar a exibio em notao cientfica, exibir dados com dois dgitos decimais ou ento eliminar linhas adicionais para que mais dados sejam visveis por vez na Janela de comandos.
Tabela 3 Formatos de exibio de sada. Comando de Formatao Resultados Exemplo format short 4 dgitos decimais (formato-padro) 12,3457 format long 14 dgitos decimais 12,34567890123457 format short e 5 dgitos mais expoente 1,2346e+001 format short g 5 dgitos no total, com ou sem expoente 12,346 format long e 15 dgitos mais expoente 1,234567890123457e+0001 format long g 15 dgitos no total, com ou sem expoente 12,3456789012346 format bank Formato monetrio 12,35 format hex Exibio hexadecimal de bits 4028b0fcd32f707a format rat Razo aproximada entre inteiros pequenos 1000/81
5.1 O Comando disp O comando disp exibe o contedo de uma varivel, mas, ocultando o nome da
mesma, e/ou mostra strings na forma de textos. A formageral do comando disp : disp (nome de uma varivel) ou dsisp (string de texto)
Toda vez que um comando disp executado, a sada que ele produz mostrada numa nova linha. Por exemplo: % A varivel A inicializada com uma matriz 2x3 A=[5 9 1; 7 2 4]
A =
5 9 1 7 2 4
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico 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 no possui soluo') O problema no possui soluo
O cdigo abaixo ensina como utilizar os comandos input e disp em uma rotina para calcular a soma entre 3 nmeros. 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.
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 12
6. OPERADORES LGICOS
Um operador lgico examina senteas verdadeiras/falsas e produz resultados verdadeiro (1) ou falso (0), de acordo com a funcionalidade do operador. Por exemplo, o operador lgico AND resulta 1 (verdadeiro) se, e somente se, todas as senteas envolvidas na operao forem verdadeiras. Tanto os operadores lgicos quanto relacionais podem ser utlizados em expresses matemticas ou, como ser visto adiante, serem combinados a outros comando para controlar ou tomar deciso sobre o fluxo do programa.
Tabela 4 Operadores lgicos. Smbolo Operador
& e | ou ~ no
7. OPERADORES RELACIONAIS
O operador relacional compara dois nmeros determinando se oresultado da senta de comparao verdadeiro (V) ou falso (F). Por exemplo (5= 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 espao entre eles. Isso porque um nico sinal de igualdade representa o operador de atribuio. Os demais operadores duplos (representados por dois caracteres) tambm no possuem espaos entre os caracteres (=, ~=).
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 13
Figura 8 Exemplos com operadores relacionais.
8. CLCULO MATRICIAL
As matrizes em Matlab podem ter uma ou mais dimenses. Matrizes unidimensionais podem ser visualizadas como uma srie 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 criao de matrizes com tantas dimenses quanto necessrio para um dado problema. Essas matrizes tm um ndice para cada dimenso, e um elemento individual selecionado pela especificao de um valor para cada ndice.
8.1 Elementos de uma Matriz
Elementos de uma matriz podem ser qualquer expresso 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 parnteses. No exemplo anterior, para referenciar o segundo elemento do vetor x: x(2)
ans =
4.3266
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico 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 referncia sempre na forma matriz(linha,coluna).
8.2 Soma e Subtrao
Os smbolos + e - denotam adio e subtrao de matrizes. A operao definida sempre que as matrizes tenham a mesma dimenso. 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 adio e subtrao tambm definida quando um dos operandos for um escalar. Exemplo: D=C-2
D =
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 15
0 3 3 6
8.3 Multiplicao 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 Multiplicao entre Matrizes
A multiplicao de matrizes indicada por "*". A multiplicao A*B definida somente se a segunda dimenso de A for igual primeira dimenso de B, ou seja, o nmero de colunas da primeira matriz for igual ao nmero de linhas da segunda matriz. Assim a multiplicao pode ser executada como: A
A =
1 2 3 4
B
B =
1 3 2 4
A*B
ans =
5 11 11 25
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 16
8.5 Diviso Direta de Matrizes Existem dois smbolos para diviso de matrizes no MATLAB "\" e "/". Se A uma
matriz quadrada no singular, ento A\B 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
A\B
ans =
-3 -4 4 5
A/B
ans =
3.0000 -2.0000 2.0000 -1.0000
%%diviso de elemento por elemento A./B
ans =
0.2000 0.3333 0.4286 0.5000
8.6 Potnciao
A expresso A^p eleva A p-sima potncia e definida se A matriz quadrada e p um escalar. Se p um inteiro maior do que um, a potenciao computada como mltiplas multiplicaes.
Por exemplo: A
A =
1 2 3 4
A^3
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 17
ans =
37 54 81 118
%% potenciao de elementos por elementos A.^3
ans =
1 8 27 64
8.7 Transposta de uma Matriz
O caracter ' (apstrofe) 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 nmeros 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
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico 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 funo eig( ) calcula os autovetores e os autovalores de A, respectivamente.
Existem funes que retornam dois ou mais valores. Nestes casos, os valores de sada devem estar entre colchetes [ ] e separados por vrgula. 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 cannica de A menos uma matriz diagonal com os autovalores de A na diagonal principal. As colunas da matriz V so os autovetores de A;
[V,D] = eig(A) %% autovetores associados a matriz A V =
0.4472 0.4472 -0.8944 0.8944
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico 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 atravs 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 possvel 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 no-nulas e infinitos valores para z. O nmero de linhas no-nulas pode ser encontrado atravs do comando rank(matriz), ou seja, o comano rank encontra o
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 20
posto da matriz, que nada mais do que a quantidade mxima 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 Nmeros e Matrizes Complexas
Nmeros complexos so permitidos em todas operaes e funes no MATLAB. Os nmeros complexos so introduzidos usando-se as funes especiais i e j. Por exemplo z= 3 + 4*i
z =
3.0000 + 4.0000i
%% ou podemos escrever tambm z= 3 +4*j
z =
3.0000 + 4.0000i
As seguintes declaraes 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]
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico 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, ento diag(A) um vetor cujos componentes so 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]
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico 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 dimenso n x m), a
funo 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 Unitrios
No caso de ser necessrio a obteno de uma matriz composta apenas por elementos unitrios, temos que: ones(n,m)
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico 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 manipulao matricial, poder ser til a construo 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 Aleatria A elaborao de testes a qualquer programa desenvolvido no MATLAB, ou para
utilizao de um outro qualquer modo, poder fazer uso de matrizes compostas por nmeros aleatrios uniformemente distribudos 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 distribuio normal dos nmeros aleatrios compreendidos entre 0 e 1, a funo a utilizar ser: randn(n,m) randn(3,3)
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico 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 incio:passo:fim. O valor de passo pode ser qualquer nmero real ( 0). A notao ( : ) muito til para gerar tabelas e plotar grficos, 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
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico 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 impe um incremento de pi/4. %% criamos um vetor que comea 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
Tambm so possveis incrementos negativos: %% criamos um vetor que comea 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, tambm, gerar vetores linearmente espaados fazendo uso da funo
linspace. Por exemplo: %% criamos 6 pontos igualmente espaados 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 espaados entre 0 e 10. k1=linspace(0,10,5)
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 26
k1 =
0 2.5000 5.0000 7.5000 10.0000
Tambm possvel criar um espaamento logartmico entre os pontos do vetor. Isto possvel atravs 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 tambm pode executar uma seqncia de comandos que est armazenada num arquivo. Estes dois modos formam um ambiente interpretativo. Os arquivos que contm declaraes MATLAB so chamados M-files porque usam a extenso *.m. Por exemplo, o arquivo senoide.m contm declaraes MATLAB para o clculo e desenho de uma funo senoidal com amplitude unitria, freqncia de 1000 Hz e ngulo de fase igual a zero:
Figura 9 Arquivo .m para o calculo de uma funo seno com A=1, f=1000Hz.
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 27
Figura 10 Resultado aps a execuo do arquivo senoide.m.
Um M-file consiste de uma seqncia de declaraes MATLAB normais, podendo incluir referencias outros M-files. Um M-file pode chamar ele prprio 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 funes. Arquivos scripts automatizam uma seqncia longa de comandos. Arquivos de funo permite criar novas funes s existentes. Ambos, scripts e funes so arquivos texto tipo ASCII.
Figura 11 Arquivos .m de scripts e funes.
Normalmente, enquanto um M-file est sendo executado, os comandos contidos no arquivo no so mostrados na tela. O comando echo permite visualizar o comando a medida que ele vai sendo executado. Isso especialmente til na depurao de um programa ou para a confeco de um programa demonstrativo.
Em virtude da grande utilidade dos arquivos de comandos o MATLAB possui vrias funes apropriadas para o uso em arquivos M. Essas funes so:
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 28
Tabela 6 Comando de entrada,sada, depurao e interao com o usurio. Comandos Descrio
disp(ans) Mostra os resultados sem identificar o nome das variveis echo Controla a exibio dos comandos dos arquivos M na janela de comandos Input Solicita ao usurio que fornea um dado de entrada pause Suspende a execuo at que o usurio pressione alguma tecla pause(n) Suspende a execuo por n segundos waitforbuttonpress Suspende a execuo at o usurio pressione uma tecla ou um boto do mouse.
11. CONTROLE DE FLUXO Os comandos que controlam o fluxo especificam a ordem em que a computao
feita. No MATLAB estes comandos so semelhantes aos usados na linguagem C, mas com uma estrutura diferente (mais simples).
11.1 Lao For
O lao for o controlador de fluxo mais simples e usado na programao MATLAB. Em geral: for x = :: comandos end O lao for repete as instrues dentro do lao at que o ndice contador do lao
alcance a condio final: for i=[1,2,3,4] disp(i^2) end 1 4 9 16 (Observe o uso da funo disp, que exibe na tela o contedo do seu argumento). O lao for, tal como o bloco if, deve ser terminado com a instruo end. Este lao 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
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 29
1
4
9
16
O lao for possibilita que uma srie de comandos seja repetida por um nmero de vezes fixo e pr-definido. O comando end usado como limite inferior do corpo do lao. Exemplos: 1) Calcular a tabuada do nmero 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 nmeros pares de 0 a 100: soma=0; for n=0:2:10 soma=soma+n; end disp(soma)
3) Calcular o fatorial de um nmero n: n=input(Digite um valor para calcular o fatorial: ) ; fatorial=1; for a=1:n fatorial=fatorial*a; end disp(fatorial)
11.2 Lao While Ao contrrio do Lao For, que executa um grupo de comandos um nmero fixo de
vezes, o lao while executa um grupo de comandos um nmero indefinido de vezes. O lao while executado enquanto a condio expr for verdadeira: x=1; while 1+x > 1 x = x/2; end x
x =
1.1102e-16
A estrutura geral : while expresso comandos end
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 30
Calcular o fatorial de um nmero 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 srie com 50 termos:
%Clculo da Srie n=0; x=1; serie=0; while n5 custo=(1-20/100)*custo; end disp(custo)
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 31
Outra forma de usar a estrutura : if expresso
comandos executados se Verdadeiro else
comandos executados se Falso end
Exemplos:
1) Dado qualquer distncia que um veculo deve percorrer (valor real em km), a capacidade do tanque de combustvel (valor real em litros) e a mdia de consumo de combustvel do veculo (valor real em km/litros). Supondo que o tanque estar cheio na partida, mostrar umas das mensagens:
DEVE HAVER REABASTECIMENTO OU NO DEVE HAVER REABASTECIMENTO
% DISTNCIA % d=input('Digite a distncia a ser percorrida: '); mc=15; %media de consumo ct=45; %capacidade do tanque if mc*ct>=d disp('No deve haver reabastecimento') else disp('Deve haver reabastecimento') end
Testar para 780 km e 600 km
2) Os funcionrios contratados pela prefeitura de uma cidade so classificados em 3 (trs) nveis conforme a pontuao obtida em 2 (duas) provas aplicadas de acordo com o seguinte critrio:
Tabela 7 Dados exemplo 2. Nvel Pontuao
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 pontuao um valor real de 0 a 10. Desenvolva um programa que receba 2 (duas) notas de um funcionrio e mostre como resposta o nvel em que est classificado. %Classificao de Funcionrios nota1=input('Digite a primeira nota: ');
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 32
nota2=input('Digite a segunda nota: '); if nota1>=8 | nota2>=8 | (nota1+nota2)>=14 disp('aluno nvel A') elseif nota1>=6 | nota2>=6 | (nota1+nota2)>=9 disp('aluno nvel B') else disp('aluno nivel C') end
11.4 Estrutura Switch-Case
Essa estrutura funciona como uma chave seletora, escolhendo a expresso correta para executar os comandos.
O comando switch utilizado quando desejamos selecionar (chavear) condicionalmente expresses porm, na forma de lista. O formato geral do comando switch :
switch expresso case valor 1 ......... grupo de comandos case valor 2 ......... grupo de comandos case valor 3 ......... grupo de comandos otherwise ......... grupo de comandos
end
1) Faa um programa que o usurio possa digitar qualquer ms do ano e como resultado seja mostrado o nmero de dias do ms 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')
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 33
12. ARQUIVOS M DE FUNES
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 funo uma caixa preta.
Figura 12 Princpio de funcionamento de uma funo.
O Matlab, como outras linguagens de programao, possui duas formas de criao de programas: roteiro (script) e funo (function). Na aula passada, vimos um exemplo prtico de criao de um roteiro que executava uma seqncia de comandos Matlab para o ajuste de curvas (linear, polinomial e no-linear). Quando um programa executa uma seqncia de comandos que pode ou no retornar parmetros na janela de comandos do Matlab, ento esse programa denomina-se roteiro no Matlab. Em ingls, roteiro chamado script, termo esse que tambm usado na lngua portuguesa para descrever uma seqncia de eventos.
A primeira linha executvel no arquivo deve ser a linha de declarao da funo. De outro modo, o MATLAB tratar o arquivo como uma rotina. A linha de declarao de uma funo:
Define o arquivo como uma funo (diferenciando-o de uma rotina); Define o nome da funo; Define o nmero e a ordem das variveis de entrada, alm de especificar o que a
funo ir retornar (variveis de sada). O formato caracterstico da linha de declarao de uma funo :
function [argumentos de saida] = nome_funcao (argumentos de entrada)
Exemplo:
1) Montar um programa que realize o clculo da distncia entre dois pontos (x1, y1) e (x2, y2) em um sistema de coordenadas cartesianas.
( ) ( )212212 yyxxd +=
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 34
No caso, vamos criar um programa principal chamado distancia e atravs deste programa vamos chamar a funo dist2.m, na qual estar implementada a foruma acima.
Passo 1: Criando a funo:
Figura 13 Implementao da Funo dist2.
Em um m.File implementamos o cdigo da funo. Lembre-se este arquivo .m deve ser salvo com o nome da funo no caso dist2.m.
Passo 2: Criando o programa principal:
%% Programa distancia entre pontos %% %% o programa principal chama a funo dist2 para o calculo %%
disp('Calculando a distncia 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 distncia entre os potnos A e B %f\n:',resp);
Figura 14 Programa em execuo.
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 35
13. GRFICOS NO MATLAB
Grficos so ferramentas poderosas quando se deseja interpretar visualmente os resultados. Um recurso especialmente interessante nas engnharias e demais cincias exatas, onde o MATLAB encontra as maiores aplicaes.
O comando plot utilizado para criao de grficos bidimensionais. A forma mais simples desse comando :
plot (x,y) Cada um dos argumentos x e y deve ser um vetor. Alm disso, os dois vetores
devem possuir a mesma quantidade de elementos. Ao executar o omando plot, gerada uma sada na janela Figure Window. Caso a janela Figure Window esteja fechada, ela ser aberta automaticamente aps a execuo do comando.
13.1 Grficos 2-D Os resultados apresentados a seguir foram obtidos com o auxlio do software de
simulao PSCAD/EMTDC, no qual foram implementadas distintas situaes de carga e de tenso de alimentao para averiguar os efeitos da conexo das cargas especiais modeladas no SEP. Exemplo: %% plotar a funo 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 grfico 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('Grfico da Funo seno'); %% insere ttulo no grafico legend('Amplitude = 1','Amplitude = 2'); %%insere legenda no grfico
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 36
Figura 15 Grfico gerado aps a execuo do programa.
Exemplo:
1) Seja a funo )(xseney x = . Como seria seu grfico no intervalo [0 ; pi1e ]? %%% Grfico da funo 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('grfico 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 mximo local'); %%disponibiliza ao usuario marcar o ponto no grafico
Figura 16 Grfico gerado aps a execuo do programa.
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 37
1) Seja a funo 39)( 3 += xxxf (livro, pg.31). Como seria seu grfico no intervalo [-4 , 3]?
%%% Grfico da funo 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{grfico 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 Grfico da funo x^3-9*x+3.
2) Utilizando o processo de ii), pg. 33 livro, vamos isolar a funo f(x) e obter a equao equivalente g(x)=h(x) e esboar o grfico das funes g(x) e h(x) no mesmo eixo cartesiano e localizar os pontos x onde as duas curvas se interceptam.
39)( 3 += xxxf
3)( xxg =
39)( = xxh
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 38
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Grfico das funes 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 Grficos das funes g(x)=x^3 e h(x)=9x-3.
13.2 Estilos de Linhas e Smbolos
Os tipos de linhas, smbolos e cores usados para plotar grficos podem ser controlados se os padres no so satisfatrios. 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 --')
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 39
Figura 19 Plotando grficos com marcadores e linha pontilhada, detalhe comando subplot.
Comando subplot = Gera vrios eixos em uma mesma janela. Sintaxe: subplot(m,n,p) Parmetros de entrada: m= nmero de eixos na vertical (nmero de linhas). n=Nmero de eixos na horizontal (nmero de colunas). p=ndice do eixo corrente Outros tipos de linhas, pontos e cores tambm podem ser usados:
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 40
13.3 Coordenada Polar e Grfico de Barras
polar(theta,r,fmt) plota em coordenadas polares o ngulo theta, em radianos, r que a variao radial linear, e fmt a cadeia de caracteres contendo a descrio do tipo de curva a ser traado (como o plot); %% Gerando grficos em coordenadas polares theta=-2*pi:0.1:2*pi; rho=1:126; polar(theta,rho,'r*')
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 41
Figura 20 Coordenadas polares.
Figura 21 Grficos de barras.
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 42
%% Gerando grficos 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 Grficos 3-D
O MATLAB possui muitos recursos para visualizao de dados em 3D. Este item representa as principais funes relacionadas a este tpico.
Estes so alguns comandos para plotar grficos tridimensionais e contornos. Tabela 8 Comandos para plotar grficos 3-D.
O MATLAB define uma superfcie do tipo mesh (rede) pelas coordenadas Z sobre um plano x-y. Superfcies tipo mesh so teis para visualizar matrizes demasiadamente grandes para serem mostradas na forma numrica, ou para plotar funes de duas variveis.
O primeiro passo para plotar uma funo de 2 variveis z=f(x,y) gerar matrizes X e Y contendo linhas e colunas repetidas, respectivamente, para funcionarem como o domnio da funo. A funo meshgrid transforma o domnio especificado por dois vetores x y em duas matrizes X e Y. Essas matrizes ento so usadas para avaliar a funo de 2 variveis. Por exemplo, seja a funo:
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico 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
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico 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
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico 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
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico 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
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 47
%% Equaes paramtricas 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
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 48
13.5 Anotaes no Grfico O MATLAB possui comandos de fcil utilizao para adicionar informaes em um
grfico: Tabela 10
Por exemplo: fplot('sin', [-pi pi]) title('Grfico da funo f(x)=seno(x), -pi
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 49
14. POLINMIOS
Encontrar razes de um polinmio, isto , os valores para os quais o polinmio igual a zero. No MATLAB, um polinmio representado por um vetor linha contendo seus
coeficientes em ordem decrescente. Por exemplo: 11625012 234 +++ xxxx introduzido como: p=[1 -12 0 25 116]
p =
1 -12 0 25 116
14.1 Razes Dada essa forma, as razes do polinmio so encontradas usando-se a funo
roots(p): roots(p)
ans =
11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i
Dadas as razes tambm possvel construir o polinmio 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
>>
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 50
Calcular a raiz do polinmio 52)( 3 = xxxP >> 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 conveno o Matlab armazena as razes em vetores coluna.
14.2 Multiplicao A multiplicao polinomial efetuada por meio da funo conv(que faz a convoluo
entre dois vetores). Consideremos o produto de dois polinmios 432)( 23 +++= xxxxa e 1694)( 23 +++= xxxxb .
a=[1 2 3 4]; b=[1 4 9 16]; c=conv(a,b)
c =
1 6 20 50 75 84 64
Consideremos os polinmios 32)( 2 ++= xxxP e 654)( 2 ++= xxxQ >> 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
>>
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 51
Nos devolve o resultado: 4 13 28 27 18. Isto 182728134)().()( 234 ++++== xxxxxQxPxR
14.3 Adio O MATLAB possui uma funo direta para somar polinmios:
a=[1 2 3 4]; b=[1 4 9 16];
d=a+b d =
2 6 12 20
Quando dois polinmios 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 polinmio de ordem mais alta.
Exemplo: >> e= c+[0 0 0 d] e=
1 6 20 52 81 96 84
14.4 Diviso Consideremos o polinmio 324)( 23 ++= xxxxP e 63)( 2 ++= xxxQ .
>> 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 , 114)( = xxq quociente e 697)( += xxr resto.
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 52
14.5 Clculo de Polinmios O comando que realiza o calculo dos valores de f(x) podem ser realizados atravs
do comando polyval.
x=linspace(-1,3);%% escolhe 100 pontos entre 1 e 3. p=[1 4 -7 -10]; %%define o polinmio 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 Polinmios
Considere o seguinte polinmio 9532)( 234 +++= xxxxxP , vamos derivar este polinmio: >> P=[2 -1 3 5 9]
P =
2 -1 3 5 9
>> polyder(P)
ans =
8 -3 6 5
>>
Isto 5638)(' 23 ++= xxxxP
14.7 Derivada de um Produto de Polinmios
Considere os seguintes polinmios: 95)( 2 += xxxP e 1)( 2 += xxxQ >> P=[1 -5 9]
P =
1 -5 9
>> Q=[1 1 -1]
Q =
1 1 -1
>> polyder(P,Q)
ans =
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 53
4 -12 6 14
>>
Nos devolve como resultado: 4 -12 6 14. Isto 146124)(' 23 ++= xxxxP
14.8 Derivada de um Quociente de Polinmios
Considere os seguintes polinmios: 95)( 2 += xxxP e 7)( += xxQ >> 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 4414)( 2 += xxxn numerador e 4914)( 2 ++= xxxn o denominador.
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 54
15. LISTA DE FUNES DO MATLAB
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 55
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 56
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 57
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 58
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 59
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 60
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 61
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 62
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 63
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 64
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 65
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 66
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 67
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 68
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 69
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 70
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 71
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 72
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 73
_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab 74
16. REFERNCIAS BIBLIOGRFICAS
[1]. S. J. Chapman. Programao em Matlab Para Engenheiros. Editora Cengage Learning, 2 Edio, 2010.
[2]. A. Gilat. Matlab Com Aplicaes em Engenharia. Editora Bookman, 2 Edio, 2006. [3]. S. A. Vicente. Curso Introdutrio de Matlab 6.5. Apostila, Janeiro, 2003. [4]. Matlab & Simulink, Apostila, Faculdade de Engenharia Industrial, 1994. [5]. Matlab Curso Introdutrio, Apostila, Centro Brasileiro de Pesquisas Fsicas, 2002.