programa linguagem matlab® • métodos computacionais...
TRANSCRIPT
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