terça-feira, 13 de maio 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
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:
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)')
[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:
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í!
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:
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:
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)
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
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
Subscrever:
Mensagens (Atom)

_surf.jpg)
_surf.jpg)

.jpg)







