O MATLAB

20
Universidade Estadual do Maranhão Centro de Ciências Tecnológicas Curso Engenharia de Produção Disciplina Cálculo Numérico em Computadores Professor Teylson MATLAB Michel de Oliveira – 111k110 Manassés Gusmão – 1012211 Vinicius Lima – 1012202 Jonatas Ribeiro - 1012209

Transcript of O MATLAB

Page 1: O MATLAB

Universidade Estadual do MaranhãoCentro de Ciências TecnológicasCurso Engenharia de Produção

Disciplina Cálculo Numérico em ComputadoresProfessor Teylson

MATLAB

Michel de Oliveira – 111k110

Manassés Gusmão – 1012211

Vinicius Lima – 1012202

Jonatas Ribeiro - 1012209

São Luís – MA2012

Page 2: O MATLAB

2

Michel de Oliveira – 111k110

Manassés Gusmão – 1012211

Vinicius Lima – 1012202

Jonatas Ribeiro - 1012209

MATLAB

Trabalho desenvolvido para obtenção de nota da disciplina Cálculo Numérico em Computadores, ministrada pelo Prof. Teylson.

São Luís – MA2012

Page 3: O MATLAB

3

SUMÁRIO

1. INTRODUÇÃO.............................................................................................................4

2. AMBIENTE DE TRABALHO.....................................................................................5

3. OPERAÇÕES SIMPLES ENTRE ESCALARES........................................................6

4. REPRESENTAÇÃO DE MATRIZES E VETORES....................................................7

5. OPERAÇÕES SIMPLES ENTRE MATRIZES...........................................................9

6. GRÁFICOS.................................................................................................................10

7. APLICAÇÕES NA ENGENHARIA..........................................................................12

REFERÊNCIAS..............................................................................................................16

Page 4: O MATLAB

4

1. INTRODUÇÃO

Com o desenvolvimento da indústria de informática, máquinas cada vez mais poderosas passaram a estar disponíveis a um custo cada vez menor. Este fenômeno alterou de forma marcante os rumos das ciências da engenharia, permitindo precisão e velocidade no processamento de informações. Em virtude deste cenário, o domínio das principais ferramentas computacionais passou a ser um requisito básico para o engenheiro moderno.

Apesar da existência no mercado de um grande número de programas para a resolução dos mais diversos problemas de engenharia, um profissional deve conhecer os fundamentos de, pelo menos, uma linguagem de programação, uma vez que o desenvolvimento de ferramentas computacionais é uma atividade de grande importância nas áreas acadêmica, de pesquisa, de desenvolvimento e de engenharia básica. É comum a crença, principalmente entre iniciantes, de que os simuladores de processos comerciais são capazes de resolver todo e qualquer tipo de problema. Isto não é verdade, nenhum programa disponível tem utilização universal. É muito comum a necessidade de que o usuário, na solução de um problema específico de seu interesse, seja obrigado a programar módulos para serem acoplados aos programas comerciais, tornando-os assim passíveis de serem utilizados.

O MATLAB (MATrixLABoratory) é um ambiente, produzido pela MathWorks, Inc., que permite o desenvolvimento de programas (rotinas) computacionais para solução de problemas. Este sistema surgiu na década de 70, nas Universidades do Novo México eStanford, como um Laboratório de Matrizes para auxiliar os cursos de Teoria Matricial, Álgebra Linear e Analise Numérica. De modo geral, o MATLAB é um software serve para trabalhar com matrizes e números complexos da mesma forma como uma calculadora trabalha com números reais.

Atualmente, a capacidade do MATLAB se estende muito além da manipulação de matrizes. Ele é tanto um ambiente quanto uma linguagem de programação, e um de seus aspectos mais poderosos é que os problemas e as soluções são expressos numa linguagem matemática bem familiar. Devido a sua capacidade de fazer cálculos, visualização gráfica e programação, num ambiente de fácil uso, o MATLAB torna-se uma ferramenta eficiente para a compreensão tanto de tópicos fundamentais quanto avançados a uma gama de disciplinas.

Apesar das ultimas versões do MATLAB ter expandido sua capacidade, o elemento básico dos dados ainda é um vetor, o qual não requer declaração de dimensão ou tipo de variável. Também esse sistema comporta os recursos de linguagem procedural de programação assemelhados aos do FORTRAN, ANSI C e do PASCAL, além de capacidade gráfica e a possibilidade de operar com instruções simbólicas. Um dos aspectos mais poderosos é o fato dessa linguagem permitir construir suas próprias ferramentas reutilizáveis. Isto é feito através da escrita de suas próprias funções e programas especiais conhecidos como arquivos .m.

Este sistema contempla ainda uma grande família de aplicações específicas, as quais são denominadas Toolboxes (caixas de ferramentas). Estes Toolboxes são

Page 5: O MATLAB

5

conjuntos abrangentes de funções MATLAB cujo objetivo é resolver problemas de áreas específicas, tais como: Processamento de Sinais, Projeto de Sistemas de Controle, Simulação Dinâmica de Sistemas, Identificação de Sistemas, Redes Neuronais, Lógica Fuzzy (nebulosa ou difusa), Otimização de Sistemas, Wavelets, Cálculo Simbólico, e outras áreas. Os usos típicos incluem:

Cálculos matemáticos; Desenvolvimento de algoritmos; Modelagem, simulação e confecção de protótipos; Análise, exploração e visualização de dados; Gráficos científicos e de engenharia; Desenvolvimento de aplicações, incluindo a elaboração de interfaces

gráficascom o usuário

2. AMBIENTE DE TRABALHO

Quando o Matlab é acionado, surge na tela do computador uma janela (janela de comando/commandwindow), ver Figura 1, com um pequeno texto introdutório na parte superior. Logo abaixo, a esquerda, aparece o símbolo ( » ), com o cursor piscando ao lado. Essa linha é chamada linha de comando (commandline).

Figura 1 – Ambiente de trablho

Page 6: O MATLAB

6

É através da janela de comando que o usuário se comunica com o software, introduzindo as instruções através da linha de comando, com o acionamento da tecla ENTER. O símbolo ( » ) indica que o software está pronto para receber as instruções do usuário.

A existência de um comando de ajuda (“help”) no MATLAB permite ao estudante, uma vez dominando os comandos básicos do software, explorar ao longo do tempo uma quantidade cada vez maior de recursos, em um processo de auto-aprendizadocontínuo. O comando “help” pode ser acessado através da barra de menu (como qualquer “software for Windows” convencional) ou diretamente da linha de comando, como indica o exemplo abaixo:

Exemplo: »help quad

Não se esquecer de pressionar, após a digitação, a tecla ENTER. No exemplo acima após pressionar a tecla ENTER aparecerão as informações necessárias para se aprender a utilizar a função quad.

3. OPERAÇÕES SIMPLES ENTRE ESCALARES

No MATLAB um escalar é simplesmente uma matriz 1x1.As principaisoperações entre dois escalares serão apresentadas a seguir.

Soma - A operação "a + b"realiza a soma entre dois escalares. O exemplo 1 exibe sua execução.

Exemplo 1: Adição

Subtração - O operador - é responsável pela subtração. O próximo exemplo mostra esta operação.

Exemplo 2: Subtração

Multiplicação - Para realizar a multiplicação de dois escalares utiliza-se o operador "*", conforme o exemplo abaixo.

Page 7: O MATLAB

7

Exemplo 3: Multiplicação

Divisão Direta - A divisão direta é realizada com uso da barra "/ ". Veja o exemplo a seguir.

Exemplo 4: Divisão

Exponenciação - Para efetuar ab utiliza-se "^ "entre a base e o expoente. O exemplo 6 ilustra como realizara exponenciação de escalares.

Exemplo 5: Exponenciação

Módulo - A função "abs"retorna o módulo de um número. O exemplo 6 ilustra o uso da função abs.

Exemplo 6: Módulo

4. REPRESENTAÇÃO DE MATRIZES E VETORES

MATLAB trabalha essencialmente com um tipo de objeto, uma matriz retangular numérica (real ou complexa). Em algumas situações, denominações específicas são atribuídasa matrizes 1 por 1, que são os escalares, e a matrizes com somente uma linha ou coluna,que são os vetores.

Page 8: O MATLAB

8

A maneira mais fácil de declarar matrizes é fazendo a explicitação da lista deelementos na linha de comando. Uma matriz pode ser criada, atribuindo a uma variável,valores representados entre colchetes, seguidos de ponto-e-vírgula. Os elementos das linhassão separados por espaços ou vírgulas, e as colunas, com ponto-e-vírgula. O exemplo 7 mostra formas de representação de uma matriz 3x3.

Exemplo 7: Formas de declaração de matrizes

Um vetor nada mais é que uma matriz com uma de suas dimensões igual a 1, assim ele pode ser criado da mesma forma que uma matriz. No exemplo 8, tem-se um vetor-linha de dimensão 3, ou seja uma de uma matriz 1x3:

Exemplo 8: Vetor linha

Vale destacar que, da forma como foram apresentados a matriz ou o vetor, eles sãoarmazenados na memória do programa, mas se quisermos que eles apareçam na tela, ou seja, visualizar o conteúdo da variável, devemos omitir o ponto-e-vírgula depois dos colchetes. Depois que o vetor é criado, pode-se alterar um elemento acessando diretamente a suaposição. Observe o exemplo a seguir:

Exemplo 9: Acesso a uma posição de um vetor

No comando v(2) = 0, v é o nome da variável vetor e 2 é a posição cujo valor deve ser alterado, no caso para 0.

Page 9: O MATLAB

9

5. OPERAÇÕES SIMPLES ENTRE MATRIZES

A soma e a subtração de duas matrizes seguem a mesma lógica para os escalares, ou seja, é efetuada elemento por elemento. O exemplo 10 mostra essas operações.

Exemplo 10: Adição e subtração entre duas matrizes

Vale lembrar que, caso as matrizes envolvidas sejam de dimensões diferentes, o programa acusará erro.

Na multiplicação de uma matriz por um escalar, cada um dos elementos da matriz é multiplicado por este. O operador utilizado no comando é mesmo que na multiplicação entre escalares. Veja o próximo exemplo, no qual A é a mesma matriz do tópico anterior.

Exemplo 11: Multiplicação de uma matriz por um escalar

Na multiplicação entre duas matrizes, A*B, o elemento i x j da matriz resultante é o somatório dos produtos entre os elementos das linhas i da primeira matriz pelos elementos das colunas j da segunda matriz. É necessário que o número de colunas da matriz A seja igual ao número de linhas de B, caso contrário o programa acusará erro. A multiplicação entre duas matrizes pode ser vista no exemplo 12.

Page 10: O MATLAB

10

Exemplo 12: Multiplicação entre duas matrizes

O operador "."realiza uma dada operação, entre duas matrizes n x m, elemento por elemento. Se C = A.<operação>B, então cij = aij<operação>bij . Observe o exemplo 13.

Exemplo 13: Multiplicação entre duas matrizes, elemento por elemento

O comando " ' "calcula a transposta de uma matriz qualquer, ou seja, transforma as linhas em colunas, e vice-versa. No exemplo 14, é encontrada a transposta da matriz A vista no tópico anterior.

Exemplo 14: Transposta de uma matriz

6. GRÁFICOS

Gráficos Bidimensionais

A maneira mais prática para traçar gráficos bidimensionais é através da utilização do comando plot. Este comando, em sua forma mais simples, apresenta a seguinte sintaxe:

>>plot(x,y)

onde x é um vetor contendo as abcissas e y é um vetor contendo as ordenadas dos pontos. Assim, as coordenadas dos pontos utilizados na construção do gráfico são (xi,yi).

Page 11: O MATLAB

11

Por exemplo, traçar o gráfico da função f(x) = x3entre os valores de x = -2 e x = 2:

>> x = linspace(-2,2,30); >> y = exp(x .^2); >>plot(x,y)

Figura 2 – Exemplo gráfico bidimensional

O gráfico é formado em uma janela especial que recebe o nome de Figure No.1. Esta janela pode ser manipulada como uma janela qualquer do Windows.

Gráficos Tridimensionais

O procedimento para traçar curvas no espaço tridimensional é semelhante aqueles empregados para as curvas 2-D, bastando apenas utilizar o comando plot3:

>> plot3(x,y,z) >> plot3(x,y,z,'ct') >> plot3(x1,y1,z1,'ct',x2,y2,z2,'ct')

A criação de gráficos de superfícies é realizada através de um conjunto de etapas. Primeiro, deve-se definir os vetores das variáveis independentes, com a seguinte sintaxe:

>>x= (limite inferior das variáveis x:incremento:limite superior das variáveis x); >>y= (limite inferior das variáveis y:incremento:limite superior das variáveis y);

Note que os parênteses podem ser omitidos neste comando.

Page 12: O MATLAB

12

O próximo passo consiste em, a partir destes dois vetores, criar duas matrizes especiais através do comando meshgrid:

>> [X,Y]=meshgrid(x,y)

A matriz X consiste no vetorx repetido através das linhas e a matriz Y consiste no vetor y repetido em colunas. Estas matrizes servirão para a determinação do gráfico da superfície.

O próximo passo é calcular o valor da variável dependente, por exemplo:

>>Z=X.^2+Y.^2;

Para traçar o gráfico da superfície utilize o comando surf, que a seguinte sintaxe:

>>surf(X,Y,Z)

Além do comando surf , o MATLAB dispõe de uma série de comandos equivalentes que permitem visualizar a superfície de diferentes maneiras. Estes comandos são: surfc, mesh, meshc, meshz, waterfall e contour3.

7. APLICAÇÕES NA ENGENHARIA

Nas diversas áreas da engenharia necessita-se, usualmente, de ferramentas que simplifiquem as rotinas correntes dos engenheiros quando do desenvolvimento de modelos computacionais associados a projetos reais. Essas ferramentas devem permitir, inclusive, que os engenheiros possam visualizar todas as etapas do processo.

Visando atender a esta crescente demanda por novas tecnologias de ensino, diversas Instituições de Ensino/Pesquisa do país têm se desenvolvido no sentido de se criarem laboratórios computacionais de qualidade que permitam a utilização de programas como o MATLAB, que são de importância bastante significativa para o ensino de engenharia.

A "força" do MATLAB para revolver problemas de engenharia vem de um conjunto extenso de funções, através dos toolboxes. As categorias gerais de funções matemáticas disponíveis no MATLAB incluem:

· Matemática elementar;· Funções especiais;· Matrizes elementares;· Matrizes especiais;· Decomposição e fatorização de matrizes;· Análise de dados;· Polinômios;· Solução de equações diferenciais;

Page 13: O MATLAB

13

· Equações não-lineares e otimização;· Integração numérica;· Processamento de sinais.

Por exemplo, o “toolbox de estatística” contém várias funções estatísticas. Algumas destas funções são:

corrcoef:..........Coeficientes de correlaçãocov:......................Matriz covariânciageomean: ............Média Geométricaharmmean:..........Coeficientes de correlaçãomean: ...................Média aritméticamedian:...............Medianastd:......................Desvio padrãovar:......................Variânciahist: ...................Histogramaregress: ............Regressão linearnormrnd: ............Geração de números aleatórios usando a distribuição normalpoissrnd:..........Geração de números aleatórios usando a distribuição de Poissonunifrnd: ............Geração de números aleatórios usando a distribuição uniforme

contínuaunidrnd: ............Geração de números aleatórios usando a distribuição uniforme

discreta

O toolbox de otimização contém várias funções que podem ser utilizadas para resolver problemas de minimização ou maximização de funções na área de pesquisa operacional. No exemplo mostrado abaixo, mostra como resolver um problema utilizando o método simplex no MATLAB

Exemplo 15: Método Simplex

Variáveisv: Kg de carne de vaca utilizadosp: Kg de carne de porco utilizadosPedidoconfeccionar 10 Kg de carne picada,

com no máximo 25% de gordura,ao menor preço.

Função objetivoMin z = 8v + 6pRestrições0.2v + 0.3p 2.5v + p = 10

min zs.a.

0.2v + 0.3p 2.5

v + p = 10v, p 0

Page 14: O MATLAB

14

Neste exemplo se utiliza as funções optimset e linprog para encontrar a solução o problema de otimização em questão através do método simplex.

Também podemos escrever nossas próprias funções para resolver problemas, utilizando os artifícios das linguagens de programação procedural como na linguagem C. Por exemplo:

Exemplo 16: Lançamento de projétil.

>> options = optimset('LargeScale', 'off', 'Simplex', 'on');>> f = [8; 6]; lb = zeros(2,1);>> A = [0.2 0.3]; b = [2.5];>> Aeq = [1 1]; beq = [10];>> [x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,[],

[],options)

Optimization terminated.x = 5.1000 4.9000fval = 70.2000

Solução: v = 5.1; p = 4.9; z = 70.2

% Lançamento de projétil% Prof. José Wilsonho = input('Altura inicial ho (m) Ex.: 40 = ');vo = input('velocidade inicial vo (m/s) Ex.: 25 = ');alfa = input('ângulo de lançamento alfa (grau) Ex.: 45 = ');do = input('posição inicial do projétil (m) Ex.: 0 = ');alfa = alfa*pi/180;vxo = vo*cos(alfa);vyo = vo*sin(alfa);g = -9.8; % Aceleração da gravidadeh = [0.5*g vyo ho]; % Para cálculo do tempo máximotlimites = roots(h); % Cálculo do tempo limite - tem 2 valoresif tlimites(1) > 0tmax = tlimites(1);elsetmax = tlimites(2);endt = [0:0.01:tmax];vx = vxo;vy = vyo + g*t;thmax = abs(vyo/g); % tempo para atingir altura maximad = do + vxo*t;h = ho + vyo*t + 0.5*g.*t.^2;

hmax = ho + vyo*thmax + 0.5*g*thmax^2; % altura maximavmax = vyo + g*tmax; % velocidade maximadmax = do + vxo*tmax; % distancia maxima alcancada

Page 15: O MATLAB

15

No exemplo 16 acima entra-se com os dados de altura inicial, velocidade inicial, posição horizontal inicial e ângulo de lançamento. O programa calcula o tempo transcorrido até o projétil atingir o solo, a velocidade no momento em que toca o solo e a altura máxima atingida.

Os comandos do MATLAB são normalmente digitados na Janela de Comando como falado anteriormente, onde uma única linha de comando é introduzida e processada imediatamente. Porém, o MATLAB também é capaz de executar seqüências de comandos armazenadas em arquivos, como mostrado no exemplo acima.

Os arquivos que contém as declarações do MATLAB são chamadas arquivos “.m”, e consistem de uma seqüência de comandos normais, possibilitando incluir outros arquivos.

% Lançamento de projétil% Prof. José Wilsonho = input('Altura inicial ho (m) Ex.: 40 = ');vo = input('velocidade inicial vo (m/s) Ex.: 25 = ');alfa = input('ângulo de lançamento alfa (grau) Ex.: 45 = ');do = input('posição inicial do projétil (m) Ex.: 0 = ');alfa = alfa*pi/180;vxo = vo*cos(alfa);vyo = vo*sin(alfa);g = -9.8; % Aceleração da gravidadeh = [0.5*g vyo ho]; % Para cálculo do tempo máximotlimites = roots(h); % Cálculo do tempo limite - tem 2 valoresif tlimites(1) > 0tmax = tlimites(1);elsetmax = tlimites(2);endt = [0:0.01:tmax];vx = vxo;vy = vyo + g*t;thmax = abs(vyo/g); % tempo para atingir altura maximad = do + vxo*t;h = ho + vyo*t + 0.5*g.*t.^2;

hmax = ho + vyo*thmax + 0.5*g*thmax^2; % altura maximavmax = vyo + g*tmax; % velocidade maximadmax = do + vxo*tmax; % distancia maxima alcancada

figure(1)plot(d,h)axis([0 dmax 0 hmax])xlabel('distância horizontal (m)')ylabel('altura (m)')grid onfigure(2)plot(t,h)axis([0 tmax 0 hmax])xlabel('tempo (s)')ylabel('altura (m)')grid onfigure(3)plot(t,d)axis([0 tmax 0 dmax])xlabel('tempo (s)')ylabel('distância horizontal (m)')grid on

Page 16: O MATLAB

16

REFERÊNCIAS

GRACIAS, A. C.; LOURENÇO, S. R. Aplicação de um Modelo Matemático na Simulação da Produção e Importação de Gás Natural no Brasil até 2017. Revista Produção Online, ISSN:1676-1901, 2010.

MATSUMOTO, E. Y. MATLAB 7 – Fundamentos. 2ª Edição, Editora Érica, São Paulo, 2006.

MORTATI, J. G. C.; CARDOSO, F. C. MATLAB – Uma Ferramenta para Estudo de Matemática. Universidade de Rio Verde, 2004.

PET - Engenharia de Computação. Mini-curso de MATLAB e Octave para Cálculo Numérico. Universidade Federal do Espírito Santo.