Programa Linguagem MATLAB® • Métodos Computacionais...

30
Programa Linguagem MATLAB® Métodos Computacionais para EDO Métodos Computacionais para EDP Critérios P1: 5a Aula - Peso 1 P2: 10a Aula - Peso 1.5 P3: 15a Aula- Peso 2.0 Presença e Participação: Peso 2.0

Transcript of Programa Linguagem MATLAB® • Métodos Computacionais...

Programa

• Linguagem MATLAB®

• Métodos Computacionais para EDO

• Métodos Computacionais para EDP

Critérios

P1: 5a Aula - Peso 1

P2: 10a Aula - Peso 1.5

P3: 15a Aula- Peso 2.0

Presença e Participação: Peso 2.0

1 aula: Formação dos grupos- idéia geral do MATLAB

2 aula: exercícios no computador em classe

3a Aula: Simulink

4 aula Exercícios e entrega 1a prova

5 aula: entrega da P1 das 16 h- 17 h na minha sala

Noturno 20:00 h - 21 H

entrega da avaliação até a 4 aula

( em grupo)

Capítulo 1: Introdução:

A metodologia que usaremos na solução de problemasserá:

Enunciar o problema claramente;

•Descrição da informação da entrada e saída;

• Trabalho do problema manualmente;

• Desenvolvimento de uma solução MATLAB®

• Teste da solução usando uma variedade de grupo dedados

A seguir, exemplifica-se usando o cálculo da distânciaentre dois pontos do plano.

Etapa 1: Enunciado do Problema:

• Calculo da distância em linha reta entre dois pontosnum plano

Etapa 2: Descrição de Entrada e Saída:

• Escrita da informação que é dada para resolução doproblema para então proceder-se a identificação dosvalores a serem calculados

Etapa 3: Exemplo Manual

•Uma vez que pode-se trabalhar o problema com um umsimples grupo de dados, então está-se pronto para odesenvolvimento de um algoritmo ou um esboço passo apasso da solução. Este Esboço é convertido para oscomandos do MATLAB® para que o computador façatodos os cálculos necessários .

Etapa 4: Solução MATLAB®

% Este programa calcule e imprime a distância , em linha

% reta, entre dois pontos

Note que o sinal % é usado para anteceder comentários queexplicam os comandos do MATLAB ®

P1=[1, 5] % Ponto 1 inicial

p2=[4,7] % Ponto 2 inicial

d=sqrt(sum(p2-p1)^2)) % Calcular distância

Etapa 5: Testando

Deve-se testar com com os dados do cálculo manual,por ex: d=3 .6056 e assim por diante

Capítulo 2: Matrizes , Vetores e Escalares

O nome de uma matriz deve começar por umas letra e deve conter nomáximo 19 caracteres que podem ser números letras, ou caracter sublinhado, e,aparece ao lado esquerdo do sinal de igual. O lado direito contém os dados entrecolchetes por ordem de linhas. O ponto-e-virgula separa as linhas, e os valores daslinhas podem estar separados por vírgulas ou por espaços. O valor pode conterum sinal de + ou - e, um ponto decimal, mas não pode conter uma virgula, comoem 32, 154

A=[3.5]; C= -1 0 0

1 1 0

1 -1 0

0 0 2

B=[1.5, 3.1];

C=[-1,0,0; 1,1,0; 1, -1,0;0,0,2];

Quando define-se uma matriz, O MATLAB , imprime o valor da matriz napróxima linha a menos que coloca-se um ponto e vírgula depois da definição.Tente entrar com as matrizes A, B e C sem o ponto e vírgula

Pode-se também definir uma matriz digitando-se cada linhaseparadamente C = [-1 0 0

1 1 0

1 -1 0

0 0 2];

Pode-se, por exemplo, no caso de um vetor linha F , com 10valores, também pode-se fazer:

F=[ 1 52 64 197 42 -42 55 82 22 109]

F=[ 1 52 64 197 42 -42, ...

55 82 22 109]

Esta forma é usada quando a linha é muito extensa. Pode-seterminar uma linha com uma vírgula seguida de treis ou maispontos, e continuar a entrar com valores restantes na próxima linhada área de trabalho do MATLAB.

Pode-se também definir uma matriz usando outra já definida.

B=[ 1.5, 3.1];

S=[3.0 B]

Este comando equivalem a S=[ 3.0 1.5 3.1]Pode-se mudar e adicionar valores na matriz usando-

se uma referência entre parênteses. Assim o seguintecomando

S(2)=-1 Muda o valor da matriz S de 1.5 para -1.0

A ordem da matriz pode ser alterada. Se executarmos ocomando S(4)= 5.5 então a matriz S terá 04 elementos no lugar de03. Executando o comando S(8)= 9.5 a matriz terá 08 elementos eos valores S(5), S(6), S(7) são automaticamente nulos, desde quenão foram atribuídos valores para eles.

As matrizes podem ser definidas através de informaçõesarmazenadas em arquivos. O MATLAB trabalha com 02 tipos diferentesde arquivos Os arquivos MAT e ASCII. Os arquivos MAT são geradospor um comando MATLAB usando o comando save, que contém onome do arquivo e as matrizes que devem ser armazenadas. A extensãomat é automáticamente adicionada ao nome do arquivo.

Assim para salvar as matrizes A e B e C em um arquivo matnomeado “ teste 1” devemos fazer: save teste_ 1 A B C ;

para recupera-lo usamos o comando: load teste_ 1

Um arquivo ASCII que será usado juntamente com um programaMATLAB deve conter informações exclusivamente numéricas e, cadalinha do arquivo deve conter o mesmo numero de dados. O arquivo podeser gerado usando um processador de texto ou por exemplo usandoprogramas como o Fortran, por ex ou por um programa MATLAB,usando o comando save, no formato:

save teste _ 1.dat R/ascii

Cada linha da matriz R será escritas para linhas distintas noarquivos de dados . Recomenda-se usar a extensão dat para se distinguir,melhor dos arquivos mat e m. O comando load seguido do nome doarquivo irá recuperar a informação da matriz R load teste_1 dat

O Operador : suponha que queiramos armazenar aprimeira coluna da matriz data 1 em um vetor x e a segunda colunaem um vetor y

data 1= [ 0.0, 0.0, 0.1 0.2, 0.3 0.6]

x=data1(:, 1)

y=data1(:, 2)

Os elementos do vetor x correspondem a primeira coluna dedata 1. O segundo comando cria um vetor y correspondem asegunda coluna da matriz data 1.

Se quisemos criar um vetor z cujos elementos sejam oselementos da primeira linha, deve-se fazer: z=data1(1, :)

--

Note que se o operador : for usado na seguinte notação H=1:8; -contém os valores 1, 2, 3, 4, 5, 6, 7, 8

Note que o operador “ : ” entre dois números inteiros gera todosos inteiros entre os 02 números especificados.

Se for usado para separar 03 números, os 02 pontosgerarão valores entre o primeiro e terceiro números, usando o segundonúmero como incremento

.O exemplo, gera um vetor linha, denominado TEMPOque contém os números de de 0.0 a 5.0 com incremento de 0.5

TEMPO 0.0:0.5:5.0

O incremento pode ser também negativo

Comando input

Voce pode entrar com os valores de uma matriz, via teclado,utilizando o comando input que mostra um texto e então espera por umaentrada. Ex: input( ‘ Valores de z: ‘);

Quando este comando é executado o texto ‘ Valores de z: ‘ émostrado em tela . O usuário pode entrar com uma expressão como:

[ 5.1 6.3 -18.0] o qual especifica valores para z. Desde que o comandoinput termina com um ponto e vírgula, os valores de z não sãoimprimidos quando o comando é executado.

Imprimindo matrizes

O modo mais simples de se imprimir uma matriz é entrar com oseu nome. O nome da matriz é repetido, os valores da matriz serãoimprimidos na próxima linha. Existem vários comandos que podemalterar a saída a ser imprimida

Formato

Se o elemento de uma matriz for um numero inteiro, o MATLABapresenta o resultado como um número inteiro. Se o elemento for umnúmero real, o MATLAB apresenta-se com 05 digitos significativos, ouseja 04 digitos à direita do ponto decimal.

Supondo que a variavel a que armazena a raiz quadradade 2

>> A=sqrt(2)

De acordo com o formato escolhido, a variavel A pode apresentarsob a forma:

format long 16 digitos

format short 5 digitos formato padrão

format short e -------------------- cientifico

format long e - 16 digitos------------------------

Quando se quiser imprimir o conteúdo de uma matriz sem imprimir seunome ou imprimir um pequeno texto, usamos o comando disp.

Assim se a variável temp contiver um valor de temperatura emgraus celsius, podemos imprimir o valor em uma linha de comando e aunidade na linha posterior

disp( temp), disp(‘ graus celsius)

se o valor da temp for 78 então a saída será 78 graus celsius

Comando fprintf :

Ele permite imprimir textos e conteúdos de matrizes. Pode-se tambémespecificar o formato numérico: fprint( formato, matriz).

O modo formato contém o texto e as especificações que são:

% e: indica que a matriz será impressa em notação exponencial

% f: indica que os valores da matriz serão impressos em notaçãodecimal ou fixa., ie, o usuário pode especificar o numero de algarismossignificativos

% g: PODERÁ INDICAR AS DUAS FORMAS ACIMA dependendode qual delas é a mais curta

O modo matriz denota a variável cuja matriz está armazenada

fprint( ‘ a temperatura é % f graus celsius \ n’, temp)

A saída seria:

a temperatura é 78. 0000 Celsius

Se modificarmos o comando para esta forma:

fprint( ‘ a temperatura é \ n % f graus celsius \ n’ , temp)

Então a saida seria

A temperatura é

78.0000 graus celsius

Graficos XY: Mostra-se como gerar um gráfico de dadosarmazenados, em dois vetores. Suponha que se queira plotar osdados da temperatura coletados em uma experiência

Temp s Tempersatura,

0 54. 2

- 58.5

- --

10 90.4

Suponha que os dados relativos ao tempo estejamarmazenados em um vetor x, e que os relativos a temperaturaestejam armazenados em um vetor denominado y, para plotar-seestes pontos usaremos simplesmente: plot onde x e y sãosimplesmente vetores linha ou vetores coluna plot(x,y) e o graficoserá gerado automaticamente. Pode se usar hold on e hold of

0c

Title: adiciona um título ao gráfico

xlabel: inclui uma descrição na direção do eixo x

ylabel: inclui uma descrição na direção dom eixo y

grid: adiciona linha de grade ao gráfico

whitebg: muda a cor do fundo para branco

x= 2:.04:4

y=f101(x)

plot(x,y)

xlabel(‘ x’ ), ylabel(‘ y’ )

figure(2)

fplot(‘ f101’ , [2 4], 10)

xlabel(‘x’), ylabel(‘y’)

Subplot(p,q, r)

x=0.1:.1:5

subplot( 2,3, 1); plot(x,x)

subplot(2,3,2); plot( x, x,.^2)

subplot(2, 3, 3); plot( x, x^3)

subplot(2, 3, 4); plot( x, cos(x))

subplot(2, 3, 5), plot(x, cos(2*x))

subplot(2, 3, 6), plot(x, cos(3*x)

Capitulo 3: Cálculos Fundamentais e Matrizes Especiais:

•Uma matriz magic square de ordem n é uma matriz nXnconstituída de números inteiros de 1 a 2n

Os elementos aij da matriz estão dispostos de tal maneira que osomatório de cada linha é igual ao de cada coluna. A forma geral é:magic( n) de ordem n

•Zeros(n) : gera uma matriz quadrada de ordem n

Zeros( m, n) : gera uma matriz de ordem m X n

•Ones(n) gera uma matriz quadrada de ordem n cujos elementos éunitário

Matrizes Transpostas A’

Produto A=[ 4 -1 3] B=[ -2 5 2]

A . B=( 4) . (-2) + (-1). (5)+ (3). (2)= 8-5+6=-7

A=[2 5 1; 0 3 -1] B=[ -1 0 2; -1 4 -2; 5 2 1]

O primeiro elemento do produto é:

(2) (-1)+(5) (-1)+ (1) (5)= -2

Logo C será C= [ -2 22 -5; -8 10 -7] MATLAB C=A*B

Matriz inersa inv(A) , determinante det(A)

Operações com eEcalares:

As operações aritméticas entre 02 escalares x=a+b pode serinterpretado como sendo o valor em b adicionado ao de a e a somaarmazenada em uma variável x. Logo no MATLAB pensaríamos nocomando count=count +1

É obvio que esta instrução não é um comando algébrico válido,mas o MATLAB explica que 1 é adicionanado ao valor em count , oresultado será armazenado nesta variável. Ou seja o valor em cont seráacrescido por 01.

É importante reconhecer que uma variável pode reconhecer sóum valor por vez. Ex: TIME =0.0 TIME= 5.0 o valor 0 é armazenadona variavel TIME quando a primeira instrução é executada e entãosubstituída pelo valor 5.0 quando a segunda instrução é executada.

Quando se entra com uma expressão sem se especificar umavariável para se armazenar o resultado o mesmo é automaticamentearmazenado em uma variável denominada de ans . Cada vez que umnovo valor é armazenado em ans , o valor anterior é perdido.

Capítulo 4: Operações com Conjuntos

É uma operação elemento por elemento. Se ex: A e B foremvetores linha com 05 elementos: Um modo de gerar um novo vetor Ccomo produtos dos valores correspondentes em A e B é

C(i) =A(i)*B(i) i=1, ...5 .

Estes comandos são essencialmente escalares porque cadacomando multiplica um simples valor por um outro e armazena oproduto em um terceiro valor.

Para indicarmos que executamos uma multiplicação elemento porelemento entre duas matrizes de mesma ordem usamos um ponto antesda operação. Assim os cinco comandos acima , podem ser substituídospelo seguinte C= A. *B ;

Omitindo o ponto estamos efetuando uma operação matricial.

A=[2 5 6] B=[ 2 3 5 ]

C= A. * B= [ 4 15 30]

C=A . \B= [ 1 1. 677 1.2] ( a dividido por b)

C= A ./B=[1 0.6 0.833] ( b dividido por a)A exponenciação também é usada elemento por elemento

C= A . ^2 ; D=A .^B;

C=[ 4 25 36]

D=[ 4 125 7776]

C= 3.0. ^A ( vale (3). ^A)

=[ 9 2 43 729]

A instrução é incorreta C=3.^A ( O MATLAB faz uma multiplicaçãomatricial)

Capitulo 5: Controle de Fluxo

Operadores Lógicos: < menor < = Menor igual >Maior que = = ( no sentido de condição)

Tomada e decisões: Estrutura if-else-if

If expressão

comandos

End

If a< 50

count= count+1

sum=sum +a

end

Suponha que a seja um escalar.

Se a<50 então count é incrementado de 1e a é adicionado à sum , caso contrário ocomando não serás executado.

Caso a não seja um escalar então count éincrementado por 1 e a é adicionado àsum somente se cada elemento em a formenor do que 50.

If expressão 1 if a<50

Grupos de comandos A count=count +1

If expressão 2 sum=sum +a

Grupos de comandos B if b<a

end b=0

Grupos de comandos C end

end end

Grupos e comandos D

Supondo que um taxi esteje passando entre 02 edficios.Considere que a variavel d contenha a distancia do veiculo aoedficio mais próximo.

se o carro estiver a 10 metros do edificio a velocidade usadaé a seguinte: v1= 0.425+0.00175 d e se a distância for menor doque 10 metros use v2= 0.625+0.12d-0.000 25 d então calcula-se avelocidade correta através dos dois comandos:

If d< 10

v1

else

v2

end

Loop for

for variavel=expressão

Grupos de comandos A

end

Os comandos entre as instruções for e end são executadasuma vez para cada coluna da expressão matricial.

A cada iteração, a variável é atribuída para a próxima coluna damatriz, i. e, durante o i-ésimo ciclo do loop temos que

variável = expressão matricial(:, i)

No caso do táxi, se existirem 25 elementos do vetor d

for d=1:25

If d<= 10

v1 =0.425+0.00175 d

else

v2= 0.625+0.12d-0.000 25 d

end

Na próxima solução d é desconhecido, Contudo usaremos o comando sizeo numero de vezes que queremos o loop

For k=1:size(d, 2)

if d(k)<= 10

v1

else

v2

end

end

Se o operador : for usado

for k= inicio:incremento: limite

Note que o comando break pode ser usado para sair deum loop antes que o mesmo seja completo. É frequentementeusado se houver um erro detectado dentro do loop.

Comando while

x=[ 1 2 3 4 5 6 76 8 9];

sum=0;

k=1;

while x(k) >= 0 & size(x, 2)

sum=sum+x(k)

k=k+1

end