56
UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE CIÊNCIAS NATURAIS E EXATAS CURSO DE MATEMÁTICA PROGRAMA DE EDUCAÇÃO TUTORIAL PET MATEMÁTICA INTRODUÇÃO AO MATLAB Edinéia Filipiak Fernanda Ronssani de Figueiredo Fernanda Somavilla Orientador: Prof. Dr. Antonio Carlos Lyrio Bidel Santa Maria, 2012

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE … · who: Lista os nomes das variáveis. whos: Lista o nome e o tipo das variáveis. clear: Elimina todas as variáveis da área de

Embed Size (px)

Citation preview

UNIVERSIDADE FEDERAL DE SANTA MARIA

CENTRO DE CIÊNCIAS NATURAIS E EXATAS

CURSO DE MATEMÁTICA

PROGRAMA DE EDUCAÇÃO TUTORIAL – PET MATEMÁTICA

INTRODUÇÃO AO MATLAB

Edinéia Filipiak

Fernanda Ronssani de Figueiredo

Fernanda Somavilla

Orientador: Prof. Dr. Antonio Carlos Lyrio Bidel

Santa Maria, 2012

SUMÁRIO

1. APRESENTAÇÃO ............................................................................................................... 4

2. INTRODUÇÃO AO SOFTWARE ....................................................................................... 5

2.1. Interface ......................................................................................................................... 5

2.2. Variáveis ....................................................................................................................... 8

2.3. Matemática Simbólica ................................................................................................... 9

3. MATRIZES ......................................................................................................................... 11

3.1. Definindo matrizes ...................................................................................................... 11

3.2. Operações com matrizes .............................................................................................. 12

3.3. Matrizes elementares ................................................................................................... 15

4. FUNÇÕES MATEMÁTICAS ............................................................................................ 18

4.1. Funções Trigonométricas ............................................................................................ 18

4.2. Funções Exponenciais ................................................................................................. 18

4.3. Funções de Simplificação e Arredondamento ............................................................. 18

4.4. Funções Complexas..................................................................................................... 19

4.5. Outras funções ............................................................................................................. 20

5. POLINÔMIOS .................................................................................................................... 21

5.1. Funções relacionadas à polinômios ............................................................................. 21

5.2. Solucionando equações ou sistemas ............................................................................ 23

6. CÁLCULO .......................................................................................................................... 25

6.1. Limites ......................................................................................................................... 25

6.2. Derivadas ..................................................................................................................... 25

6.3. Integrais ....................................................................................................................... 26

6.4. Somatório .................................................................................................................... 27

6.5. Série de Taylor ............................................................................................................ 28

7. GRÁFICOS ......................................................................................................................... 29

7.1. Gráficos 2D ................................................................................................................. 29

7.2 Diagramas Bidimensionais .......................................................................................... 37

7.2.1 Gráficos de Barras ............................................................................................... 37

7.2.2 Gráfico de Setores ............................................................................................... 38

7.2.3 Histogramas ......................................................................................................... 39

7.3 Gráficos 3D ................................................................................................................. 40

7.3.1 Meshgrid.............................................................................................................. 41

8. PROGRAMAÇÃO .............................................................................................................. 44

8.1. Arquivos M ................................................................................................................. 44

8.1.1. Scripts .................................................................................................................. 44

8.1.2. Funções ............................................................................................................... 44

8.2. Controladores de fluxo ................................................................................................ 45

8.2.1. O laço for ............................................................................................................. 45

8.2.2. O comando While ................................................................................................ 47

8.2.3. O comando if ....................................................................................................... 48

8.2.4. O comando break ................................................................................................ 49

8.2.5. O comando pause ................................................................................................ 49

8.2.6. O comando input ................................................................................................. 49

8.2.7. O comando disp ................................................................................................... 50

8.2.8. O comando switch ............................................................................................... 50

8.2.9. O comando fprintf ............................................................................................... 51

8.2.10. Comandos de organização ................................................................................... 51

8.3. Exemplificação ............................................................................................................ 51

9. BIBLIOGRAFIA ................................................................................................................. 56

Introdução ao MATLAB

PET Matemática – UFSM 4

1. APRESENTAÇÃO

MATLAB (MATrix LABoratory) é um software para computação numérica e

visualização de alta performance, fácil de ser usado, onde os problemas e soluções são

expressos quase que da mesma forma que no papel. É uma linguagem de alto

desempenho para computação técnica que integra computação, visualização e

programação em um ambiente de fácil uso onde problemas e soluções são expressos em

linguagem matemática.

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.

Ainda, 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.

O objetivo deste minicurso é introduzir os principais conceitos utilizados no

ambiente MATLAB. Devido à grande quantidade de funções disponibilizadas pelo

MATLAB, é impossível aprender todo o seu conteúdo em um único curso. Entretanto, o

aluno será capaz de entender como o MATLAB funciona e descobrir quais funções são

úteis para as suas aplicações.

Este minicurso foi desenvolvido, pelos bolsistas do Grupo PET Matemática –

Programa de Educação Tutorial – Edinéia Filipiak, Fernanda Ronssani de Figueiredo e

Fernanda Somavilla, sob orientação do Professor Tutor Antonio Carlos Lyrio Bidel,

como uma proposta de qualificar a formação de bolsistas e acadêmicos na utilização de

novas tecnologias aplicadas ao ensino e aprendizagem da matemática.

Introdução ao MATLAB

PET Matemática – UFSM 5

2. INTRODUÇÃO AO SOFTWARE

2.1. Interface

1- Janela de Comandos;

2- Histórico de Comandos Digitados (permite o comando digitado ser realizado

novamente com um duplo clique);

3- Workspace (local onde todas as variáveis criadas ficam armazenadas);

4- Pasta Atual;

5- Barra de Menus;

6- Barra de Ferramentas;

7- Botões de Comando da Janela.

A janela principal do MATLAB chama-se Command Window (Janela de

Comandos), onde os dados e instruções são digitados no prompt “>>” pelo usuário e,

após a tecla Enter ser pressionada, o programa os processa imediatamente e expõe na

tela o resultado. Os comandos digitados são armazenados em um buffer de comandos,

no qual pode-se navegar usando as teclas seta-para-cima ‘↑’ e seta-para-baixo ‘↓’. Além

disso, teclando-se o texto ‘str’, por exemplo, e usando-se as setas ‘↑’ e ‘↓’, navega-se

Introdução ao MATLAB

PET Matemática – UFSM 6

por todos os comandos iniciados com o texto ‘str’. A tecla Esc limpa o que estiver

escrito na linha do comando.

Comandos terminados com ponto-e-vírgula. “;” não exibem as variáveis de

resposta na tela. O uso do ponto-e-vírgula é útil quando a impressão do resultado na tela

não interessa, ou quando a impressão é muito extensa como, por exemplo, para uma

matriz 1000 × 1000. Deve-se ressaltar que, apesar da impressão ser suspensa, o

comando é executado pelo programa. Vários comandos podem ser digitados na mesma

linha, desde que estejam separados por vírgula ou ponto-e-vírgula. Comandos muito

longos para uma linha podem ser interrompidos por três pontos “...” e continuados na

linha seguinte.

Exemplo:

>> a=1, b=...

2;c=a+b

a =

1

c =

3

É importante apontar que a Janela de Comando normalmente é usada para testes

de comandos e funções ou simples operações. Quando se deseja implementar algum

programa, projeto ou trabalho, utiliza-se o M-File Editor. Neste editor, cria-se um

arquivo texto ‘.m’ com os comandos desejados. Para abrir um novo arquivo-M, clique

em File > New > M-file ou simplesmente digite o comando edit. Após escrever o

programa, pode-se executá-lo pela tecla de atalho F5.

Além da Janela de Comando e do Editor de Arquivo-M, há ainda as janelas

Help, Command History, Current Directory e Workspace, que estão respectivamente

relacionadas com ajuda, histórico dos últimos comandos digitados, diretório corrente do

programa e o espaço de trabalho onde se visualizam dados e variáveis. Essas janelas

podem ser mantidas fechadas ou abertas, dependendo da necessidade ou gosto do

usuário.

Um comando muito importante no MATLAB é o HELP, o qual fornece ajuda

online sobre qualquer outro comando. O HELP pode ser aberto através da Barra de

Introdução ao MATLAB

PET Matemática – UFSM 7

Menu, da tecla de atalho F1 e do botão START. Quando se deseja obter informações

sobre uma função basta digitar na Janela de Comandos help seguido da função

requerida.

Exemplo:

>> help sin

SIN Sine of argument in radians.

SIN(X) is the sine of the elements of X.

See also asin, sind.

Overloaded methods:

codistributed/sin

Reference page in Help browser

doc sin

Clicando em doc sin irá aparecer a janela do HELP da função sin.

Introdução ao MATLAB

PET Matemática – UFSM 8

2.2. Variáveis

O MATLAB trabalha essencialmente com um tipo de variável: uma matriz

contendo números, complexos ou não (um escalar é uma matriz 1 x 1).

No MATLAB não é necessário que sejam declaradas as variáveis para iniciá-las,

como é feito em outras linguagens de programação, elas são geradas automaticamente

ao serem utilizadas. Para criar e/ou armazenar informações em variáveis definidas pelo

usuário, basta digitar o nome da variável seguido do sinal de igual ‘=’ e da expressão

desejada. Na escolha dos nomes das variáveis, devem ser obedecidos os seguintes

critérios:

os caracteres podem ser alfanuméricos (letras e números), desde que iniciados por

letras;

letras maiúsculas e minúsculas definem nomes diferentes (linguagem case

sensitive);

o caractere ‘_’ (underscore, underline ou sublinhado) pode ser usado no meio do

nome;

são permitidos nomes com, no máximo, 32 caracteres.

Caso seja executada uma expressão que gere um valor como resultado e, nessa

expressão não haja uma atribuição do resultado para alguma variável definida pelo

usuário, o resultado será armazenado na variável ans, pré-definida pelo ambiente.

Existem comandos próprios para manipulação de variáveis. Abaixo estão

listados os mais utilizados.

who: Lista os nomes das variáveis.

whos: Lista o nome e o tipo das variáveis.

clear: Elimina todas as variáveis da área de trabalho. Para se apagar uma ou mais

variáveis utiliza-se o comando clear seguido dos nomes das variáveis separadas por

espaço.

save: Salva as variáveis em arquivo, podendo utilizá-las novamente na próxima vez

que o programa for inicializado ou mesmo quando executado o comando clear.

load: Recupera as variáveis previamente salvas em arquivo pelo comando save.

clc: Limpa a janela de comandos.

Introdução ao MATLAB

PET Matemática – UFSM 9

E existem algumas variáveis pré-definidas que podem ser úteis ao usuário, que

estão listadas a seguir.

Variável Descrição

ans Variável padrão para armazenar resultados;

eps Precisão de ponto flutuante, ou distância entre o 1 e o próximo

número real.

realmax Maior número real positivo utilizável;

realmin Menor número real positivo utilizável;

pi 3, 14159265358979

i, j Unidades imaginárias;

flops Contador de operações matemáticas;

NaN ou Not-a-

Number ou Valor

não numérico

Indeterminação;

inf Infinito;

nargin Número de argumentos de entrada de uma função;

nargout Número de argumentos de saída de uma função;

bitmax Maior número inteiro positivo utilizável;

Neste software não é necessário declarar o tipo de variável que será utilizado,

mas pode-se escolher o formato que vai ser utilizado. Observe:

Comando Variável Descrição

format long 3.141592653589793 Com 16 dígitos

format short 3.1415 Com 5 dígitos

format short e 3.1415e+000 Com 5 dígitos em notação científica

format long e 3.141592653589793e+000 Com 16 dígitos em notação

científica

format + + Retorna “+” para valores positivos e

“-” para valores negativos

format rat 355/113 Aproximação racional

format hex 400921fb54442d18 Aproximação hexadecimal

2.3. Matemática Simbólica

Há, em algumas situações, a necessidade de se trabalhar com variáveis

simbolicamente, pois possibilita uma visão mais geral sobre o resultado de um

Introdução ao MATLAB

PET Matemática – UFSM 10

problema. Neste contexto, uma função importante é a syms, que declara as variáveis

como simbólica.

Vejamos como para uma variável:

>> syms x

Ou para mais de uma variável:

>> syms a b c

Uma outra função é a sym, que transforma uma expressão para a forma literal. É

utilizada da seguinte forma:

>> S = sym(A)

>> x = sym('x')

Como exemplo, veja a diferença dessas duas funções executando os comandos a

seguir:

>> rho = sym('(1 + sqrt(5))/2')

>> syms x y

>> f = x^2*y + 5*x*sqrt(y)

Em alguns casos, quando se desejar determinar quais as variáveis simbólicas

numa expressão, usa-se a função findsym, que retorna os parâmetros que são simbólicos.

Desse modo:

>> findsym(S)

>> findsym(S,n)

Uma outra função é a subs, que substitui a variável declarada inicialmente

simbólica por uma outra ou mesmo por um número.

>> R = subs(S)

>> R = subs(S, new)

>> R = subs(S,old,new)

Introdução ao MATLAB

PET Matemática – UFSM 11

3. MATRIZES

3.1. Definindo matrizes

Uma matriz é montada linha após linha, onde espaço ou vírgula indicam

transição de coluna e ponto-e-vírgula indica transição de linha.

>> [1,2;3,4]

ans =

1 2

3 4

Outra maneira de definir matrizes consiste em criar vetores-linha com elementos

em progressão aritmética, através da simples sintaxe:

valor_inicial : incremento : valor_final

onde os valores fornecidos não precisam ser necessariamente inteiros. Basicamente, o

primeiro elemento do vetor criado corresponde ao valor inicial e os elementos seguintes

são acrescidos do passo (ou incremento), de tal maneira que nunca ultrapasse o valor

final. Caso o incremento seja omitido, ele será entendido como igual a 1.

>> 1:5:31

ans =

1 6 11 16 21 26 31

>> 2:6

ans =

2 3 4 5 6

Após definirmos uma matriz, podemos selecionar um elemento, uma linha

inteira ou uma coluna inteira da seguinte forma:

>> A=[1,2,3;4,5,6;7,8,9]

Introdução ao MATLAB

PET Matemática – UFSM 12

A =

1 2 3

4 5 6

7 8 9

>> A(2,1)

ans =

4

>> A(:,2)

ans =

2

5

8

>> A(3,:)

ans =

7 8 9

3.2. Operações com matrizes

As operações podem ser de dois tipos: matricial ou escalar. As operações do tipo

matricial referem-se às operações matemáticas sobre matrizes. As operações escalares

são também denominadas de operações sobre conjuntos. Essas últimas são realizadas

elemento a elemento de cada matriz, aplicando-se o operador em questão apenas entre

elementos de mesma posição matricial.

Definindo-se x e y, da seguinte forma, pode-se associá-los pelos seguintes

operadores:

>> x=[2,4;5,3]

x =

2 4

5 3

>> y=[10,2;4,5]

Introdução ao MATLAB

PET Matemática – UFSM 13

y =

10 2

4 5

+ : adição (matricial e escalar).

>> x+y

ans =

12 6

9 8

− : subtração (matricial e escalar).

>> x-y

ans =

-8 2

1 -2

* : multiplicação matricial.

>> x*y

ans =

36 24

62 25

/ : divisão matricial à direita.

>> x/y

ans =

-0.1429 0.8571

0.3095 0.4762

\ : divisão matricial à esquerda.

>> x\y

Introdução ao MATLAB

PET Matemática – UFSM 14

ans =

-1.0000 1.0000

3.0000 0

ˆ : potenciação matricial.

>> x^2

ans =

24 20

25 29

´ : transposição matricial.

>> x'

ans =

2 5

4 3

.* : multiplicação escalar.

>> x.*y

ans =

20 8

20 15

./ : divisão escalar à direita.

>> x./y

ans =

0.2000 2.0000

1.2500 0.6000

.\ : divisão escalar à esquerda.

Introdução ao MATLAB

PET Matemática – UFSM 15

>> x.\y

ans =

5.0000 0.5000

0.8000 1.6667

.ˆ : potenciação escalar.

>> x.^2

ans =

4 16

25 9

Observações:

1. Para operações entre matriz e número escalar, o programa faz uma expansão

escalar do número, executando a operação entre o número e cada elemento da

matriz.

>> x+3

ans =

5 7

8 6

2. A precedência de operações pode ser controlada utilizando-se parênteses.

>> ((x+3)*x')'

ans =

38 40

46 58

3.3. Matrizes elementares

Matriz com todos os elementos iguais a 1: ones(m,n)

>> ones(3,2)

Introdução ao MATLAB

PET Matemática – UFSM 16

ans =

1 1

1 1

1 1

Matriz nula: zeros(m,n)

>> zeros(2,3)

ans =

0 0 0

0 0 0

Matriz identidade: eye(n)

>> eye(3)

ans =

1 0 0

0 1 0

0 0 1

Matriz aleatória: rand(m,n)

>> rand(2,3)

ans =

0.8147 0.1270 0.6324

0.9058 0.9134 0.0975

A seguir listamos algumas funções matriciais que podem ser úteis. Considere a

uma matriz.

Comando Descrição

eig(a) Autovalores e Autovetores;

chol(a) Fatoração de Cholesky;

svd(a) Decomposição em fator singular;

inv(a) Inversa;

Introdução ao MATLAB

PET Matemática – UFSM 17

lu(a) Fatoração triangular LU;

qr(a) Fatoração ortogonal QR;

hess(a) Forma de Hessenberg;

schur(a) Decomposição de Schur;

expm(a) Matriz Exponencial;

sqrtm(a) Matriz de raiz quadrada;

poly(a) Polinômio característico;

det(a) Determinante;

size(a) Tamanho;

length(a) Retorna o comprimento do vetor ou a maior dimensão de uma

matriz de entrada.

norm(a) Norma 1, Norma 2, Norma F, Norma Infinita;

cond(a) Número de condição na norma 2;

rank(a) Número de linhas linearmente independentes;

trace(a) Retorna um vetor com a soma dos elementos da diagonal

principal de uma matriz;

triu(a) Gera uma matriz com os elementos acima da diagonal

principal de a e zera os elementos que estão abaixo;

tril(a) Gera uma matriz com os elementos abaixo da diagonal

principal de a e zera os elementos que estão acima;

diag(a) Fornece os elementos da diagonal;

diag(diag(a)) Gera uma matriz com os elementos da diagonal principal de a

e com zeros nas outras posições;

flipud(a) Coloca a matriz a de “cabeça para baixo”;

fliplr(a) Coloca a matriz da esquerda para a direita;

rot90(a) Roda a matriz em sentido anti-horário;

reshape(a,m,n) Retorna uma matriz m por n, cujos elementos são tomados

coluna por coluna de a.

min(a) e

max(a)

Retornam, respectivamente, o valor mínimo e o valor máximo

dos elementos de cada coluna de uma matriz de entrada ou o

valor mínimo e o valor máximo dos elementos de um vetor de

entrada.

sum(a) Retorna a soma dos elementos de cada coluna de uma matriz

de entrada ou a soma dos elementos de um vetor de entrada.

prod(a)

Retorna o produto dos elementos de cada coluna de uma

matriz de entrada ou o produto dos elementos de um vetor de

entrada.

cross(v,u) Produto vetorial entre os vetores v e u.

dot(v,u) Produto escalar entre os vetores v e u.

Introdução ao MATLAB

PET Matemática – UFSM 18

4. FUNÇÕES MATEMÁTICAS

O MATLAB possui diversas funções matemáticas elementares, as quais podem

ser listadas pelo comando help elfun. Abaixo, estão listadas as mais comumente

utilizadas.

4.1. Funções Trigonométricas

As funções trigonométricas trabalham com valores de ângulos expressos em

radianos. Quando for desejado entrar com um argumento em grau, basta utilizar o

sufixo d em cada função. Para determinar a função hiperbólica utiliza-se o sufixo h em

cada função e para determinar o arco de um valor emprega-se o prefixo a em cada

função.

sin(X) Seno sec(X) secante

sinh(X) seno hiperbólico sech(X) secante hiperbólica

asin(X) arco seno asec(X) arco secante

cos(X) Cosseno csc(X) cossecante

cosh(X) cosseno hiperbólico csch(X) cossecante hiperbólica

acos(X) arco cosseno acsc(X) arco cossecante

tan(X) Tangente cot(X) cotangente

tanh(X) tangente hiperbólica coth(X) cotangente hiperbólica

atan(X) arco tangente acot(X) arco cotangente

4.2. Funções Exponenciais

log(X) Determina o logaritmo natural ou neperiano de X.

log10(X) Determina o logaritmo de X na base 10.

log2(X) Calcula o logaritmo de X na base 2.

exp(X) Determina a expressão de .

sqrt(X) Retorna a raiz quadrada de X.

4.3. Funções de Simplificação e Arredondamento

Comando Descrição

collect Reescreve a expressão como um polinômio

Introdução ao MATLAB

PET Matemática – UFSM 19

expand Expande a expressão em produtos e somas

horner Determina o fator em comum da expressão

factor Fatora o polinômio, se os coeficientes são racionais

simplify Simplifica as expressões, de forma mais geral

compose Calcula a composição das funções

inverse Encontra a inversa funcional da função

fix Aproxima para o inteiro de menor valor absoluto, ignorando as casas

decimais.

floor Aproxima para o inteiro antecessor.

ceil Aproxima para o inteiro sucessor.

round Arredonda para o inteiro mais próximo.

rem Resto de divisão inteira, dados respectivamente o dividendo e o

divisor. Para dividendos negativos, sendo x e y inteiros positivos,

rem(-x,y)=-rem(x,y). Mais detalhes em help rem.

mod Resto de divisão inteira, dados respectivamente dividendo e o

divisor. Para dividendos negativos, sendo x e y inteiros positivos,

mod(-x,y)=y-mod(x,y) se mod(x,y)6=0, ou mod(-x,y)=0 caso

contrário. Mais detalhes em help mod.

sign Retorna +1 para números positivos, −1 para números negativos e 0

para números iguais a zero.

4.4. Funções Complexas

No MATLAB para definirmos um número complexo utilizamos os operadores i

e j ou a função complex. Utilizando a função complex obtemos:

>> complex(2,3)

ans =

2.0000 + 3.0000i

Quando se deseja trabalhar com módulo, ângulo de fase, conjugado, ou entre

outros, tornam-se fáceis de serem calculados quando se utiliza a função adequada. A

próxima tabela denota funções que possibilitam isso.

Introdução ao MATLAB

PET Matemática – UFSM 20

Função Descrição

abs(X) Retorna o módulo do número complexo X

angle(X) Retorna a fase do complexo X

conj(X) Calcula o conjugado do número complexo X

imag(X) Determina a parte imaginária de X

real(X) Determina a parte real de X

4.5. Outras funções

Função Descrição

gcd(X,Y) Determina o máximo divisor comum entre dois parâmetros.

lcm(X,Y) Determina o mínimo múltiplo comum entre dois parâmetros.

factorial(N) Retorna o fatorial de um argumento.

primes(N) Devolve uma lista com uma quantidade desejada de números

primos.

rem(X,Y) Determina o resto da divisão de dois argumentos.

perms(V) Devolve todas as permutações possíveis dos argumentos dados.

Introdução ao MATLAB

PET Matemática – UFSM 21

5. POLINÔMIOS

No MATLAB representamos polinômios como uma matriz linha, contendo os

coeficientes em ordem decrescente. Por exemplo, o polinômio 4x3 -5x

2 +3x -28 é

representado da forma:

>> p=[4,-5, 3, -28]

p =

4 -5 3 -28

5.1. Funções relacionadas à polinômios

As principais funções relacionadas à polinômios são descritas a seguir:

poly: Determina os coeficientes do polinômio a partir de suas raízes. Caso a

entrada seja uma matriz, este calcula o polinômio característico da matriz.

>> A=[2,1] % Declara um vetor linha [2,1]

A =

2 1

>> S=poly(A) % S é o polinômio (x-2)(x-1)=x²-3x+2,

que tem como raízes 2 e 1

S =

1 -3 2

>> B=[1 5 3; 0 -2 9; 2 11 -1] % Declara matriz

B =

1 5 3

0 -2 9

2 11 -1

>> poly(B) % Calcula o seu polinômio característico

ans =

1.0000 2.0000 -106.0000 -5.0000

Introdução ao MATLAB

PET Matemática – UFSM 22

roots: Retorna um vetor coluna com a(s) raiz(es) do polinômio fornecido.

>> C=[1 -3 2] % Declara um vetor correspondente ao

polinômio x²-3x+2

C =

1 -3 2

>> X=roots(C) % Calcula as raízes desse polinômio,

que são 2 e 1

X =

2

1

polyval: Determina o valor do polinômio para uma determinada entrada. Se a

entrada for uma matriz, a função retorna o valor do polinômio para cada elemento.

>> polinomio=[3 -4 7 -3.2] % polinômio 3x³ -4x² +7x -

3.2

polinomio =

3.0000 -4.0000 7.0000 -3.2000

>> a=[1 -1; 0 1.5]

a =

1.0000 -1.0000

0 1.5000

>> valores=polyval(polinomio,a)

valores =

2.8000 -17.2000

-3.2000 8.4250

Introdução ao MATLAB

PET Matemática – UFSM 23

5.2. Solucionando equações ou sistemas

Para resolver sistemas no MATLAB utiliza-se a função solve, a qual determina o

valor do polinômio para uma determinada entrada. Mas primeiro devemos definir a

variável através do comendo syms.

Comando Descrição

solve(eq) Resolve a equação eq=0.

solve(eq,var) Determina as soluções de eq=0, em função da

variável var.

solve(eq1,eq2,...,eqn) Resolve um sistema de equações definidas.

g =

solve(eq1,eq2,...,eqn,

var1,var2,...,varn)

Calcula as soluções de um sistema de soluções em

função das variáveis pré-definidas.

Exemplo:

>> syms x

>> solve(x^2-5*x+6,x)

ans =

2

3

>> syms x y z

>> g=solve(x^2-2*x+1,y^2+4*y+4,z^2+6*z+9,x,y,z)

g =

x: [1x1 sym]

y: [1x1 sym]

z: [1x1 sym]

>> gx=g.x

gx =

1

>> gy=g.y

gy =

-2

>> gz=g.z

Introdução ao MATLAB

PET Matemática – UFSM 24

gz =

-3

Quando se trata de equações diferenciais, a função destinada para este caso é a

dsolve, que soluciona simbolicamente uma equação ou sistema de equações diferenciais

ordinárias.

r = dsolve('eq1,eq2,...', 'cond1,cond2,...','v')

r = dsolve('eq1','eq2',...,' cond1','cond2',...,'v')

r= dsolve('eq1,eq2,...','cond1,cond2,...', 'v')

Introdução ao MATLAB

PET Matemática – UFSM 25

6. CÁLCULO

O MATLAB disponibiliza funções que facilitam a operação de certos cálculos,

por exemplo, as funções limit, diff, int são algumas delas, as quais calculam o limite de

uma função, diferenciam e integram, respectivamente. Vejamos essas e outras funções a

seguir:

6.1. Limites

Para determinar o limite de uma expressão simbólica utilizamos a função limit.

Comando Descrição

limit(F,x,a) Calcula o limite de uma expressão simbólica F com x

tendendo a a.

limit(F,a) Determina o limite de F com uma variável simbólica

tendendo a a.

limit(F) Determina o limite com a = 0 como default.

limit(F,x,a,'right') Calcula o limite com x tendendo a a pela direita.

limit(F,x,a,'left') Calcula o limite com x tendendo a a pela esquerda.

Exemplo: | |

>> syms x

>> limit('(abs(x^2)-1)/(x^2-1)',x,1,'right')

ans =

1

6.2. Derivadas

Derivamos uma função ou matriz utilizando a função diff.

Comando Descrição

diff(S) Diferencia a expressão simbólica S em função de uma variável

simbólica.

diff(S,'v') Diferencia S em torno de uma variável simbólica v.

diff(S,n) Diferencia, para um n inteiro positivo, S por n vezes.

Introdução ao MATLAB

PET Matemática – UFSM 26

diff(S,'v',n) Diferencia em torno de uma variável v, S por n vezes.

Exemplo: Determinar a derivada de 1ª ordem de ( ) √ ( )

>> syms x

>> S=sqrt(log(x)+exp(x));

>> diff(S)

ans =

(exp(x) + 1/x)/(2*(exp(x) + log(x))^(1/2))

>> pretty(ans)

1

exp(x) + -

x

----------------------

1/2

2(exp(x) + log(x))

Obs.: A função pretty é utilizada para transformar a saída de acordo com a

representação matemática.

6.3. Integrais

Calculamos a integral de uma função simbólica dada com a função int.

Comando Descrição

int(S) Integração indefinida a função S em respeito a uma variável

simbólica já definida.

int(S,a,b) Integra de forma definida a função S de a a b.

int(S,v,a,b) Integra de a a b em função de uma variável v.

Exemplo: Dado a função ( ) √ , calcule a integral:

Indefinida:

>> syms x

>> S=sqrt(x^2+5);

>> f=int(S,x)

f =

Introdução ao MATLAB

PET Matemática – UFSM 27

(5*asinh((5^(1/2)*x)/5))/2 + (x*(x^2 + 5)^(1/2))/2

Definida de 2 a 5:

>> g=int(S,x,2,5)

g =

(5*log(5^(1/2) + 6^(1/2)))/2 - (5*log(5))/4 +

(5*30^(1/2))/2 - 3

A integral da função g foi calculada de forma simbólica, para obter o valor

numérico da função basta utilizar a função eval. Assim a integral de g é:

>> eval(g)

ans =

12.5425

6.4. Somatório

Uma função muito utilizada em Séries Numéricas é a symsum, que encontra o

somatório simbólico de uma expressão.

Comando Descrição

r = symsum(s) Encontra o somatório da função s em função de uma

variável simbólica pré-definida.

r = symsum(s,v) Fornece o somatório em função da variável v.

r = symsum(s,a,b) Determina o somatório de s variando a incógnita de a

até b.

r = symsum(s,v,a,b) Determina o somatório de s variando a incógnita v de a

até b.

Exemplo: Determine o somatório de ∑

>> syms x

>> S=x^2

S =

x^2

>> r=symsum(S,x,0,x-1)

r =

Introdução ao MATLAB

PET Matemática – UFSM 28

(x*(2*x - 1)*(x - 1))/6

6.5. Série de Taylor

A Série de Taylor é definida como sendo:

( ) ∑( )

( )( )

Considerando P(x) como sendo o polinômio de Taylor, de ordem n, em torno do

ponto , então P(x) é o único polinômio de grau no máximo n que aproxima

localmente f em volta de de modo que o erro E(x) tenda a zero mais rapidamente que

( ) , quando x→ .

O MATLAB dispõe da função taylor que expande em série de Taylor uma

função.

Comando Descrição

taylor(f) Faz a aproximação pelo polinômio de Taylor até a quinta

ordem para a função simbólica f.

taylor(f,n,v) Retorna o polinômio de Taylor para a função simbólica f até

o grau n-1 para a variável especificada por v.

taylor(f,n,v,a) Retorna a aproximação de Taylor de f em torno do ponto a,

que pode ser simbólica ou um valor numérico.

Exemplo: Calcular o polinômio de Taylor para a função ( )

( )

>> syms x

>> f=1/(5+4*cos(x))

f =

1/(4*cos(x) + 5)

>> T=taylor(f,8)

T =

(49*x^6)/131220 + (5*x^4)/1458 + (2*x^2)/81 + 1/9

>> pretty(T)

6 4 2

49 x 5 x 2 x 1

------ + ---- + ---- + -

131220 1458 81 9

Introdução ao MATLAB

PET Matemática – UFSM 29

7. GRÁFICOS

Gráficos constituem um recurso visual poderoso para a interpretação de dados.

O MATLAB dispõe de um grande número de facilidades gráficas, usadas para plotar

(gerar desenho de gráficos) através de funções e comandos. É possível obter gráficos

bidimensionais ou tridimensionais.

7.1. Gráficos 2D

Basicamente, os gráficos são construídos conforme os passos abaixo:

1. Cria-se um vetor X com as coordenadas do eixo das abscissas;

2. Escreve-se a função desejada, a partir do vetor X, a qual criará um novo vetor Y

das ordenadas;

3. Desenha-se o gráfico, o que será ensinado mais adiante.

Os pares ordenados (x,y) assim criados são marcados no gráfico e ligados por

segmentos retas (interpolação linear). Observa-se, portanto, que, quanto menor for o

incremento do vetor X, mais pares ordenados serão criados e, consequentemente,

melhor será a precisão do gráfico. Em compensação, uma maior quantidade de memória

é utilizada.

A função básica para desenhar gráficos em duas dimensões é a função plot.

>> x = -10:0.5:10;

>> y = x.^2+1;

>> plot(x,y);

-10 -5 0 5 100

20

40

60

80

100

120

Introdução ao MATLAB

PET Matemática – UFSM 30

Estes são os comandos para plotar gráficos bidimensionais:

Comando Descrição

plot Plotar linear

loglog Gráfico em escala logarítmica

semilogx Gráfico em escala semi-logarítmica (eixo x)

semilogy Gráfico em escala semi-logarítmica (eixo y)

fill Desenhar polígono 2D

polar Gráfico em coordenadas polar

stem Gráfico de sequência discreta

stairs Gráfico em degrau

compass Gráfico em forma de bússola

feather Gráfico em forma de pena

fplot Gráfico da função

comet Gráfico com trajetória de cometa

ezplot Plota gráficos no domínio padrão -2π < x < 2π

Nos gráficos podemos utilizar os comandos title (inclui um título ao gráfico),

xlabel (permite que o eixo das abscissas do gráfico seja identificado), ylabel (permite

que o eixo das ordenadas do gráfico seja identificado). No exemplo utilizando a função

plot podemos inserir os seguintes comandos para obter um gráfico com título e com os

eixos das abscissas e das ordenadas identificados.

>> x = -10:0.5:10;

>> y = x.^2+1;

>> plot(x,y);

>> title('Gráfico da função x^2+1')

>> xlabel('x')

>> ylabel('y')

-10 -5 0 5 100

20

40

60

80

100

120Gráfico da função x

2+1

x

y

Introdução ao MATLAB

PET Matemática – UFSM 31

Obs.: Para que todos os comandos apareçam no mesmo gráfico é imprescindível

que a nova janela aberta pelo MATLAB não seja fechada.

É possível desenhar mais que uma função no mesmo gráfico.

Por exemplo, podemos gerar no mesmo gráfico as funções sen(x), cos(x) e

sen(2x).

>> x= 0:pi/100:6*pi;

>> y1=sin(x);

>> y2=cos(x);

>> y3=sin(2*x);

>> plot(x,y1,x,y2,x,y3);

>> title('Grafico das funções sen(x),cos(x),sen(2x)')

>> xlabel('x')

>> ylabel('y')

Além de títulos e designação dos eixos (funções title, xlabel e ylabel) podemos

definir outras propriedades gráficas como legendas, cores e estilos de linhas, estilos de

marcadores e incluir grade. Na tabela a seguir vemos os principais valores para os

atributos cores, marcadores e estilos de linha.

Cor Marcadores Estilo de Linha

y Amarelo . Ponto - Sólido

m Rosa(magenta) o Círculo : Pontilhado

c Azul(ciano) x X -. Ponto-traço

r Vermelho + Mais -- Tracejado

0 2 4 6 8 10 12 14 16 18 20-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1Grafico das funções sen(x),cos(x),sen(2x)

x

y

Introdução ao MATLAB

PET Matemática – UFSM 32

g Verde * Asterisco

b Azul s Quadrado

w Branco v Triângulo para baixo

k preto ^ Triângulo para cima

p Pentágono

>> x=-10:0.5:10;

>> y=x.^2+1;

>> plot(x,y,'m*-.');

Com o comando grid podemos adicionar linhas de grade no desenho do gráfico:

grid on (para incluir) e grid off ( para remover).

Legendas podem ser criadas por meio da função legend, utilizando a seguinte

estrutura:

legend('texto1','texto2’,...,posição)

Onde na ‘posição’ podem ser atribuídos os seguintes valores de posicionamento

da legenda:

Valor Significado

0 Escolha automática da melhor posição (mínimo conflito com os dados)

1 Canto superior direito

2 Canto superior esquerdo

3 Canto inferior esquerdo

4 Canto superior direito

-1 À direita do desenho

Além do título, é possível adicionar qualquer outro texto em algum lugar

específico do gráfico plotado através do comando text, com a seguinte síntese:

-10 -5 0 5 100

20

40

60

80

100

120

Introdução ao MATLAB

PET Matemática – UFSM 33

text (x,y, 'texto desejado')

Onde x, y são as coordenadas nas quais desejamos que o texto apareça.

Obs.: \pi faz aparecer o símbolo π.

>> plot(0:pi/20:2*pi,sin(0:pi/20:2*pi))

>> text(pi,0,' sin(\pi)')

Com a mesma finalidade pode ser utilizado o comando gtext, com a diferença de

com este a posição do texto é escolhida através do mouse. Tem a síntese:

gtext('texto desejado')

É possível controlar as proporções e a aparência dos eixos horizontal e vertical

dos gráficos gerados pelo MATLAB através do comando axis.

Alguns modos principais de configuração desse comando seguem na tabela a

seguir:

Comando Descrição

axis([xmin xmax

ymin ymax])

Define os valores máximos e mínimos dos eixos usando os

valores dados no vetor de linha.

axis square Torna quadrado o quadro dos eixos.

axis equal Ajusta os incrementos de eixos para que sejam iguais nos

dois eixos.

axis normal Cancela o efeito dos dois comandos anteriores.

axis off

Desliga todos os nomes de eixos, grades e marcadores. Não

altera o título nem os nomes colocados pelos comandos text e

gtext.

axis on Liga nomes de eixos, marcadores e grade.

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

sin()

Introdução ao MATLAB

PET Matemática – UFSM 34

>> t = -6*pi:pi/100:6*pi;

>> x = cos(t);

>> y = sin(t);

>> plot(x,y);

>> axis off

É possível colocar mais de um conjunto de eixos em uma mesma figura, criando

assim múltiplos diagramas. Os subdiagramas são criados pelo comando subplot:

subplot(m,n,p)

Onde m denota o número linhas e n o número de colunas que se deseja dividir a

janela gráfica; p indica qual das subdivisões vai receber o gráfico desejado.

Exemplos:

Plotar as funções sen(x) e cos(x), com x= -pi: pi/20 : pi, na mesma janela mas

em gráficos separados, utilizando o comando subplot para dividir a janela em dois

subgráficos.

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Introdução ao MATLAB

PET Matemática – UFSM 35

>> subplot(2,1,1);

>> x=-pi:pi/20:pi;

>> y= sin(x);

>> plot(x,y)

>> title('Subdiagrama 1');

>> subplot(2,1,2);

>> x=-pi:pi/20:pi;

>> y= cos(x);

>> plot(x,y)

>> title('Subdiagrama 2');

Além do comando plot, podemos plotar uma função através do comando fplot.

Basicamente, você deve fornecer como primeiro argumento a função que pretende usar

entre apóstrofes e como segundo, o intervalo sobre o qual a função será plotada.

>> fplot('x^2+3', [ -1, 2])

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

-0.5

0

0.5

1Subdiagrama 1

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

-0.5

0

0.5

1Subdiagrama 2

-1 -0.5 0 0.5 1 1.5 21

1.5

2

2.5

3

3.5

4

4.5

5

Introdução ao MATLAB

PET Matemática – UFSM 36

O MATLAB tem uma função chamada polar que se destina ao desenho de dados

usando coordenadas polares. Sua forma básica é:

polar(theta,r)

Exemplo:

A Cardióide pode ser expressa através de coordenadas polares por:

r=2(1+cosθ)

Utilizando o comando polar, vamos plotar a Cardióide.

>> theta = 0:pi/50:2*pi;

>> r=2*(1+cos(theta));

>> polar(theta,r,'r-');

>> title('Cardioide em Coordenadas Polares');

A forma paramétrica de uma curva plana pode ser descrita através do seguinte

par de funções:

x = f(t)

y = g(t)

Onde t é um parâmetro real que assume valores em um intervalo [a,b] e f(t) e

g(t) são funções quaisquer. Quando t = a, o ponto (xa,ya) =(f(a),g(a)) é o início da curva

e quando t=b, o ponto (xb,yb)=(f(b),g(b)) é o final da curva.

Exemplo:

>> t = -6*pi:pi/100:6*pi;

>> x = cos(t);

1

2

3

4

30

210

60

240

90

270

120

300

150

330

180 0

Cardioide em Coordenadas Polares

Introdução ao MATLAB

PET Matemática – UFSM 37

>> y = sin(t);

>> plot(x,y);

>> axis square

7.2 Diagramas Bidimensionais

Além dos gráficos bidimensionais o MATLAB possui comandos que

possibilitam outras formas de representação de dados tais como: gráficos de barras,

gráficos do tipo pizza, gráficos de haste, diagramas de radar, entre outros.

Abaixo listamos alguns dos mais utilizados, sua síntese e descrição:

7.2.1 Gráficos de Barras

É um gráfico no qual cada ponto é representado por uma barra vertical ou

horizontal.

Tem a seguinte síntese:

bar(x,y), para barras verticais.

barh(x,y) para barras horizontais.

O vetor x representa o rótulo ou posição da barra, e o vetor y representa a altura

ou comprimento da barra.

>> x = [1 2 3 4 5 6];

>> y = [5 4 6 7 2 5];

>> barh(x,y);

>> axis([0 10 0 7]);

-1 -0.5 0 0.5 1-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Introdução ao MATLAB

PET Matemática – UFSM 38

>> title('Grafico de barras horizontais');

>> x = [1 2 3 4 5 6];

>> y = [5 4 6 7 2 5];

>> bar(x,y);

>> axis([0 7 0 8]);

>> title('Grafico de barras verticais');

7.2.2 Gráfico de Setores

É um gráfico representado por “fatias de pizza” de tamanhos variados. Cria-se

um vetor x com os dados a serem representados. Podemos ainda acrescentar o vetor

explode, que é um vetor lógico que recebe 1 ou 0, e cada elemento é associado a um

elemento do vetor x. Sendo que 1 significa que a “fatia da pizza” correspondente é

desenhada um pouco separada da “pizza”, e 0 a fatia permanece em sua posição normal.

>> x=[32 16 12 20 20];

>> explode=[1 0 0 0 0];

0 1 2 3 4 5 6 7 8 9 10

1

2

3

4

5

6

Grafico de barras horizontais

1 2 3 4 5 60

1

2

3

4

5

6

7

8Grafico de barras verticais

Introdução ao MATLAB

PET Matemática – UFSM 39

>> pie(x,explode);

>> title('Gráfico de Setores');

>> legend('Um','Dois','Tres','Quatro','Cinco',-1);

7.2.3 Histogramas

Um histograma é um diagrama que mostra a distribuição de valores em um

conjunto de dados. Para criar um histograma, a faixa de valores em um conjunto de

dados é dividida em grupos regularmente espaçados, e o número de valores de dados

que caem em cada grupo é determinado. A contagem resultante pode ser representada

em um diagrama como função do número do grupo.

hist(y), cria um histograma com 10 grupos igualmente espaçados.

hist(y,n), cria um histograma com n grupos igualmente espaçados.

>> y=randn(50,2);

>> hist(y,6);

32%

16%

12%

20%

20%

Gráfico de Setores

Um

Dois

Tres

Quatro

Cinco

-3 -2 -1 0 1 2 30

2

4

6

8

10

12

14

16

18

Introdução ao MATLAB

PET Matemática – UFSM 40

7.3 Gráficos 3D

O MATLAB cria uma variedade de funções para gráficos em 3 dimensões. Entre

elas:

Comando Descrição

plot3 Plotar em espaço 3D.

fill3 Desenhar polígono 3D.

comet3 Plotar em 3D com trajetória de cometa.

contour Plotar contorno 2D.

contour3 Plotar contorno 3D.

clabel Plotar contorno com valores.

quiver Plotar gradiente.

mesh Plotar malha 3D.

meshc Combinação mesh/contour.

surf Plotar superfície 3D.

surfc Combinação surf/contour.

surfil Plotar superfície 3D com iluminação.

slice Plot visualização volumétrica.

cylinder Gerar cilindro.

sphere Gerar esfera.

ezplot3 Plotar uma curva espacial de três equações paramétricas no

domínio padrão 0 < t < 2π.

ezsurf Plotar a superfície de um gráfico de uma função de duas

variáveis no domínio padrão -2 π < x < 2 π e -2 π < y < 2 π.

Exemplos:

>> ezplot3('sin(t)','cos(t)','t')

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

10

2

4

6

8

x

x = sin(t), y = cos(t), z = t

y

z

Introdução ao MATLAB

PET Matemática – UFSM 41

>> ezsurf('1/sqrt(x^2 + y^2)')

>> t=0:pi/50:10*pi;

>> plot3(sin(t),cos(t),t);

Obs.: Todos os comandos de gráficos 2D, de escala, título, nome aos eixos continuam

valendo ( nome ao eixo z: zlabel).

Para estipular os limites dos eixos x, y e z utilizam-se os seguintes comandos:

xlim([xmin xmax]) → define o eixo X de xmin a xmax.

ylim([ymin ymax]) → define o eixo Y de ymin a ymax.

zlim([zmin zmax]) → define o eixo Z de zmin a zmax.

7.3.1 Meshgrid

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.

-5

0

5

-5

0

5

0

2

4

6

8

x

1/sqrt(x2 + y2)

y

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

10

10

20

30

40

Introdução ao MATLAB

PET Matemática – UFSM 42

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:

f(x,y) = sen(x2+y

2)1/2

/ (x2+y

2)1/2

>> [X,Y]=meshgrid(-8:0.5:8,-8:0.5:8);

>> r=sqrt(X.^2+Y.^2);

>> Z=sin(r)./r;

>> mesh(X,Y,Z)

e o comando contour(Z,10) mostra a projeção da superfície acima no plano xy com 10

iso-linhas:

>> contour(Z,10)

-10

-5

0

5

10

-10

-5

0

5

10-0.5

0

0.5

1

5 10 15 20 25 30

5

10

15

20

25

30

Introdução ao MATLAB

PET Matemática – UFSM 43

>> subplot(221)

>> mesh(X,Y,Z)

>> title('sombrero')

>> subplot(222)

>> t=0:pi/50:10*pi;

>> plot3(sin(t),cos(t),t)

>> title('Hélice')

>> subplot(223)

>> mesh(X,Y,X.^2-Y.^2)

>> title('Sela')

>> subplot(224)

>> mesh(X,Y,3*sqrt(X.^2+Y.^2))

>> title('cone')

-100

10

-10

0

10-1

0

1

sombrero

-10

1

-1

0

10

20

40

Hélice

-100

10

-10

0

10-100

0

100

Sela

-100

10

-10

0

100

20

40

cone

Introdução ao MATLAB

PET Matemática – UFSM 44

8. PROGRAMAÇÃO

8.1. Arquivos M

Quando uma linha de comandos é digitada no MATLAB, ele imediatamente

processa e devolve o resultado. Porém, é possível executar sequências de comandos,

que podem ser guardados em arquivos. Arquivos que contém comandos do MATLAB

são chamados arquivos M porque possuem extensão .m.

Um arquivo M é formado por uma sequência de comandos ou de referência para

outros arquivos. Eles podem ser criados a partir de qualquer editor de texto e são

arquivos de texto comuns. Existem dois tipos distintos de arquivos: Scripts e Funções.

Existe ainda uma classe especial de funções chamada funções função.

8.1.1. Scripts

Um arquivo texto contendo uma lista de comandos é chamado script (roteiro) e

toda vez que for chamado efetua a lista de comandos como se eles fossem entrados

sequencialmente via teclado. Não necessitam de declarações ou delimitadores de

começo e fim. É o tipo de programação mais simples. São muito úteis para

automatização de comandos, como códigos que necessitam ser executados

repetidamente. Estes arquivos se utilizam dos dados presentes na memória (workspace -

espaço destinado às variáveis que estão salvas na memória) para efetuar os comandos.

Existem duas opções para executar o arquivo, sendo a primeira o botão “Run” no centro

da barra de ferramentas, ou utilizando o atalho F5. Scripts são capazes de utilizar dados

existentes no workspace, bem como criar novos dados. Qualquer variável utilizada é

gravada no workspace, possibilitando utilizações futuras.

8.1.2. Funções

Para criarmos funções necessitamos trabalhar na janela de M-Files, para tanto,

como você já sabe, vá em File −> New −> M −> File. Antes de apresentarmos vamos

dar as 3 regras principais para a criação de funções no MATLAB:

Deve-se ter ao menos o nome da função, a variável de entrada e a função f.

Introdução ao MATLAB

PET Matemática – UFSM 45

O arquivo .m deve ser salvo com o mesmo nome da função.

A função f deve ser igualada a função operacional.

Vamos tornar mais claro esses pontos com um exemplo:

function [ f ] = hema( x ) f = x/24/30/12

end

Abrimos o M-File e digitamos function f e após isso igualamos a uma função

que criaremos, no caso hema, que significa horas em ano sendo uma transformação. Na

linha abaixo igualamos a função f ao corpo da função hema. E por último temos a nossa

variável de entrada que é o x, que representa as horas. Pronto, agora basta salvar esse

arquivo com o nome idêntico da função hema, após isso vamos à janela de comando

principal e chamamos pela nova função:

>> hema(8640)

f =

1

ans =

1

8.2. Controladores 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.

8.2.1. O laço for

É um dos comandos mais simples utilizados em MATLAB. Tem como sintaxe

for <condição>

[Comandos];

Introdução ao MATLAB

PET Matemática – UFSM 46

end

É dividido em três partes:

A primeira parte é realizada uma vez, antes de o laço ser iniciado. A

<condição> é especificada da forma m:n ou m:i:n, sendo m o valor inicial,

i o valor incremental e n o valor final da variável.

A segunda parte é o teste ou condição que controla o laço. Esta condição é

avaliada; se verdadeira, o corpo do laço especificada em Comandos é

executado.

A terceira parte acontece quando a condição se torna falsa e o laço termina.

O comando end é usado como limite inferior do corpo do laço. Pode ocorrer de

serem utilizados conjuntos de laços for, principalmente na construção de matrizes.

Exemplo:

for i=1:5, x(i)=i^2;

end x

x =

1 4 9 16 25

Exemplo:

for i = 1:8 for j = 1:8,

A(i,j) = i + j; B(i,j) = i - j;

end end C= A + B

A =

2 3 4 5 6 7 8 9

3 4 5 6 7 8 9 10

4 5 6 7 8 9 10 11

5 6 7 8 9 10 11 12

6 7 8 9 10 11 12 13

7 8 9 10 11 12 13 14

8 9 10 11 12 13 14 15

9 10 11 12 13 14 15 16

B =

0 -1 -2 -3 -4 -5 -6 -7

1 0 -1 -2 -3 -4 -5 -6

Introdução ao MATLAB

PET Matemática – UFSM 47

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

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

4 3 2 1 0 -1 -2 -3

5 4 3 2 1 0 -1 -2

6 5 4 3 2 1 0 -1

7 6 5 4 3 2 1 0

C =

2 2 2 2 2 2 2 2

4 4 4 4 4 4 4 4

6 6 6 6 6 6 6 6

8 8 8 8 8 8 8 8

10 10 10 10 10 10 10 10

12 12 12 12 12 12 12 12

14 14 14 14 14 14 14 14

16 16 16 16 16 16 16 16

8.2.2. O comando While

Este comando testa a expressão de controle para execução de outras sentenças.

while <condição>

[Comandos]

end

onde <condição> é uma expressão de relação da forma e1-R-e2, sendo e1 e e2

expressões aritméticas e R um dos seguintes operadores de relação:

= = igual

< = menor ou igual

> = maior ou igual

∼ = diferente

< menor

> maior

Adicionalmente podem ainda formar-se expressões lógicas mais complicadas

combinando elementos lógicos e expressões de relação, com os seguintes operadores

lógicos:

& operador e

| operador ou

Introdução ao MATLAB

PET Matemática – UFSM 48

∼ operador de negação

Exemplo: Calcular o primeiro inteiro tal que n! tem quatro dígitos.

n=1; while prod(1:n)<1.e100

n=n+1; end n

n =

70

8.2.3. O comando if

Utilizamos para testar condições e determinar sentenças a serem executadas.

Tem como sintaxe:

if <condição1>

[Comandos1]

elseif <condição2>

[Comandos2]

else

[Comandos3]

end

Testa condição1. Se condição1 for verdadeira executa as sentenças determinadas em

Comandos1 e passa para end; caso contrário, testa condição2. Se condição2 for

verdadeira executa as sentenças em Comandos2 e passa para end; caso contrário executa

Comandos3 e finaliza o programa. Nestes casos, as condições 1 e 2 são do tipo

expressão – operador – expressão conforme definido anteriormente. Por exemplo:

for i = 1:5, for j = 1:5,

if (i == j) A(i,j)=2;

else if (abs(i-j) == 1) A(i,j) = -1;

else

Introdução ao MATLAB

PET Matemática – UFSM 49

A(i,j) = 0; end end

end end A

A =

2 -1 0 0 0

-1 2 -1 0 0

0 -1 2 -1 0

0 0 -1 2 -1

0 0 0 -1 2

8.2.4. O comando break

Termina um laço. Encerra a execução de comandos for ou while quando são

encontrados.

8.2.5. O comando pause

Fornece uma pausa na execução do programa, até que qualquer tecla ser

digitada. Pause(n) dá uma pausa de n segundos.

8.2.6. O comando input

Exibe mensagem na tela e dá ao usuário um prompt para entrada de dados.

input(‘texto’);

input(‘texto’,’s’)

O comando input(‘texto’) exibe o texto na tela da linha de comando e retorna o valor

digitado até que seja pressionado enter. Já input(‘texto’,’s’) é utilizado para entrada de

strings. Por exemplo:

id=input(‘Digite sua idade’) guarda o número digitado em id;

Introdução ao MATLAB

PET Matemática – UFSM 50

nom=input(‘Digite o seu nome’, ‘s’) guarda a string digitada em nom.

8.2.7. O comando disp

Esse comando exibe texto na tela de comando. Para escrever uma frase deve

rodear-se essa frase do símbolo ’. Quando se pretender escrever um conjunto de várias

frases, devem separar-se as frases por vírgulas e rodear o conjunto com os símbolos [ e

]. Por exemplo,

disp([‘ Estou a escrever esta frase há ‘, ‘ minutos’ ] )

Para combinar texto e valores numéricos devem converter-se estes últimos a

“texto” através da função num2str. O comando

disp(['Estou a escrever esta frase há ',num2str(n),' minutos'] )

Estou a escrever esta frase há 10 minutos

escreverá, no caso de n = 10, a frase “Estou a escrever esta frase há 10 minutos”.

8.2.8. O comando switch

Esse comando testa expressão de controle e seleciona um caso para executar.

switch switch_expr

case case_expr,

stat1, ..., stat1n

case {case_expr1, case_expr2, case_expr3,...}

stat2, ..., stat2n

...

otherwise,

stat3, ..., stat3n

end

Introdução ao MATLAB

PET Matemática – UFSM 51

Se switch_expr for igual a case_expr, então as sentenças stat1 até stat1n serão

executadas, e terminado o comando. Se switch_expr for igual a case_expr1 ou

case_expr2 ou case_expr3 ..., então as sentenças stat2 até stat2n serão executadas, e

terminado o comando. Se switch_expr for diferente de todos as case_expr’s anteriores,

então as sentenças stat3 até stat3n serão executadas, e terminado o comando.

8.2.9. O comando fprintf

É um comando de saída de dados. O fprintf é um método em que é possível

combinar frases com variáveis numéricas de dimensão 1, ou seja, um escalar ou um

elemento da matriz. Assim, o que for digitado entre aspas aparecerá para o usuário, os

itens onde aparece %d serão substituídos pelas variáveis, respeitando-se a ordem em

que aparecem. Além disso, %d significa que só aparecerá a parte inteira de x e y, e toda

vez que for utilizado \n ocorrerá uma troca de linha. Existem, ainda, os seguintes

comandos:

%d Exibe o valor como inteiro

%e Exibe o valor no formato exponencial

%f Exibe o valor em ponto flutuante

%g Escolhe o mais curto entre ponto flutuante e exponencial

8.2.10. Comandos de organização

Podemos fazer um comentário utilizando o símbolo “%”, ou selecionando o

texto todo e clicando Ctrl+R, ou ainda utilizando ‘%{‘ para abrir o comentário por

blocos e ‘%}’ para fechá-lo.

O uso de ‘%%’, faz com que o usuário possa rodar apenas algumas partes do

programa. Para rodar apenas a parte selecionada, tecle ‘Ctrl+Enter’ e para rodar o

programa todo, clique em F5.

8.3. Exemplificação

1) Crie um programa que calcula as raízes de uma equação do segundo grau. Caso o

coeficiente de x² igual a zero, o programa deve retornar ao usuário que está equação

Introdução ao MATLAB

PET Matemática – UFSM 52

não é do segundo grau. Além disso, deve informar, baseado no valor de delta, como

serão as raízes desta equação.

>> disp(' ==== Entre com a, b e c ==== ');

a = input(' Coeficiente de x^2 ');

b = input(' Coeficiente de x ');

c = input(' Termo independente de x ');

if a == 0.

disp(' ==== A equacao nao e do segundo grau

==== ');

a = input(' Coeficiente de x^2 - a <> 0 ');

end

break

delta = b^2-4.*a*c;

delta

if delta == 0.

ch = 0;

end

if delta < 0.

ch = -1;

end

if delta > 0.

ch = 1;

end

x(1) = (-b + sqrt(delta))/(2.*a);

x(2) = (-b - sqrt(delta))/(2.*a);

x

switch ch

Introdução ao MATLAB

PET Matemática – UFSM 53

case 0,

disp(' Raizes reais e iguais.')

case -1,

disp(' Raizes complexas conjugadas.')

otherwise,

disp(' Raizes reais e desiguais.')

end

Alternativamente, para encontrar as raízes de uma função do segundo grau, podemos

criar um arquivo do tipo function:

function [x1,x2]= raizes(a,b,c) a = input(' Coeficiente de x^2 '); b = input(' Coeficiente de x '); c = input(' Termo independente de x '); delta = sqrt(b*b - 4*a*c) x1=(-b + delta)/2*a; x2=(-b - delta)/2*a; end

2) Criar um programa que avalie o IMC de indivíduos. O programa deve se utilizar

dos comandos menu e inputdlg.

function imc k = menu('AVALIAÇÃO FÍSICA - IMC','QUER VER SUA SITUAÇÃO

FÍSICA', ... 'FIM - PROGRAMA');

if k==1

dados = {'ENTRE COM O SEU PESO (kg):','ENTRE COM A

SUA ALTURA (m):'};

titulo = 'ÍNDICE DE MASSA CORPÓREA – IMC'; linhas=1;

resposta=inputdlg(dados,titulo,linhas); peso=str2num(char(resposta(1))); altura=str2num(char(resposta(2)));

format bank indice = peso/(altura*altura);

disp(' ----------------------------------------------

------------') disp(' |PESO (kg) | ALTURA (m) | ÍNDICE DE MASSA

CORPÓREA - IMC |') disp(' ----------------------------------------------

------------')

Introdução ao MATLAB

PET Matemática – UFSM 54

saida=[peso altura indice]; disp(sprintf('%10.2f %11.2f %17.2f',saida')) disp(' ')

if indice < 20

disp(' ') disp(' VOCÊ DEVE ALIMENTAR-SE MELHOR, REDUZIR O

STRESS, ENGORDAR ') disp(' ')

end

if indice >= 20 & indice <=25

disp(' ') disp(' TUDO OK!, MANTENHA A FORMA') disp(' ')

end

if indice > 25 & indice < 30

disp(' ') disp(' VOCÊ DEVE ALIMENTAR-SE MELHOR, REDUZIR O

PESO ') disp(' ')

end

if indice >= 30

disp(' ') disp(' REPENSE O SEU MODO DE VIVER, OU ...') disp(' ')

end pause imc

else

disp(' ') disp(' -------------------------') disp(' |OBRIGADO POR USAR: IMC |') disp(' -------------------------') disp(' ')

end

3) Criar um programa que verifique se o número dado é positivo, se sim determinar se

o mesmo é par ou ímpar.

function par_impar(n) n = input('Entre com o número ') if n<0 % se n é negativo disp ('O número dado é negativo') elseif rem(n,2)==0 % se número é positivo e par disp ('O número dado é positivo e par') else disp('O número dado é positivo e ímpar') end

Introdução ao MATLAB

PET Matemática – UFSM 55

4) Faça um programa que pergunte ao usuário quantas linhas e quantas colunas ele quer

que uma matriz A tenha. Em seguida, pedir que ele insira cada valor da matriz. Além

disto, verificar quantos elementos menores que zero tem nesta matriz.

l=input('Digite um valor para o numero de linhas da matriz A:'); c=input('Digite um valor para o numero de colunas da matriz

A:'); A=zeros(l,c); b=0; for i=1:l for j=1:c fprintf('Insira o numero (%d,%d):',i,j); A(i,j)=input(''); if A(i,j)<0 b=b+1; end end end disp(A); fprintf('A matriz A possui %d números(s) menor(es) que

zero.',b);

Introdução ao MATLAB

PET Matemática – UFSM 56

9. BIBLIOGRAFIA

PET MATEMÁTICA UFSM; Noções Básicas de Programação em MATLAB. Santa

Maria, 2010.

CHAPMAN, S.J.; Programação em MATLAB para engenheiros. Tradução técnica:

Flávio Soares Correa da Silva, São Paulo, Thomson Learning, 2006.

FALCÃO, M. I; Iniciação ao MATLAB. Universidade do Minho, 2001, Disponível

em: https://repositorium.sdum.uminho.pt/handle/1822/1480

HANSELMAN, D; LITTLEFIELD, B; MATLAB – Versão Estudante – Guia do

Usuário – Versão 4. MAKRON Books do Brasil. São Paulo, 1997.

PET ENGENHARIA ELÉTRICA UFSM; Introdução ao MATLAB. Santa Maria,

2010. Disponível em: http://w3.ufsm.br/petee/

PORTUGAL, R.; MATLAB para leigos e desinteressados: uma introdução simples

com exemplos banais. Disponível em: www.ime.unicamp.br/~cheti/intmatlab.pdf