quinta-feira, 21 de maio de 2020

Areia das praias da Caparica

quinta-feira, 3 de outubro de 2019

quarta-feira, 1 de novembro de 2017

Crescimento da Phoenix Canariensis desde a semente

Primeiro rebenta a raiz que penetra fundo no solo. Depois, a alguns milímetros de distnacia da semente, nasce o caule (a partir da raiz) que se dirige para a superfície. Após cerca de 1 mês na terra a raiz já pode atingir facilmente os 10 cm de comprimento:



Evolução da Phoenix Canariensis (n.º 1)

A 1 de Novembro já se consegue ver o primeiro ramo com a canelura típica das folhas de um exemplar jovem:



domingo, 29 de outubro de 2017

Evolução da Phoenix Canariensis (n.º 1)

A 29 de Outubro de 2017, beneficiando de uns dias de calor e recebendo boa iluminação solar, este exemplar tem crescido a um bom ritmo, como se pode ver na fotografia abaixo:

sábado, 28 de outubro de 2017

PHOENIX CANARIENSIS (experiência de germinação caseira)

As minhas primeiras palmeiras das Canárias ao fim de cerca de mês e meio de processo acelerado de germinação (semente em algodão húmido em ambiente de estufa, seguido de colocação em vaso pequeno com terra adubada). 

Phoenix Canariensis 1:



Phoenix Canariensis 2:



Origem das sementes: exemplar de palmeira das Canárias existente junto ao passadiço de acesso ao comboio que faz o transporte em direcção à praia do Barril, Tavira (ver fotografia abaixo).




domingo, 17 de agosto de 2014

Viagem

Já chegámos?

Não, ainda faltam cerca de 30 minutos para o avião começar a descer.



sexta-feira, 23 de maio de 2014

Resolução de sistemas de equações não singulares



Nota prévia: uma matriz A (n x n) é não-singular se se verificarem as seguintes propriedades:
·        A tem uma inversa, designada por A-1;
·        O determinante de A (det(A)) é diferente de zero (det(A)¹0);
·        Para qualquer z¹ 0, A*z¹0.
2 Carlos
A resolução de sistemas de equações lineares (não singulares) é muito fácil com o Matlab. Vamos lidar com equações simples do tipo Ax=b em que A representa uma matriz dos coeficientes com dimensão m por n, x é o vector coluna das incógnitas e b é o vector correspondente aos termos independentes do sistema de equações.
Imaginemos que temos um sistema de 2 equações (cada uma com duas incógnitas e um termo independente):

7x+8y=100
2x-9y=10

Seguindo a forma clássica de resolução teríamos que separar as equações nos seus componentes (coeficientes, incógnitas e termos independentes) e fazer os cálculos através dos determinantes. Tarefa árdua!
Teríamos então que fazer o seguinte:

x = D1/D, em que D significa determinante;
y = D2/D
Assim, resolvendo os determinantes obtemos:

D = 7*(-9)-8*2=-79 (determinante dos coeficientes);
D1 = 100*(-9)-10*8=-980 (determinante dos termos independentes e do vector das “segundas” incógnitas (y));

D2 = 7*10-2*100=-130 (determinante dos termos independentes e do vector das “primeiras” incógnitas (x));

Calculando as respectivas razões obtemos as soluções para as duas incógnitas:
x = 12.4051
y = 1.6456
Com este procedimento facilmente se verifica a quantidade de cálculos que têm que ser feitos para chegar a uma solução (com o perigo de nos enganarmos nos sinais dos escalares). 

Com o Matlab tudo é mais simples pois só precisamos de decompor o sistema de equações e usar uma única instrução (\ - “backslash”). 

O sistema de equações usado como exemplo é do tipo Ax=b em que A representa a matriz dos coeficientes com dimensão n por n, x é o vector coluna das incógnitas (x e y) e b é o vector correspondente aos termos independentes (100 e 10).
Sendo do tipo Ax=b a instrução a usar no Matlab é: x=A\b. Vamos ver:
A=[7 8; 2 -9];
b=[100; 10];
x=A\b
x =
   12.4051
    1.6456
Como se vê não foi necessária muita ginástica mental, a instrução \ resolveu tudo num instante!
Para verificar se os resultados estão certos basta fazer a operação inversa:
b=A*x
b =
  100.0000
   10.0000

quinta-feira, 22 de maio de 2014

MULTIPLICAÇÃO DE MATRIZES

Esta ferramenta é muito importante quando trabalhamos com sistemas de equações lineares. Vai ser igualmente importante quando estivermos a fazer a análise multivariada de dados matriciais (veremos este tópico um pouco mais adiante com dados reais).

Condição fundamental para executar a multiplicação de duas matrizes:

Para que  [C]=[A]x[B] o número de colunas de [A] tem que ser igual ao número de linhas de [B].

Também podemos multiplicar uma matriz por um escalar.

Vejamos uns exemplos concretos, começando pela multiplicação de uma matriz por um escalar.

Definimos a matriz A:  

A=[1 2 3;4 5 6;7 8 9] (não esquecer os espaços entre os algarismos e os ; que separam cada linha)

A =

     1     2     3
     4     5     6
     7     8     9

A seguir definimos um escalar:

e=7  (por uma questão de comodidade uso letras minúsculas para os escalares)

e =

     7

A seguir faz-se a multiplicação





C=A*e

Obtendo-se o respectivo resultado:

C =

     7    14    21
    28    35    42
    49    56    63


Como se pode ver cada elemento da matriz inicial A foi multiplicado pelo escalar (7). Um curiosidade apenas: como a matriz criada tem uma sucessão de números inteiros de 1 a 9 ao multiplicarmos essa matriz pelo valor 7 obtemos uma nova matriz que corresponde à tabuada dos 7 (faltando apenas o resultado 70).

Vamos definir uma segunda matriz B:

B=[10 11 12;13 14 15;16 17 18]

B =

    10    11    12
    13    14    15
    16    17    18

A e B são matrizes com a mesma dimensão e portanto estão em condições para poderem ser multiplicadas.

 D =

    84    90    96
   201   216   231
   318   342   366

Para quem não se lembra da regra da multiplicação de matrizes: o elemento (1,1) da matriz A multiplica o elemento (1,1) da matriz B; o elemento (1,2) da matriz A multiplica o elemento (2,1) da matriz B; o elemento (1,3) da matriz A multiplica o elemento (3,1) da matriz B. A seguir todos os valores destas multiplicações são somados e inseridos na posição (1,1) da matriz D. O processo repete nesta ordem até estarem todas as posições da matriz D ocupadas.

Para matrizes com dimensões diferentes:

F=[19 20 21;22 23 24;25 26 27]

F =

    19    20    21
    22    23    24
    25    26    27

G=[28 29;30 31;32 33]

G =

    28    29
    30    31
    32    33

O resultado será:

H=F*G

H =

        1804        1864
        2074        2143
        2344        2422

Verifica-se pois que a matriz que resulta desta multiplicação (a H) tem formato igual ao da matriz mais pequena (a G), uma vez que na multiplicação de matrizes a regra geral é "cada elemento de uma linha de uma matriz vai multiplicar todos os elementos de uma coluna de outra matriz".
Será comutativa esta operação?

Aqui não podemos multiplicar G*F porque as dimensões não são compatíveis, mas podemos usar o exemplo anterior em que A e B têm as mesmas dimensões:

I=B*A

I =

   138   171   204
   174   216   258
   210   261   312

e comparando com D

D =

    84    90    96
   201   216   231
   318   342   366

Verificamos que I é diferente de D.

terça-feira, 20 de maio de 2014

OPERAÇÕES ELEMENTARES COM MATRIZES (2)

Produtos de vectores e transposição de matrizes

Existe um conjunto de regras importantes a fixar:

1) um vector linha e um vector coluna com a mesma dimensão podem ser multiplicados entre si;

2) quando multiplicamos um vector linha por um vector coluna obtemos um escalar;

3) quando multiplicamos um vector coluna por um vector linha obtemos uma matriz com as dimensões correspondentes às dos vectores multiplicados;

4) não podemos multiplicar dois vectores colunas entre si o mesmo, sendo verdade, para a multiplicação de dois vectores linha;

5) todavia, a multiplicação entre dois vectores linha ou coluna pode ser feita se usarmos a operação de transposição;

6) a multiplicação entre um vector coluna transposto e outro vector coluna (não transposto) é igual a um escalar. Esta multiplicação goza da propriedade comutativa, isto é, podemos multiplicar o segundo vector coluna transposto pelo primeiro vector coluna não transposto e o resultado será um escalar de valor igual ao anterior. 

Vou colocar aqui um exemplo que ilustre a regar mais complexa (a 6)):

Seja

X=[2;0;1]

X =

     2
     0
     1

e
Y=[3;2;1]

Y =

     3
     2
     1

Se eu fizer X*Y obtenho obviamente uma mensagem de erro:
Error using  *
Inner matrix dimensions must agree.

Mas se usar a operação de transposição já posso multiplicar estes dois vectores:

X'

ans =

     2     0     1

Z=X'*Y

Z =

     7

Y'

ans =

     3     2     1

Z=Y'*X

Z =

     7

Z tem o valor 7 e é igual independentemente da ordem pela qual os vectores são multiplicados, desde que se multiplique o vector coluna transposto pelo vector coluna não transposto.  


OPERAÇÕES ELEMENTARES COM MATRIZES (1)

No Matlab define-se uma matriz (matrix no plural matrices) como sendo um conjunto de dados representado por números reais ou complexos que estão organizados numa grelha bidimensional (linhas por colunas). É usado o termo array como correspondendo a um vector (definido por números), uma matriz ou uma malha de dados com dimensões elevadas. Poderá dizer-se que o termo array é mais genérico, enquanto que o termo matrix é mais específico.

Vamos começar com o exemplo de uma matriz 3X3 (simétrica) obtida do conhecido triângulo de Pascal. Para isso, no Matlab basta fazer:

A=pascal(3)

 A =

     1     1     1
     1     2     3
     1     3     6

Podemos chamar também a nossa conhecida matriz mágica:

B=magic(3)

 B =

     8     1     6
     3     5     7
     4     9     2

Como regras fundamentais não devemos nunca esquecer que:

u=[3; 1; 4], representa um vector coluna, ou seja,

 u =

     3
     1
     4

v=[2 0 -1], representa um vector linha, ou seja,

 v =

     2     0    -1

e que s=7 representa um escalar.

Vamos agora somar duas matrizes (a pascal(3) e a magic(3)):


A=pascal(3);
B=magic(3);
X=A+B

X =

     9     2     7
     4     7    10
     5    12     8

somou as matrizes elemento a elemento.

O mesmo se pode dizer com a subtracção:


Y=X-A

Y =

     8     1     6
     3     5     7
     4     9     2

Para isto é indispensável ter matrizes com a mesma dimensão!

Podemos também somar um escalar com um vector (ou fazer uma subtracção):

s=7

s =

     7

w=v+s  (em que o v foi definido anteriormente v=  2     0    -1 )
  

w =

     9     7     6

Podemos também usar o vector coluna u definido anteriormente:


h=u+s

h =

    10
     8
    11

UMA SEMANA DE CHUVA, por Miguel Esteves Cardoso

Voltou a chover. Vai continuar a chover. Não se via tal escândalo desde o ano passado, por esta altura exacta do mês de Maio.
A única diferença foi que, no ano passado, choveu no Domingo à noite, molhando a Procissão das Velas. Este ano não choveu e a procissão seguiu com todo o esplendor.
Este ano a chuva esperou pela Nossa Senhora de Fátima. O ano passado uma vizinha nossa teve de ralhar com a Banda: "Então não tocam ao menos 'A Miraculosa' para a Nossa Senhora não ir desgostosa para a igreja?"
Mas a Banda da Sociedade Recreativa e Musical de Almoçageme respondeu com nobreza ao apelo e tocou A Miraculosa como se estivesse uma tarde de sol.
Tal como o ano passado, depois de um fim-de-semana de praia, anda toda a gente espantada, ainda de calções e havaianas, a perguntar-me se eu já sei que vem aí uma semana de chuva.
Também costuma ser esta a semana em que alguém não muito longe de mim começa a dizer que este ano não vai haver cerejas por causa desta chuva, não obstante haver sempre cerejas todos os anos.
Na segunda metade de Maio declara-se, no primeiro dia de calor que o calor "chegou". Este "chegou" é dito com tal veemência que dispensa acrescentar o "para sempre".
Quando o calor que chegou se vai embora toda a gente se sente traída. Não é assim que o calor se deveria comportar. Os passarinhos, as borboletas e as rosas reagem com naturalidade, para não dizer indiferença. E continuam. Nós não. Fomos interrompidos e ficamos fulos.