Computa˘c~ao Cient ca com MATLAB - UFSCmtm.ufsc.br/~melissa/20132/epagri/aula_01.pdf · O que e...

Post on 07-Mar-2020

3 views 0 download

Transcript of Computa˘c~ao Cient ca com MATLAB - UFSCmtm.ufsc.br/~melissa/20132/epagri/aula_01.pdf · O que e...

Computacao Cientıfica com MATLAB

Melissa Weber Mendoncamelissa.mendonca@ufsc.br

Conteudo

I Algoritmos: conceito; tipos de dados; scripts.

I Modo interativo do MATLAB: familiarizacao com o software;comandos de entrada e saıda; comandos de atribuicao;manipulacao de variaveis; funcoes basicas; leitura e escrita emarquivos.

I Processos de repeticao e condicionais: o comando for e ocomando if no MATLAB.

I Variaveis indexadas: vetores; matrizes.

I Modularizacao: funcoes; subprogramas.

I Graficos: producao de graficos atraves de dados existentes emduas e tres dimensoes.

I Aplicacoes: resolucao de problemas contextualizadosutilizando o software MATLAB.

Por que estudar programacao?

Objetivo

Entender um problema e formular sua solucao usando ferramentascomputacionais.

Ferramenta

Linguagem de programacao MATLAB.

Como funciona o computador?

O computador e uma maquina programavel que recebe umaentrada (input), armazena e manipula automaticamente dados, egera uma saıda (output).

Um computador executa funcoes com entrada e saıda:

ENTRADA ACAO SAIDA

Primeiros ”computadores”

Em 1613, a palavra ”computador”aparece pela primeira vez,designando uma pessoa que realizasse calculos.Os computadores antigos nao eram maquinas programaveis, masserviam a uma funcao especıfica.Exemplos: abaco, regua de calculo, astrolabio, calculadora.

Computadores programaveis de uso limitado

Em 1801, Joseph Marie Jacquard introduziu o uso de cartoesperfurados para programar um tear e produzir padroes intrincadosde tecido automaticamente.

Computadores programaveis de uso geral

Em 1837, Charles Babbage imaginou o conceito de umcomputador mecanico totalmente programavel (a maquinaanalıtica) - mas nao chegou a construi-la.

Computadores programaveis de uso geral

Ada Augusta Byron King, Condessa de Lovelace, filha do poetabritanico Lord Byron, e reconhecida como a primeira programadorade toda a historia. Ela desenvolveu os algoritmos que permitiriama maquina de Babbage computar valores de funcoes matematicas,alem de publicar uma colecao de notas sobre a maquina analıtica.

Estrutura de um computador moderno

Dispositivosde Entrada

(input)

UnidadeCentral de

Processamento

Memorias ouDispositivos de

Armazenamento

Dispositivosde Saıda(output)

O que e um algoritmo?

Um algoritmo e uma sequencia finita de passos que tem comoobjetivo realizar alguma tarefa.

Exemplo: receita de bolo.

I Entrada: ingredientes, utensılios usados.

I Acao: bater, misturar, picar, assar.

I Saıda: bolo.

Exemplo: Como ferver agua (no fogao)?

Dada uma cozinha

Exemplo: Como ferver agua (no fogao)?

Dada uma cozinha, com uma pia com torneira e agua corrente

Exemplo: Como ferver agua (no fogao)?

Dada uma cozinha, com uma pia com torneira e agua corrente, umfogao com pelo menos uma boca

Exemplo: Como ferver agua (no fogao)?

Dada uma cozinha, com uma pia com torneira e agua corrente, umfogao com pelo menos uma boca, e uma chaleira ou panela

Exemplo: Como ferver agua (no fogao)?

Dada uma cozinha, com uma pia com torneira e agua corrente, umfogao com pelo menos uma boca, e uma chaleira ou panela, faca oseguinte:

I

Exemplo: Como ferver agua (no fogao)?

Dada uma cozinha, com uma pia com torneira e agua corrente, umfogao com pelo menos uma boca, e uma chaleira ou panela, faca oseguinte:

I Se encontrar uma chaleira, entao use esta chaleira.Senao, use uma panela.

Exemplo: Como ferver agua (no fogao)?

Dada uma cozinha, com uma pia com torneira e agua corrente, umfogao com pelo menos uma boca, e uma chaleira ou panela, faca oseguinte:

I Se encontrar uma chaleira, entao use esta chaleira.Senao, use uma panela.

I Levar a chaleira ou panela ate a pia.

Exemplo: Como ferver agua (no fogao)?

Dada uma cozinha, com uma pia com torneira e agua corrente, umfogao com pelo menos uma boca, e uma chaleira ou panela, faca oseguinte:

I Se encontrar uma chaleira, entao use esta chaleira.Senao, use uma panela.

I Levar a chaleira ou panela ate a pia.

I Encher a chaleira ou panela de agua.

Exemplo: Como ferver agua (no fogao)?

Dada uma cozinha, com uma pia com torneira e agua corrente, umfogao com pelo menos uma boca, e uma chaleira ou panela, faca oseguinte:

I Se encontrar uma chaleira, entao use esta chaleira.Senao, use uma panela.

I Levar a chaleira ou panela ate a pia.

I Encher a chaleira ou panela de agua.

I Acender uma das bocas do fogao.

Exemplo: Como ferver agua (no fogao)?

Dada uma cozinha, com uma pia com torneira e agua corrente, umfogao com pelo menos uma boca, e uma chaleira ou panela, faca oseguinte:

I Se encontrar uma chaleira, entao use esta chaleira.Senao, use uma panela.

I Levar a chaleira ou panela ate a pia.

I Encher a chaleira ou panela de agua.

I Acender uma das bocas do fogao.

I Colocar a chaleira ou panela sobre a boca acesa do fogao.

Exemplo: Como ferver agua (no fogao)?

Dada uma cozinha, com uma pia com torneira e agua corrente, umfogao com pelo menos uma boca, e uma chaleira ou panela, faca oseguinte:

I Se encontrar uma chaleira, entao use esta chaleira.Senao, use uma panela.

I Levar a chaleira ou panela ate a pia.

I Encher a chaleira ou panela de agua.

I Acender uma das bocas do fogao.

I Colocar a chaleira ou panela sobre a boca acesa do fogao.

I Enquanto a agua nao estiver borbulhando,continue aguardando.

Exemplo: Como ferver agua (no fogao)?

Dada uma cozinha, com uma pia com torneira e agua corrente, umfogao com pelo menos uma boca, e uma chaleira ou panela, faca oseguinte:

I Se encontrar uma chaleira, entao use esta chaleira.Senao, use uma panela.

I Levar a chaleira ou panela ate a pia.

I Encher a chaleira ou panela de agua.

I Acender uma das bocas do fogao.

I Colocar a chaleira ou panela sobre a boca acesa do fogao.

I Enquanto a agua nao estiver borbulhando,continue aguardando.

I Desligue a boca acesa do fogao.

Exemplo: Como ferver agua (no fogao)?

Dada uma cozinha, com uma pia com torneira e agua corrente, umfogao com pelo menos uma boca, e uma chaleira ou panela, faca oseguinte:

I Se encontrar uma chaleira, entao use esta chaleira.Senao, use uma panela.

I Levar a chaleira ou panela ate a pia.

I Encher a chaleira ou panela de agua.

I Acender uma das bocas do fogao.

I Colocar a chaleira ou panela sobre a boca acesa do fogao.

I Enquanto a agua nao estiver borbulhando,continue aguardando.

I Desligue a boca acesa do fogao.

A agua esta fervida dentro da chaleira ou panela.

Exemplo: Como ferver agua (no fogao)?

ENTRADA: cozinha, pia, torneira, agua corrente, fogao com pelomenos uma boca, chaleira ou panela.ACAO:

I Se encontrar uma chaleira, entao pegue esta chaleira comorecipiente.Senao, pegue uma panela como recipiente.

I Levar o recipiente ate a pia.

I Encher o recipiente de agua.

I Acender uma das bocas do fogao.

I Colocar o recipiente sobre a boca acesa do fogao.

I Enquanto a agua nao estiver borbulhando,continue aguardando.

I Desligue a boca acesa do fogao.

SAIDA: recipiente com agua fervida.

Exemplo: Como ferver agua (no fogao)?

ENTRADA: cozinha, pia, torneira, agua corrente, fogao com pelomenos uma boca, chaleira ou panela.ACAO:

I Se encontrar uma chaleira, entao pegue esta chaleira comorecipiente.Senao, pegue uma panela como recipiente.

I Levar o recipiente ate a pia.

I Encher o recipiente de agua.

I Acender uma das bocas do fogao.

I Colocar o recipiente sobre a boca acesa do fogao.

I Enquanto a agua nao estiver borbulhando,continue aguardando.

I Desligue a boca acesa do fogao.

SAIDA: recipiente com agua fervida.

Exemplo: Como ferver agua (no fogao)?

ENTRADA: cozinha, pia, torneira, agua corrente, fogao com pelomenos uma boca, chaleira ou panela.ACAO:

I Se encontrar uma chaleira, entao pegue esta chaleira comorecipiente.Senao, pegue uma panela como recipiente.

I Levar o recipiente ate a pia.

I Encher o recipiente de agua.

I Acender uma das bocas do fogao.

I Colocar o recipiente sobre a boca acesa do fogao.

I Enquanto a agua nao estiver borbulhando,continue aguardando.

I Desligue a boca acesa do fogao.

SAIDA: recipiente com agua fervida.

Exemplo: Como ferver agua (no fogao)?

ENTRADA: cozinha, pia, torneira, agua corrente, fogao com pelomenos uma boca, chaleira ou panela.ACAO:

I Se existe chaleira, entao recipiente chaleira.Senao, recipiente panela.

I Levar o recipiente ate a pia.

I Encher o recipiente de agua.

I Acender uma das bocas do fogao.

I Colocar o recipiente sobre a boca acesa do fogao.

I Enquanto a agua nao estiver borbulhando,continue aguardando.

I Desligue a boca acesa do fogao.

SAIDA: recipiente com agua fervida.

Exemplo: Como ferver agua (no fogao)?

ENTRADA: cozinha, pia, torneira, agua corrente, fogao com pelomenos uma boca, chaleira ou panela.ACAO:

I Se existe chaleira, entao recipiente chaleira.Senao, recipiente panela.

I Levar o recipiente ate a pia.

I Encher o recipiente de agua.

I Acender uma das bocas do fogao.

I Colocar o recipiente sobre a boca acesa do fogao.

I Enquanto a agua nao estiver borbulhando,continue aguardando.

I Desligue a boca acesa do fogao.

SAIDA: recipiente com agua fervida.

O que e uma linguagem de programacao?

Uma linguagem de programacao traduz um algoritmo (sequenciade instrucoes) da linguagem humana para a linguagem da maquina(”0 e 1”).Existem milhares de linguagens de programacao.

Modulo: Exemplo em Pseudo-codigo

Dado um numero a

Se a > 0, ent~ao

modulo = a

Sen~ao

modulo = -a

Fim Se

Exemplo em Python

def modulo(a):

if a > 0:

modulo = a

else:

modulo =-a

Exemplo em C

double modulo(double a)

{

if (a > 0)

modulo =a;

else

modulo =-a;

}

Exemplo em Fortran

SUBROUTINE MODULO(A)

REAL MODULO

IF(A .GT. 0)THEN

MODULO=A

ELSE

MODULO=-A

ENDIF

END SUBROUTINE MODULO

O que e o MATLAB?

Linguagem computacional de alto nıvel e um ambiente interativopara computacao numerica, visualizacao e programacao.

Exemplo de codigo em MATLAB

function[abs] = modulo(a)

if a > 0

modulo = a

else

modulo = -a

end

Console: Modo Interativo

ConsoleEspaco detrabalho

Arquivos

Historico

Diretorio Atual

Scripts

Os comandos podem ser entrados diretamente no console doMATLAB, ou escritos, em sequencia, dentro de um arquivo comextensao .m chamado script.

Sequencias de trabalho possıveis:

1. Escrever os comandos no console em sequencia, obtendo asrespostas a cada comando.

2. Usando um script:

a) Escrever os comandos em um arquivo no seu editor de textopreferido (Notepad) e salvar esse arquivo com extensao .m;

b) Ir ate a janela do console do MATLAB;c) Digitar o nome do arquivo em que voce digitou os comandos

sem o .m.

Comandos Basicos

I Operacoes Aritmeticas: +, -, *, /, ^

I Funcoes matematicas: sin(pi), abs(-3)

I date

I clear ou clc

I help

Comandos Basicos

I Operacoes Aritmeticas: +, -, *, /, ^

I Funcoes matematicas: sin(pi), abs(-3)

I date

I clear ou clc

I help

Comandos Basicos

I Operacoes Aritmeticas: +, -, *, /, ^

I Funcoes matematicas: sin(pi), abs(-3)

I date

I clear ou clc

I help

Comandos Basicos

I Operacoes Aritmeticas: +, -, *, /, ^

I Funcoes matematicas: sin(pi), abs(-3)

I date

I clear ou clc

I help

Comandos Basicos

I Operacoes Aritmeticas: +, -, *, /, ^

I Funcoes matematicas: sin(pi), abs(-3)

I date

I clear ou clc

I help

Variaveis

Para atribuir um valor a uma variavel no MATLAB, bastadigitarmos

>> variavel = valor

(nao e preciso declarar variaveis no MATLAB).

Tipos de Variavel

I Numeros Reais:>> a=4.5

>> pi

>> 1e-2

Tipos de Variavel

I Listas de caracteres (strings):

>> texto = ’Um texto qualquer.’

Tipos de Variavel

I Listas de numeros reais indexadas (vetores):

>> v = [1,2,3,4]

>> u = [1;2;3;4]

Tipos de Variavel

I Listas de numeros reais duplamente indexadas (matrizes):

>> A = [1 2; 3 4]

Vetores

>> v = [1 3 5]

>> w = [7;9;11]

>> v’

>> v(2)

ans =

3

>> length(v)

>> size(v)

>> size(v,1)

>> size(v,2)

Vetores

>> v = [1 3 5]

>> w = [7;9;11]

>> v’

>> v(2)

ans =

3

>> length(v)

>> size(v)

>> size(v,1)

>> size(v,2)

Vetores

>> v = [1 3 5]

>> w = [7;9;11]

>> v’

>> v(2)

ans =

3

>> length(v)

>> size(v)

>> size(v,1)

>> size(v,2)

Vetores

>> v = [1 3 5]

>> w = [7;9;11]

>> v’

>> v(2)

ans =

3

>> length(v)

>> size(v)

>> size(v,1)

>> size(v,2)

Vetores

>> v = [1 3 5]

>> w = [7;9;11]

>> v’

>> v(2)

ans =

3

>> length(v)

>> size(v)

>> size(v,1)

>> size(v,2)

Vetores

>> v = [1 3 5]

>> w = [7;9;11]

>> v’

>> v(2)

ans =

3

>> length(v)

>> size(v)

>> size(v,1)

>> size(v,2)

Vetores

>> v = [1 3 5]

>> w = [7;9;11]

>> v’

>> v(2)

ans =

3

>> length(v)

>> size(v)

>> size(v,1)

>> size(v,2)

Vetores

>> v = [1 3 5]

>> w = [7;9;11]

>> v’

>> v(2)

ans =

3

>> length(v)

>> size(v)

>> size(v,1)

>> size(v,2)

Operacoes basicas

Lembre-se de respeitar as dimensoes!

>> v+w-z

>> 2*v

>> a*w

>> v/w

>> v^2

>> v.*w

>> v./w

>> v.^2

Matrizes

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

A =

1 2 3

4 5 6

>> A(2,1)

ans =

4

>> A(3)

>> A’

>> length(A)

>> size(A)

>> size(A,1)

>> size(A,2)

Matrizes

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

A =

1 2 3

4 5 6

>> A(2,1)

ans =

4

>> A(3)

>> A’

>> length(A)

>> size(A)

>> size(A,1)

>> size(A,2)

Matrizes

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

A =

1 2 3

4 5 6

>> A(2,1)

ans =

4

>> A(3)

>> A’

>> length(A)

>> size(A)

>> size(A,1)

>> size(A,2)

Matrizes

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

A =

1 2 3

4 5 6

>> A(2,1)

ans =

4

>> A(3)

>> A’

>> length(A)

>> size(A)

>> size(A,1)

>> size(A,2)

Matrizes

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

A =

1 2 3

4 5 6

>> A(2,1)

ans =

4

>> A(3)

>> A’

>> length(A)

>> size(A)

>> size(A,1)

>> size(A,2)

Matrizes

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

A =

1 2 3

4 5 6

>> A(2,1)

ans =

4

>> A(3)

>> A’

>> length(A)

>> size(A)

>> size(A,1)

>> size(A,2)

Matrizes

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

A =

1 2 3

4 5 6

>> A(2,1)

ans =

4

>> A(3)

>> A’

>> length(A)

>> size(A)

>> size(A,1)

>> size(A,2)

Matrizes

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

A =

1 2 3

4 5 6

>> A(2,1)

ans =

4

>> A(3)

>> A’

>> length(A)

>> size(A)

>> size(A,1)

>> size(A,2)

Operacoes com Matrizes

>> A = [1 2;3 4]

>> B = [2 1;0 3]

>> A+B

>> A-B

>> A*B

>> 2*A

>> B/3

>> A’

>> A.*B

>> A./B

>> A/B

Funcoes basicas

>> eye(n)

>> zeros(m,n)

>> ones(m,n)

>> inv(A)

Dica!

Para que o resultado nao seja mostrado ao final daoperacao, use ; ao final do comando.

Exemplo:

>> sin(pi)

>> sin(pi);

Comentarios

Em um script, podemos comentar nosso codigo, usando o sımbolo%:

a = 1;

% Agora, a variavel a tem valor 1.

Lacos de repeticao

Quando e necessario repetir certo comando de codigo varias vezes,usamos a estrutura for:

for i = 1:3

i

end

For

Escreva um algoritmo que imprima todos os pares de 1 a 100.

for i = 1:50

2*i

end

Entrada do usuario

Se quisermos que o usuario entre com um valor de variavel,podemos usar o comando input:

>> variavel = input(’Entre com o valor da variavel: ’)

Usuario

Escreva um algoritmo que imprima todos os numeros de 1 a n,onde n e dado pelo usuario.

n = input(’Entre com o numero n: ’);

for i = 1:n

i

end

Lacos de repeticao (2)

Quando e necessario repetir certo comando de codigo varias vezesate que uma certa condicao seja satisfeita, usamos a estruturawhile:

i = 1;

while i < 3

disp(’Mais um.’)

i = i + 1;

end

Dica: texto por ındices

Um texto funciona como uma lista (vetor):>> texto = ’Palavra’

>> texto(1) = ’P’

>> texto(2) = ’a’

>> texto(1:2) = ’Pa’

>> length(texto)

>> size(texto)