Você está na página 1de 26

Aplicacionais para Ciências e Engenharia

TP 9

Universidade de Aveiro

TP9 Aplicacionais para Ciências e Engenharia 1


Sumário

• Programação no Matlab
– Ciclos for
– Ciclos while
– A instrução If
– As funções all e any
• Vectorização de Algoritmos
• Reserva de Espaço para as variáveis
• Exercícios

TP9 Aplicacionais para Ciências e Engenharia 2


Programação no Matlab

• Sintaxe da Instrução for


– A instrução for permite repetir um conjunto de instruções
utilizando uma variável como contador de controlo.
Sintaxe
for n= ini:passo:fim
instrução1;
instrução2;
:
end

TP9 Aplicacionais para Ciências e Engenharia 3


Programação no Matlab

• Exemplo
N
1
Calcular a seguinte soma S  2
n 1 n

Com o ciclo for calculam-se os primeiros N termos


do somatório
S= 0;
for n= 1:N,
S= S + 1/n^2;
end
Acumula o valor da
soma em cada iteração
TP9 Aplicacionais para Ciências e Engenharia 4
Programação no Matlab

• Resultado no Matlab para N=3


>>s=0 % a variável s é inicializada
>>n=1 % inicia a contagem
>>s=0+1/1=1 %calculo da serie para n=1 e
soma com o s anterior
>>n=2 % segundo ciclo
>>s=1+1/2^2 %calculo da serie para n=2 e
soma com o s anterior
>>n=3 % terceiro ciclo
>>s=1+1/2^2 %calculo da serie para n=3 e
soma com o s anterior
>>n=4>Nº de termos Termina o ciclo
TP9 Aplicacionais para Ciências e Engenharia 5
Programação no Matlab

• O ciclo for aceita igualmente vectores com listas de


valores inteiros ou reais

M= [1, 23, -2.2 0.2];


for n= M
k= 2*n
end

TP9 Aplicacionais para Ciências e Engenharia 6


Programação no Matlab

• Ciclo while

– O ciclo for utiliza-se para repetir um conjunto de


instruções um número pré-determinado de vezes.

– O ciclo while utiliza-se quando se pretende repetir um


conjunto de instruções enquanto uma dada condição for
satisfeita.

TP9 Aplicacionais para Ciências e Engenharia 7


Programação no Matlab

• Sintaxe da Instrução while


while condição
Instrução 1
Instrução 2
:
end
Enquanto a condição lógica for verdadeira o conjunto
de instruções é executado. Note-se que se a condição
for falsa no início as instruções nunca são executadas.

TP9 Aplicacionais para Ciências e Engenharia 8


Programação no Matlab

• Exemplo 
1
Calcular a soma dada por S  2
n 1 n

até que 1 seja menor que 10 7


2
n
S=0;n=1;
while 1/n^2 >= 1e-7,
S= S+1/n^2;
n= n+1;
end

TP9 Aplicacionais para Ciências e Engenharia 9


Programação no Matlab

• Instrução if
– A instrução if destina-se a executar instruções de forma
condicional. Executa estas instruções se a
Sintaxe condição for verdadeira
if condição
Instruções
else
Instruções
end

Executa estas instruções se a


condição for falsa
TP9 Aplicacionais para Ciências e Engenharia 10
Programação no Matlab

• Exemplo (If dentro de um ciclo for)


Cálculo da soma dos números primos menores que N.

S= 0,
for n= 1:N,
if isprime(n),
S= S + n;
end
end

TP9 Aplicacionais para Ciências e Engenharia 11


Programação no Matlab

• Cuidado
A condição da instrução if pode devolver um
“array” lógico. A instrução só é executada se todos os
elementos forem verdadeiros.
Exemplo A condição devolve o
x= [1 2]; y= [5 6];
vector
if x<y
[1 1]
disp('x<y');
else
disp('x>y');
end Neste caso é executada esta
TP9 Aplicacionais para Ciências e Engenharia
instrução 12
Programação no Matlab

• A instrução if tem ainda a seguinte variante


if condição1
Instruções
elseif condição2
Instruções
else
Instruções
end
• A instrução elseif pode ocorrer mais do que uma
vez.

TP9 Aplicacionais para Ciências e Engenharia 13


Programação no Matlab

• A instrução any
– Esta instrução devolve o valor verdadeiro se algum dos
elementos do vector for diferente de zero.

Exemplo
any([0 0 0])
ans = 0
any([0 2 0])
ans = 1

TP9 Aplicacionais para Ciências e Engenharia 14


Programação no Matlab

• A instrução all
– Esta instrução devolve o valor verdadeiro se todos os
elementos do vector forem diferentes de zero.

Exemplo
all([0 2 1])
ans = 0
all([-1 2 3])
ans = 1

TP9 Aplicacionais para Ciências e Engenharia 15


Vectorização de Algoritmos

• O que é a Vectorização ?
– O Matlab é uma ferramenta de cálculo concebida para o
cálculo numérico com matrizes e vectores.
– Contudo, acontece com frequência os cálculos não
aparecerem na forma vectorial, sendo necessário fazer essa
transposição.
• A forma não vectorizada de um algoritmo recorre
com frequência aos ciclos for efectuando os
cálculos elemento-a-elemento.

TP9 Aplicacionais para Ciências e Engenharia 16


Vectorização de Algoritmos
• Tempos de execução
– O Matlab é um interpretador e por esse motivo deve-se
tentar tirar partido das suas funções “internas”.
– Existem várias formas de medir os tempos de execução no
Matlab
– As funções tic e toc.
• tic : liga o cronómetro
• toc : desliga o cronómetro e devolve o tempo decorrido em
segundos desde o tic.
– Para medidas mais exactas utilizar a função cputime que
dá com precisão o tempo de CPU utilizado pelo Matlab
desde o seu arranque.

TP9 Aplicacionais para Ciências e Engenharia 17


Vectorização de Algoritmos

• Exemplo de utilização das funções tic e toc.

tic %Liga o cronómetro


S= 0;
for n= 1:10000,
S= S+1/n;
end
toc %Devolve o tempo decorrido

TP9 Aplicacionais para Ciências e Engenharia 18


Vectorização de Algoritmos

• Exemplo de utilização da função cputime

%Lê o tempo de CPU


t= cputime;
S= 0;
for n= 1:10000,
S= S+1/n;
end
%Devolve o tempo decorrido
cputime-t
TP9 Aplicacionais para Ciências e Engenharia 19
Vectorização de Algoritmos
• Produto de matrizes
– Neste exemplo pretende-se calcular o produto de duas matrizes
recorrendo a ciclos for. Em seguida compara-se o tempo de execução
deste código com a forma vectorizada. N
C A B Cij   Ain Bnj
M N N L
n 1
tic
N= 200; M= 30; L= 20;
C= zeros(M,L); A= rand(M,N); B= rand(N,L);
for i= 1:M,
for j= 1:L,
for n= 1:N,
C(i,j)= C(i,j)+A(i,n)*B(n,j);
end
end
end
toc

TP9 Aplicacionais para Ciências e Engenharia 20


Vectorização de Algoritmos

• Produto de matrizes
• Forma vectorizada do produto de duas matrizes
tic
N= 200; M= 30; L= 20;
A= rand(M,N); B= rand(N,L);
C= A*B;
toc

•Tempo gasto pela forma não vectorizada:


2.103 segundos
•Tempo gasto pela forma vectorizada:
0.020 segundos
105 vezes mais rápido
TP9 Aplicacionais para Ciências e Engenharia 21
Reserva de Espaço para as Variáveis
• Quando se atribui valores a elementos de matrizes cujos
índices não existem na variável, o Matlab aumenta
automaticamente a dimensão da matriz.
Exemplo:
>> x= ones(1,3)
x =
1 1 1
>> x(5)= 2
x =
1 1 1 0 2
No entanto, este ajuste automático da dimensão gasta bastante
tempo!
TP9 Aplicacionais para Ciências e Engenharia 22
Reserva de Espaço para as Variáveis

• Para optimizar o código deve-se reservar o espaço


máximo que a variável irá ocupar:
>> x= zeros(1,5);
>> x(1:3)= 1
x =
1 1 1 0 0
>> x(5)= 2
x =
1 1 1 0 2

TP9 Aplicacionais para Ciências e Engenharia 23


Exercícios (1)
• Considere a seguinte função matemática
f (x) = cos(ax)
em que o parâmetro a toma os seguintes valores a=[1,2,3,4].
– a- ) utilize um ciclo "for" para sobrepor os gráficos da função
f(x) para cada valor de a. Para o gráfico utilize um vector x com
100 pontos no intervalo [−π,π ].
– b-) numa outra abordagem utilize um ciclo “for” para apresentar
as mesmas curvas em 4 áreas gráficas [14] dispostas
verticalmente.
– c-) resolva novamente a alínea a) mas de forma vetorizada.
Documente os gráficos convenientemente.

TP9 Aplicacionais para Ciências e Engenharia 24


Exercícios (2)
• Gere um vector x com 100000 linhas e uma coluna,
preenchido com números aleatórios com distribuição
Gaussiana de média 1 e desvio padrão 2.
– Elabore um programa em Matlab que percorra o vector x e conte
todos os elementos maiores que 1. Meça o tempo que este
demora a executar utilizando as instruções "tic" e "toc". Em
seguida, elabore uma solução para o mesmo problema que não
necessite de ciclos "for" e meça o tempo que esta demora a
executar.

TP9 Aplicacionais para Ciências e Engenharia 25


Exercícios (3)

• Gere uma sequência aleatória x com 200 números


inteiros equiprováveis no intervalo [1,100]. Da
sequência x extraia, caso existam, para um vector y
ate 10 múltiplos de 3. Recorra a um ciclo while.

TP9 Aplicacionais para Ciências e Engenharia 26

Você também pode gostar