quarta-feira, 14 de maio de 2014

Meio de Maio

O Atlântico Norte está mais calmo. As tempestades desapareceram, o anticiclone dos Açores fortaleceu-se e os dias tornaram-se quentes e luminosos às latitudes mediterrânicas:


 




terça-feira, 13 de maio de 2014

O manto negro que nos cobre (Cidade Universitária de Lisboa, Junho de 2014)


Cálculo da média e da mediana utilizando ciclo "for-end" (MATLAB)

A partir de 5 séries de 50 números aleatórios podemos facilmente calcular a média e a mediana usando um ciclo "for-end". Para isso temos que perceber bem como funciona a estrutura simples deste "script" do Matlab. Nesta fase já devemos saber que tipo de instruções devemos colocar no interior/exterior do ciclo e dominar a conversão dos números para texto utilizando a ferramenta "num2str". Aqui vão as linhas de comando com os respectivos comentários:

nsamples=5; % número de amostras ou de iterações
npoints=50;
for k=1:nsamples % vai fazer os vários ciclos em número igual ao das amostras
    iterationString=['iteration #',int2str(k)]; % coloca o número da iteração na expressão "iteration #"
    disp(iterationString) % mostra cada iteração por ordem numérica  
    currentData=rand(npoints,1); % vai gerar uma matriz de 50 linhas e i coluna de números aleatórios
    sampleMean(k)=mean(currentData); % calcula a média de cada amostra que contém 50 números aleatórios
    sampleMedian(k)=median(currentData); % calcula a mediana de cada amostra que contém 50 números aleatórios
    MeanText=['Mean is equal to ',num2str(sampleMean(k))]; % converte o valor numérico da média para texto
    disp(MeanText)% mostra o valor da média
    MedianText=['Median is equal to ',num2str(sampleMedian(k))]; % converte o valor numérico da mediana para texto
    disp(MedianText) % mostra o valor da mediana
   
end % fim do ciclo
  
overallMean=mean(sampleMean);% calcula a média global das 5 amostras de 50 números aleatórios
overallMeanText=['overallMean is equal to ',num2str(mean(sampleMean))];
disp(overallMeanText)

Eis os resultados:

iteration #1
Mean is equal to 0.52468
Median is equal to 0.58347
iteration #2
Mean is equal to 0.46597
Median is equal to 0.45275
iteration #3
Mean is equal to 0.45805
Median is equal to 0.41388
iteration #4
Mean is equal to 0.54595
Median is equal to 0.56493
iteration #5
Mean is equal to 0.43422
Median is equal to 0.42936
overallMean is equal to 0.48577

E que tal representar as funções seno e co-seno juntas?

O desafio é fazer esta representação num gráfico tridimensional usando o comando "meshgrid". Para fazer isto teremos que usar o editor do Matlab, escrevendo um pequeno programa:

x=0:pi/1000:4*pi
[x,y]=meshgrid(-4:0.1:4)
z=sin(x)
surf(x,y,z)
hold on    - o uso do "hold on" é fundamental pois suspende a operação anterior para se poder     adicionar a nova função que neste caso será o co-seno.
z2=cos(x)
surf(x,y,z2)
xlabel('x')
ylabel('y')
zlabel('sin(x) cos(x)') o eixo z representa a variação conjunta das duas funções trignométricas

Eis o resultado:


segunda-feira, 12 de maio de 2014

E o co-seno?

x=0:pi/1000:2*pi
[x,y]=meshgrid(-4:0.1:4)
z=cos(x)
surf(x,y,z)
xlabel('x')
ylabel('y')
zlabel('cos(x)')


Matlab: como representar uma função trignométrica em modo tridimensional?

É um processo muito simples.
x=0:pi/1000:2*pi  (definição do intervalo de variação)
[x,y]=meshgrid(-4:0.1:4) (definição da malha bidimensional)
z=sin(x) (definição da função seno a ser projectada no eixo vertical)
surf(x,y,z) (instrução para fazer o gráfico tridimensional)
xlabel('x') (legenda do eixo x)
ylabel('y') (legenda do eixo y)
zlabel('sin(x)') (legenda do eixo z)

surf(x,y,z) (instrução para fazer o gráfico tridimensional)

Eis o resultado:


terça-feira, 6 de maio de 2014

O grande anticiclone subtropical dos Açores

Forte e ainda sem desenvolvimento da crista no sobre o Golfo da Biscaia. Sem a "conquista" deste golfo jamais o ar seco e quente chegará à costa ocidental da Ibéria...

MAIO DE 2014

Eis o mês mais desejado do ano!
O mês das flores, dos dias grandes, das papoilas, das nuvens brancas, dos ventos marítimos, dos ares secos do suão mediterrânico e africano... o solstício está aí!



  

terça-feira, 22 de abril de 2014

MATLAB REVISITED - O meu primeiro programa

Vou calcular a média de uma sucessão de 50 números aleatórios de uma distribuição uniforme (que varia entre 0 e 1).
 No Matlab é muito simples:
 % Gerar valores aleatórios de uma distribuição uniforme calculando a média desses dados
n = 50; % número de dados (50)
r = rand(n,1); % rand é a expressão random (aleatório) e são porjectados 50 valores numa coluna plot(r) % graficar os valores aleatórios gerados pela função rand
% desenho da linha da média
 m = mean(r); % cálculo da média
 hold on % ordem para reter o gráfico que está em uso
(plot(r)) plot([0,n],[m,m]) % novo gráfico que vai mostrar a linha da média de (O,m) até (n,m)
hold off % volta ao estado anterior e o Matlab vai apagar o antigo gráfico e constrói um novo com os eixos rearranjados
title('Mean of Random Uniform Data') % título do gráfico
Save plotrand % instrução para gravar o programa que poderá ser carregado usando o comando "load"

Eis o resultado:

MATLAB REVISITED (equação do 2.º grau num gráfico tridimensional X,Y,Z)

Como representar Z em função de (X,Y) em que Z resulta da multiplicação de X pelo quadrado de Y (uma equação do 2.ºgrau). No Matlab é muito simples: [X,Y]=meshgrid(-2:0.2:2); (a função mehsgrid faz a malha do gráfico bidimensional X-Y)
Z=X.*Y.^2; (corresponde à multiplicação de X pelo quadrado de Y estendida a todos os valores de X e de Y definidos na meshgrid)
surf (X,Y,Z) (projecta o gráfico tridimensional)
Vejamos o gráfico:

MATLAB_REVISITED

Matalab significa "MATrix LABoratory" Se eu quiser representar o comportamento de duas funções matemáticas muito usadas pelos sedimentólogos (na definição das escalas utilizadas para determinar a dimensão das partículas sedimentares) tenho que fazer o seguinte: A) Mostrar a curva correspondente à conversão dos valores expressos na escala phi (eixo das abcissas) para mm (eixo das ordenadas) Definir o intervalo da variável x (abcissa): x=-1:0.1:4 (intervalo da escala phi no domínio dimensional da areia) y=2.^(-x) (o operador .^ define a aplicação da função exponencial para todo o intervalo de x) plot(x,y) (instrução para fazer o gráfico):
B) Mostrar a operação inversa (de mm para phi) x=0.0001:0.1:8 (o limite inferir tem que ser superior a 0 para não dar uma indeterminação no cálculo do logaritmo) y2=-log2(x) plot(x,y2)

domingo, 3 de novembro de 2013

Os fragmentos que ficam


IMG_3613, originally uploaded by Pedro Veiga.

Ficam os fragmentos, bem desgastados e boleados pela energia do mar. Ao longo do tempo o efeito do desgaste vai-se acumulando até ao desparecimento total do último vestígio da parte dura da concha. Será que é possível decifrar este código?

domingo, 29 de setembro de 2013

Degrau de rebentação (Praia do Norte, Nazaré)


IMG_1090, originally uploaded by Pedro Veiga.

Surf na prainha da Nazaré


IMG_2984, originally uploaded by Pedro Veiga.

Jardim Infantil Pestalozzi


IMG_2463, originally uploaded by Pedro Veiga.