domingo, 31 de dezembro de 2017

Feliz 2018!


A todos os meus conhecidos, amigos e alguns não tão amigos assim, meus sinceros votos de feliz ano novo! Que 2018 seja muito melhor que este 2017. Vamos deixar a inércia para trás e realizar os bons projetos que ainda estão engavetados. Lembrar do passado apenas para não cometer os mesmos erros, parafraseando um certo escritor: por que repetir os erros do passado se existem tantos novos erros pela frente?! Vamos exercitar mais a razão e menos a paixão cega (e, quase sempre, burra). Temos que pensar um pouco mais no coletivo e menos no individual. A sociedade e a natureza agradecem. Sobriedade e humildade nas conquistas e resiliência nos momentos mais difíceis. Afinal, a vida segue, mesmo quando não queremos.

quarta-feira, 27 de dezembro de 2017

Solução de sistema de equações não lineares

Solução iterativa de um sistema de equações não lineares.

A solução de sistemas de equações lineares é relativamente fácil e podemos tentar diversas abordagens para encontrar uma solução. Sistemas de equações não lineares são bem mais complicados de resolver. Por exemplo, o sistema $$\begin{array}{rc} x^2 + y^3 - 2 & = 0 \\ -x^2 + y & = 0 \end{array}$$ é exemplo de um sistema não linear. Para este caso específico, como temos apenas duas funções polinomiais, podemos até calcular uma solução analítica, mas, de modo geral, isso não é possível. Então, devemos recorrer a algum método numérico iterativo. Para estes casos, talvez o método mais popular (talvez "popular" não seja o termo mais adequado aqui) seja o método de Newton-Raphson. Nesta postagem iremos fazer uma pequena variação para evitar o cálculo do Jacobiano (matriz de derivadas parciais do sistema) de forma analítica, lembrando do fato: $$ \frac{df}{dx} \cong \frac{f(x+h) - f(x-h)}{2h} $$ Formalizando um pouco. Seja um sistema de equações na forma \[ \begin{array}{cc} f_1(x_1, x_2, \ldots x_n) & = 0 \\ f_2(x_1, x_2, \ldots x_n) & = 0 \\ f_3(x_1, x_2, \ldots x_n) & = 0 \\ \vdots & \vdots \\ f_n(x_1, x_2, \ldots x_n) & = 0 \\ \end{array} \] A sua solução é da forma: \begin{equation} \left[\begin{array}{c} x^{k+1}_1\\ x^{k+1}_2\\ \vdots\\ x^{k+1}_n \end{array}\right] = \left[\begin{array}{c} x^{k}_1\\ x^{k}_2\\ \vdots\\ x^{k}_n \end{array}\right] - \left[\begin{array}{cccc} \frac{\partial f_1}{\partial x^k_1} & \frac{\partial f_1}{\partial x^k_2} & \cdots & \frac{\partial f_1}{\partial x^k_n}\\ \frac{\partial f_2}{\partial x^k_1} & \frac{\partial f_2}{\partial x^k_2} & \cdots & \frac{\partial f_2}{\partial x^k_n}\\ \vdots & \vdots & \vdots & \vdots \\ \frac{\partial f_n}{\partial x^k_1} & \frac{\partial f_n}{\partial x^k_2} & \cdots & \frac{\partial f_n}{\partial x^k_n}\\ \end{array}\right]^{-1} \left[\begin{array}{c} f_1(x^k_1, \ldots, x^k_n) \\ f_2(x^k_1, \ldots, x^k_n) \\ \vdots \\ f_n(x^k_1, \ldots, x^k_n) \\ \end{array}\right] \end{equation} com x$_0$ sendo um chute inicial. Se esse chute inicial for próximo o suficiente, a solução deve convergir. Por exemplo, vamos considerar o sistema de equações não lineares $$ \begin{array}{rr} \cos(\pi x_1/2) + \ln(x_1 x_2 x_3) + x^2_3-10.8&=0\\ x_1 x_2 x_3 + \sqrt{x_1 x_3 + x_2} + \cos(\pi x_3/2) - 8.2 &=0\\ x_1 x_3 + \exp(-x_1 x_2) - \cos(\pi x_2 x_3/6) - 4.2 &=0\\ \end{array} $$ com um chute inicial igual a x$_0$ = [0,5; 1,0; 1,5]$^T$.

O código Scilab abaixo resolve esse sistema:

// função 1: entrada: "x1", "x2" e "x3":
function f1 = fx1(x1,x2,x3)
    f1 = cos(%pi*x1/2) + log(x1*x2*x3) +x3*x3-10.8; //round(5*(cos(%pi*1/2) + log(1*2*3) +3*3))/5; //(cos(%pi*1/2) + log(2*3) +3*3);
endfunction

// função 1: entrada: "x1", "x2" e "x3":
function f2 = fx2(x1,x2,x3)
  f2 = x1*x2*x3 + sqrt(x1*x3+x2) +cos(%pi*x3/2)-8.2; //round(5*(1*2*3 + sqrt(1*3+2) +cos(%pi*3/2)))/5; //(1*2*3 + sqrt(1*3) +cos(%pi*3/2));
endfunction

// função 1: entrada: "x1", "x2" e "x3":
function f3 = fx3(x1,x2,x3)
  f3 = x1*x3 + exp(-x1*x2) -cos(%pi*x2*x3/6)-4.2; //round(5*(1*3 + exp(-1*2) -cos(%pi*2*3/6)))/5; //(1*3 + exp(-1*2) -cos(%pi*2*3/6));
endfunction

clc;

// valores iniciais e passo h:
x1 = 0.5; x2 = 1; x3 = 1.5; h = 0.0001; h2 = 2*h;

// vetor inicial, erro inicial e contador do laço
x = [x1; x2; x3]; er = 1; k=0;
while abs(er)>0.0001
     // Jacobiano:
      J = [(fx1(x1+h,x2,x3)-fx1(x1-h,x2,x3))/h2, (fx1(x1,x2+h,x3)-fx1(x1,x2-h,x3))/h2, (fx1(x1,x2,x3+h)-fx1(x1,x2,x3-h))/h2
            (fx2(x1+h,x2,x3)-fx2(x1-h,x2,x3))/h2, (fx2(x1,x2+h,x3)-fx2(x1,x2-h,x3))/h2, (fx2(x1,x2,x3+h)-fx2(x1,x2,x3-h))/h2
            (fx3(x1+h,x2,x3)-fx3(x1-h,x2,x3))/h2, (fx3(x1,x2+h,x3)-fx3(x1,x2-h,x3))/h2, (fx3(x1,x2,x3+h)-fx3(x1,x2,x3-h))/h2];
      Ji = inv(J);  // inversa do Jacobiano
      Fx = [fx1(x1,x2,x3); fx2(x1,x2,x3); fx3(x1,x2,x3)];
      e = - Ji*Fx;  // erro
      x = x + e;   // atualizando x
      x1 = x(1);
      x2 = x(2);
      x3 = x(3);
      disp(x);  // mostrando o resultado
      er = max(abs(e));
      k=k+1;
      if k>10 then er = 0; end; // teste para sair do laço
end;
disp([k, er, x1, x2, x3]);  // resultado final

A resposta é:
    2.8279168
    3.187974 
    2.5561181

    0.3258810
    2.0366685
    3.7243397

    0.8161449
    1.9556474
    2.9552854

    1.0297346
    1.9228066
    3.0044189

    1.0189457
    1.9414167
    3.0077076

    1.0191206
    1.9412045
    3.0077546

    1.0191206
    1.9412045
    3.0077546

Solução:
    7.    1.163D-08    1.0191206    1.9412045    3.0077546

quinta-feira, 21 de dezembro de 2017

JME: Nova revista científica do IFCE



Divulgando

O Instituto Federal do Ceará agora conta com uma nova revista científica: o Journal of Mechatronics Engineering (JME) é uma publicação eletrônica que tem por objetivo contribuir com a divulgação científica internacional, exclusivamente por meio de artigos na área na língua inglesa. Com primeiro prazo de submissão de artigos/papers abertos até 31 de janeiro de 2018, a edição de estreia está prevista para abril de 2018.
Podem participar (com artigos originais em inglês) profissionais, pesquisadores, professores e estudantes graduados e pós-graduados das áreas das Engenharias Elétrica, Eletrônica, Mecatrônica, Biomédica, Informática na Saúde, Mecânica, da Computação, de Materiais e Ensino de Engenharia.
De acordo com o editor-chefe da publicação e professor do campus de Fortaleza, Auzuir Ripardo de Alexandria, o Journal of Mechatronics Engineering servirá de veículo para publicação de trabalhos realizados em outros países e no Brasil, já nascendo internacional. “Sendo um veículo com foco em publicações na área de Mecatrônica, ajudará a fortalecer a imagem do IFCE como centro de excelência na área específica, que está dentro das linhas de atuação do Polo de Inovação Embrapii do IFCE", explica.
Além disso tudo, Auzuir Ripardo acrescenta que o JME colaborará para o fortalecimento dos programas de pós-graduação do IFCE, especialmente o da Ciência da Computação, o de Engenharia Telecomunicações e o de Energias Renováveis.
Saiba mais sobre a revista no portal da publicação eletrônica ou no Facebook da revista.  
*** Fonte aqui.
---------------------------------------------------------
The Journal of Mechatronics Engineering is a semiannually electronic publication created by the Federal Institute of Ceará - IFCE. The aim of this work is to contribute to the dissemination of knowledge through the publication of scientific papers  in English language. Through this, work the editorial board of the journal invites researchers, professionals, undergraduate and graduate students to share their experiences with the scientific and academic community through our electronic journal.
 Important information: 
  • Submissions until January, 31th for the first issue (Date of publication: April, 2018);
  • General articles on continuous demand can also be submitted.

sexta-feira, 15 de dezembro de 2017

Aproximação de uma função por soma de senos e cossenos

Exemplos de sinais periódicos.

Algumas vezes, desejamos aproximar um sinal periódico (possivelmente ruidoso) por uma soma de senos e cossenos. Sabemos que (quase) qualquer sinal periódico, por exemplo uma onda quadrada, pode ser decomposto em uma soma infinita de senos e cossenos cujas frequências são múltiplas da frequência fundamental do sinal periódico. Essa é a famosa Série de Fourier (ver aqui).

Nesta postagem, usando o Scilab e o comando fft, vamos ver como encontrar as principais componentes de seno e cosseno de um sinal periódico arbitrário. A ideia básica é calcular o espectro do sinal periódico com o comando fft e, em seguida, "montar" um sinal com as componentes de maior amplitude. Essa estratégia, se o sinal tiver vários períodos, acaba por filtrar algum ruído existente na função.

Seja o sinal indicado abaixo, quais suas componentes em termos de seno e cosseno?

Na figura acima, temos 10 períodos de um sinal periódico ruidoso, seu período vale 100 unidades de tempo (= 1 segundo). A análise é feita com o comando fft:

Com essas componentes, chegamos ao seguinte sinal: $$s(t) = 1.009\cos(2\pi t) + 0.495\sin(4\pi t) - 0.3013\cos(6\pi t) + 0.046\sin(8\pi t) + 0.0831\cos(8\pi t) + 0.052\cos(10\pi t)$$.
Para comparação, o sinal "exato" é:
$$s(t) = \cos(2\pi t) + 0.5\sin(4\pi t) - 0.3\cos(6\pi t) + + 0.1\cos(8\pi t + 0.5) + 0.05\cos(10\pi t)$$. Graficamente:
Código Scilab:

close; close;
t=0:0.01:(10-0.01);
p2=2*%pi;
s = cos(p2*t) + 0.5*sin(2*p2*t) - 0.3*cos(3*p2*t) +...
 0.1*cos(4*p2*t + 0.5) + 0.05*cos(5*p2*t);
sp = s;
s = s + 0.1*rand(s,'n');
plot(s); xgrid;

f = 1:max(size(s));
f = f - 1;
f = f/max(f); f = f*100;
sf = fft(s);
sfr = real(sf);
sfc = imag(sf);
// subplot(2,1,2);
figure;
plot(f(1:200), sfr(1:200),'m');
plot(f(1:200), sfc(1:200),'r');
legend('Componentes em fase','Componentes em quadratura');
//pega picos:
tt = 1:max(size(s));
tt=tt-1; tt=tt*0.01;
p = zeros(1,5);
fp = p;
ss = 0*tt;
tam2 = round(max(size(sfr))/2);
sfr = sfr(1:tam2); sfr(1) = 0;
sfc = sfc(1:tam2); sfc(1) = 0;
m = mean(s);
picoc = 0
picos = 0;
kf = 500; //fator de escala - 10 períodos e dt = 0,01;
for k=1:6
    [a,b] = max(abs(sfr));
    fq = round(f(b));
    if abs(sfr(b))>picoc then picoc = abs(sfr(b)); end;
    if abs(sfr(b))>(picoc/30) then
        ss = ss + sfr(b)*cos(fq*p2*tt)/kf;
        disp([fq,sfr(b)/kf,0]);
    end;
    sfr(b) = 0;
    [a,b] = max(abs(sfc));
    fq = round(f(b));
    if abs(sfc(b))>picos then picos = abs(sfc(b)); end;  
    if abs(sfc(b))>(picoc/30) then
        ss = ss - sfc(b)*sin(fq*p2*tt)/kf;
        disp([fq,sfc(b)/kf,1]);
    end;
    sfc(b) = 0;
end
ss = m + ss;
figure; plot(tt,sp,'m',tt,ss,'b',tt,s,'r');
legend('Sinal puro','Sinal calculado','Sinal com ruído');

sábado, 9 de dezembro de 2017

Palestra: Uma Abordagem para Detecção de Pessoas em Imagens de Veículos Aéreos Não-Tripulados


O PPGCC-IFCE promove, na próxima quarta-feira (13), palestra sobre pesquisa em Computação Embarcada e VANT. 

Título: 
Uma Abordagem para Detecção de Pessoas em Imagens de Veículos Aéreos Não-Tripulados

Palestrante:
  • Marco Aurélio Wehrmeister, Dr. (Lattes aqui).
  • Prof da UTFPR e pesquisador no CPGEI (Programa de pós-graduação em Eng Elétrica e Informática Industrial).
  • Sua área de interesse é Sistemas Embarcados e de Tempo-Real, desde a especificação e projeto até a implementação. 
  • Coordenador do Laboratório de Engenharia de Sistemas Computacionais (LESC) e pesquisador do Laboratório Avançado de Sistemas Embarcados e Robótica (LASER) da UTFPR.

O que: Palestra - Uma Abordagem para Detecção de Pessoas em Imagens de Veículos Aéreos Não-Tripulados
Quando: 13.12.17 (quarta-feira). 18:30h
Onde: Auditório Iran Ralpp, IFCE, Campus Fortaleza, av 13 de Maio 2081.

quinta-feira, 7 de dezembro de 2017

Nova dica de leitura: TED Talks - O guia oficial do TED para falar em público



Quem nunca precisou falar em público e ficou ligeiramente nervoso, sem saber direito o que falar ou como falar ou como se mover? Às vezes, nós metemos em situações em que temos que falar para um grande público e não temos a opção de "desistir". Temos que ir em frente e apresentar alguma coisa a público que não conhecemos bem. Como resolver um problema desse tipo? Ou pelo menos como não piorar as coisas com uma apresentação cheia de falhas? Uma dica básica: planejamento.

No livro de Chris Anderson (ANDERSON, Chris. TED Talks: o guia oficial do TED para falar em público. Rio de Janeiro: Intrínseca, 2016. 239 p. ISBN 9788580579352) temos muito mais que isso. São várias histórias e dicas de como impressionar positivamente o seu público e, claro, transmitir aquilo que você quer de forma que cause um bom impacto. O livro, naturalmente, tem uma leitura fácil e prazerosa. Fica aí, em poucas linhas, mais uma dica de leitura.

sábado, 2 de dezembro de 2017

Dica de leitura: Oppenheimer


Sem dúvida, Oppenheimer (Julius Robert Oppenheimer - Nova Iorque, 22 de abril de 1904 - Princeton, 18 de fevereiro de 1967) foi um dos maiores físicos do século XX, mas que não ganhou o prêmio Nobel de Física. Um pequeno livro, formato de bolso, tenta mostrar os aspectos humanos e as contribuições desse personagem complexo em mundo que se tornava cada vez mais bélico e louco. O livro é de autoria de José Maria Filardo Bassalo (Lattes aqui) e Francisco Caruso Neto (Lattes aqui), dois caras que entendem muito de física. Ao londo do texto são apresentadas várias referências acadêmicas sobre os trabalhos científicos citados. No posfácio do livro lemos (Alfredo Marques - Centro Brasileiro de Pesquisas Físicas):
A vida intelectual e efetiva de John Robert Oppenheimer, minuciosamente trabalhada neste livro, evoca a figura do mito histórico, tão imensa foi sua atuação em grandes temas político-científicos que marcaram o turbulento século XX. Com extensa faixa de interesses culturais e científico, seu pensamento parecia acomodar temas contraditórios, a espera de melhores provas para selecioná-los, alterativas extravagantes, beirando mesmo o impossível. Encantavam-no grandes desafios. 
A forte personalidade, exuberante cultura e impulso desassombrado que o levou algumas vezes à brutal agressão, inspiraram também manifestações de poetas, músicos, romancistas, teatrólogos, alunos e colegas de trabalho. Ninguém teve dele uma opinião rigorosamente neutra, balançando entre extremos, do profano ao sagrado, segundo sua atuação. 
Atuou nos desenvolvimentos científicos mais significativos do século XX, dos fundamentos da Mecânica Quântica à Radiação Cósmica e à Cosmologia. Suas contribuições, muitas vezes incompletas, mas suficientes para indicar caminhos, lhe valeram a acusação de displicente. Teve algumas indicações mal sucedidas ao Prêmio Nobel de Física. Alguns dos que perseveraram ao longo das linhas que abriu, mas não concluiu, se contam, entretanto, entre detentores daquela premiação. 
Como Diretor Científico do Laboratório de Los Alamos foi figura do maior destaque no desenvolvimento da bomba atômica. A despeito de seus numerosos relacionamentos com membros do partido comunista americano, seu irmão Frank e sua cunhada, para não falar da mulher com quem casou, a chefia do Projeto Manhattan decidiu ignorá-los, e assim fez enquanto os Estados Unidos e a USSR combatiam do mesmo lado da segunda guerra. Considerou também que o desenvolvimento da bomba incorporava desafios sem precedentes, distribuídos por uma extensa faixa de problemas novos cuja solução demandaria não apenas ideias e conhecimentos inovadores, mas atuação ousada e pronta. Estas condições fizeram de Oppenheimer a escolha ideal. O apelido que nasceu no auditório de uma conferência que fez na Holanda logo se generalizou. 
Dado o clima de afeto e familiaridade emanado do uso de apelidos, entendo que representa o acato dos contemporâneos à importância de sua controvertida figura.

quarta-feira, 29 de novembro de 2017

Divulgando: SBRC 2018 - XXXVI Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos


----------------------------------------------------------------------------------------------------------------------------
CHAMADA DE TRABALHOS


SBRC 2018: XXXVI Simpósio Brasileiro de Redes de Computadores e Sistemas
Distribuídos
Campos dos Jordão  – São Paulo, 06 a 10 de maio de 2018
----------------------------------------------------------------------------------------------------------------------------
O EVENTO

O Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos (SBRC) é um evento anual promovido pela Sociedade Brasileira de Computação (SBC) e pelo Laboratório de Redes de Computadores (LARC). Ao longo de mais de três décadas de realização, o SBRCfirmou-se como o mais importante evento científico nacional em redes de computadores e sistemas distribuídos, e um dos mais concorridos em informática. A importância do SBRC pode ser observada pelo número de submissões de trabalhos e de participantes nas suas diversas edições.

A 36a edição do Simpósio será realizada de 06 a 10 de maio de 2018 no Centro de Convenções de  Campos dos Jordão, São Paulo. A coordenação do evento está sob a responsabilidade conjunta do Departamento de Computação (DComp) da Universidade Federal de São Carlos (UFSCar) e do Instituto de Ciências Matemáticas e de Computação (ICMC) da USP (Universidade de São Paulo). Tradicionalmente, o evento é  composto de sessões técnicas, minicursos, painéis e debates, workshops, salão de ferramentas, palestras e tutoriais proferidos por convidados de renome internacional. Este ano, pela primeira vez, o SBRC contará com um hackaton na área de Redes de Computadores e Sistemas Distribuídos e também com um Concurso de Teses e Dissertações.

-----------------------------------------------------------------------------------
TÓPICOS DE INTERESSE:

Autores são convidados a submeter artigos completos contendo resultados de suas pesquisas científicas ou tecnológicas. Cada artigo será avaliado por pelo menos três especialistas.

A lista não exaustiva de tópicos de interesse inclui:

• Algoritmos distribuídos (projetos e aplicações)
• Aplicações em redes
• Arquitetura e caracterização de redes e serviços
• Cidades inteligentes
• Computação intensiva de dados (Big Data), e análise e mineração de dados
• Computação na nuvem, na névoa e orientada a serviços
• Computação móvel
• Computação ubíqua, pervasiva e sensível ao contexto
• Crowdsourcing
• Detecção e prevenção de anomalias e ataques
• Desempenho, escalabilidade e confiabilidade
• Engenharia e controle de tráfego
• Especificação, validação e verificação de protocolos
• Gerenciamento, operação, projeto e análise de redes
• Gerenciamento de identidades, endereços e localização
• Internet das coisas e sistemas ciberfísicos
• Internet do futuro
• Internet tátil
• Medição e monitoração de redes
• Middleware
• Otimização cross-layer
• Qualidade de serviços (QoS) e de experiência (QoE)
• Redes autonômicas e auto-organizáveis
• Redes centradas na informação
• Redes de centros de dados (Data Center Networking)
• Redes definidas por software
• Redes de rádios cognitivos
• Redes de sensores
• Redes móveis
• Redes ópticas
• Redes e sistemas P2P
• Redes sem fio infraestruturadas
• Redes sociais (online, móveis e pervasivas)
• Redes tolerantes a atrasos/interrupções
• Redes veiculares tripuladas e não tripuladas
• Redes verdes (green networking)
• Roteamento, comutação e endereçamento
• Segurança em redes e sistemas distribuídos
• Serviços web
• Simulação e emulação de redes
• Sistemas distribuídos (autonômicos, multimídia, de tempo real)
• Sistemas operacionais distribuídos
• Smart Grids
• Redes e aplicações de TV Digital e Interativa
• Tolerância a falhas e resiliência
• Virtualização de funções de rede
• Virtualização de redes

-----------------------------------------------------------------------------------
DATAS IMPORTANTES:

Registro de artigos: 05/12/2017
Submissão de artigos: 12/12/2017
Comunicação de resultados: 15/03/2018
Envio da versão final: 03/04/2018

sábado, 25 de novembro de 2017

Resolvendo um sistema de equações lineares iterativamente


Em algumas situações, é mais interessante resolver um sistema de equações lineares Ax = b usando algum método iterativo do que um método direto, especialmente para o caso de sistemas de grande porte e com muitos elementos nulos. O método iterativo mais usual é Gauss-Seidel que pode ser expresso por:
\[ x_i = \frac{b_i - \sum_{j=1,j\neq i}^{N}a_{ij}x_{j}}{a_{ii}} \]
com $i = 1, 2, ..., N$. Em geral, a solução inicial é o vetor nulo: x = 0.

Como é um método iterativo, devemos adotar algum critério de parada. Os critérios de parada mais comuns são: número máximo de iterações e o erro menor que uma certa tolerância. O erro pode ser calculado como a menor diferença entre $x_i^k$ e $x_i^{k-1}$, onde $k$ significa o número da iteração.

Um outro ponto que devemos considerar é que a ordem das equações no sistema é importante. Podemo trocar linhas ou colunas (sem afetar o resultado efetivo do sistema) de tal forma que a diagonal principal se torne mais dominante, isto é, os elementos da diagonal principal devem ser, em termos absolutos, maiores que os coeficientes da mesma linha.

Usaremos o sistema $8 \times 8$ abaixo para ilustrar esses conceitos:

Esse sistema é não singular nem mesmo mal condicionado, mas está longe de ser o tipo de sistema ideal para resolvermos de forma iterativa. O código abaixo calcula a sua solução:

clc; close; // Limpando o console e fechando janelas

M = [2.4 2.2 1.3 1.2 1.2 1.1 0.5 0.3
     -1 3.3 -1 1 1 0.5 0.25 0.2
     -1 -1 2.5 -1.4 -1.7 -1  0.1 0.2
      1  0.5 2.0  2.6 1  0.5 0.2 0.1 
     0.5 0.5 -1.2 -1 2.1 1 -0.2 0.1
     0.5 1.5 -1 1 -1 2 -0.1 -0.2
     0.25 -0.5 1.5 -1.3 1 -1 2.1 -0.5
     -0.3 0.6 0.5 1.5 -1.2 1 -1.3 -2]
b = M*[1;2;3;4;5;6;-0.5;-2]; // vetor 
N = 8; // ordem da matriz

Mi = M;
xk = 0*b;  // solução inicial
bi = b;
for k=1:N 
    Mi(k,k) = 0;  Mi(k,:) = Mi(k,:)/M(k,k);
    bi(k) = bi(k)/M(k,k);
end

nmax = 90; // número máximo de iterações
erro = 1; // erro inicial
nk = 2;  // número da iteração
mvx = zeros(N,nmax); // guardando os valores de xk
mvx(:,1) = xk;
while erro>0.005
    erro = xk;
    for n=1:N
        s = Mi(n,:)*xk;
        xk(n) = bi(n) - s; 
    end    
    mvx(:,nk) = xk;
    erro = max(abs(erro - xk));
    printf('%d & %1.4f & %1.4f & %1.4f & %1.4f & %1.4f %1.4f \n',...
    nk,xk(1),xk(2),xk(3),xk(4),xk(5),erro);
    nk = nk + 1;
    if nk > nmax then 
        erro =0; 
    end; // número máximo de iterações
end
figure;
plot(1:nk-1,mvx(:,1:nk-1),'-o'); xgrid;
xlabel('Iteração k'); ylabel('$ x_i \$');
legend('x1','x2','x3','x4','x5','x6','x7','x8');

O resultado podemos ver no gráfico abaixo:

A convergência só ocorre com quase 90 iterações. Muito demorado!
Percebemos que o total de iterações para ocorrer a convergência é muito longo, pois são necessárias quase 90 iterações. O que podemos fazer para melhorar isso? Trocar linhas/colunas e iniciar com um ponto de partida melhor. Um ponto de partida possivelmente melhor é fazer $x_i = b_i/a_{ii}$, aplicando esse ganho obtemos uma redução de algumas iterações, é um ganho pequeno. Um ganho mais significativo é se trocarmos as incógnitas $x_1$ com $x_2$, isso implica em trocar a 2a. com a 3a. linha e, depois, a segunda coluna com a primeira coluna. Nesse caso, o ganho é muito significativo, o número de iterações cai para apenas 19, mantendo o mesmo critério de erro. Se, adicionalmente, somarmos a 3a com a 4a. coluna, fazemos com a diagonal fique mais dominante, acelerando ainda mais a convergência. O código com essas alterações é:

clc; close; // Limpando o console e fechando janelas

M = [2.4 2.2 1.3 1.2 1.2 1.1 0.5 0.3
     -1 3.3 -1 1 1 0.5 0.25 0.2
     -1 -1 2.5 -1.4 -1.7 -1  0.1 0.2
      1  0.5 2.0  2.6 1  0.5 0.2 0.1 
     0.5 0.5 -1.2 -1 2.1 1 -0.2 0.1
     0.5 1.5 -1 1 -1 2 -0.1 -0.2
     0.25 -0.5 1.5 -1.3 1 -1 2.1 -0.5
     -0.3 0.6 0.5 1.5 -1.2 1 -1.3 -2]
b = M*[1;2;3;4;5;6;-0.5;-2]; // vetor 
N = 8; // ordem da matriz

// troca ...
aux = M(1,:); ba = b(1);
M(1,:) = M(2,:); b(1) = b(2);
M(2,:) = aux; b(2) = ba;
aux = M(:,1); M(:,1) = M(:,2); M(:,2) = aux;

//Soma 3a. linha com 4a. linha, resultado na 3a. linha:
M(3,:) = M(3,:) + M(4,:); b(3) = b(3) + b(4);
 
Mi = M;
xk = 0*b;  // solução inicial
bi = b;
for k=1:N 
  xk(k) = sign((b(k)/M(k,k))); //*sqrt(abs((b(k)/M(k,k))));
end
for k=1:N 
    Mi(k,k) = 0;  Mi(k,:) = Mi(k,:)/M(k,k);
    bi(k) = bi(k)/M(k,k);
end

nmax = 90; // número máximo de iterações
erro = 1; // erro inicial
nk = 2;  // número da iteração
mvx = zeros(N,nmax); // guardando os valores de xk
mvx(:,1) = xk;
while erro>0.005
    erro = xk;
    for n=1:N
        s = Mi(n,:)*xk;
        xk(n) = bi(n) - s; 
    end    
    mvx(:,nk) = xk;
    erro = max(abs(erro - xk));
    printf('%d & %1.4f & %1.4f & %1.4f & %1.4f & %1.4f %1.4f \n',...
    nk,xk(1),xk(2),xk(3),xk(4),xk(5),erro);
    nk = nk + 1;
    if nk > nmax then 
        erro =0; 
    end; // número máximo de iterações
end
figure;
plot(1:nk-1,mvx(:,1:nk-1),'-o'); xgrid;
xlabel('Iteração k'); ylabel('$ x_i \$');
legend('x1','x2','x3','x4','x5','x6','x7','x8');

O resultado é:
O mesmo sistema, mas com alguns ajustes "técnicos" - redução significativa no número de iterações.

segunda-feira, 20 de novembro de 2017

Divulgando: 12º CocoaHeads Fortaleza e PyLadies - Aracati


12º CocoaHeads Fortaleza
Capítulo: CocoaHeads Fortaleza
Data do evento: 23/11/2017
Horário: 13h30min
Local: Uni7 (Antiga Fa7)
Endereço: Av. Alm. Maximiano da Fonseca, 1395 Eng. Luciano Cavalcante - CEP 60811-020 Fortaleza - CE - Brasil.

Mais informações aqui!



O campus de Aracati vai promover mais uma ação para incentivar a participação de meninas na área de tecnologia e computação. Isso vai ser possível graças ao início das atividades, aqui no campus, do PyLadies, uma comunidade mundial que já existe em vários estados brasileiros justamente com o propósito de atrair mais mulheres para a área tecnológica.

O primeiro encontro do grupo acontece no dia 24 de novembro, das 13h30 às 17h, no auditório do novo campus do IFCE, com uma programação aberta ao público. Em Aracati, o Pyladies vai reunir atividades que vinham sendo realizadas em dois projetos que já funcionam no campus: o Divas, voltado para a promoção da presença de mulheres na computação; e o Propython, que atua na divulgação da linguagem de programação Python.

sábado, 18 de novembro de 2017

Xadrez: Cearense Absoluto - Round 3


Está acontecendo agora a 3a. rodada do Campeonato Cearense de Xadrez Absoluto - as partidas estão sendo mostradas ao vivo pelo chess24 link aqui. Por enquanto não tem como apontar um franco favorito, mas  eu apostaria em um desses: Renan Braz Parente, Mário Correia e Wellington Albuquerque Jr. Talvez a maior surpresa tenha sido a derrota de Igor Palácio frente a Jhone Leone na 2a. rodada. Provavelmente, essa é uma das finais mais equilibradas dos últimos anos. O torneio segue até 20 de novembro.

Classificação agora e terceira rodada:

3a. rodada em andamento.

terça-feira, 7 de novembro de 2017

Divulgando: Mestrado em Engenharia de Telecomunicações - IFCE, Campus Fortaleza


No período de 8 a 30 de novembro, o campus de Fortaleza do Instituto Federal do Ceará estará com inscrições abertas para o mestrado em Engenharia de Telecomunicações, formação gratuita destinada a licenciados, bacharéis e tecnólogos nas áreas de engenharias ou ciências exatas.
Ao todo são ofertadas 24 vagas, subdivididas nas seguintes linhas de pesquisa: Micro-ondas e Óptica Integrada (12 vagas), Informação Quântica (2 vagas) e Processamento de Sinais (10 vagas). O processo seletivo constará de prova escrita (etapa eliminatória), análise do curriculum vitae, do histórico escolar de graduação do candidato, do projeto de pesquisa e das cartas de recomendação apresentadas.
As inscrições podem ser realizadas pelo e-mail ppgetcoord2@gmail.com ou na secretaria do PPGET no campus de Fortaleza do IFCE (Avenida Treze de Maio, nº 2081 – Benfica) das 9h às 11h30 e das 14h30 às 17h. A documentação necessária para a inscrição está descrita no edital da seleção, que já se encontra disponível para consulta.
(fonte aqui)

segunda-feira, 6 de novembro de 2017

Divulgando: II Technordeste - O maior evento de tecnologia do Nordeste


O Tech Nordeste é um fórum idealizado pelo Sistema Sebrae nos estados do Ceará, Alagoas, Bahia, Maranhão, Paraíba, Pernambuco, Piauí, Rio Grande do Norte e Sergipe.Entre os seus objetivos, está a disseminação do conhecimento e da inovação e a busca pelo estimulo à cooperação técnico-financeira de organismos governamentais e não-governamentais, nacionais e internacionais, e de investidores privados interessados em empreendimentos rentáveis, como forma de operacionalizar as soluções tecnológicas apresentadas, quer sob a forma de projetos, quer sob a forma de produtos. A segunda edição do Tech Nordeste será realizada nos dias 20 e 21 de novembro em Fortaleza/CE. Durante o evento serão abordados os seguintes eixos-temáticos: Cidades Inteligentes, Tecnologias Sociais, Recursos Hídricos e Energia Limpa.

Link aqui.

sexta-feira, 3 de novembro de 2017

O jogo da confiança


Durante a Primeira Guerra Mundial, eclodiu a paz.

Era o Natal de 1914 na Frente Ocidental. Mesmo sob ordens estritas de não ficarem amiguinhos do outro lado, soldados Britânicos e Alemães deixaram as trincheiras, cruzaram a Terra de Ninguém e se juntaram para enterrar seus mortos, trocar presentes e entreter-se com jogos.

E agora: estamos em 2017, o Ocidente está em paz há decadas, e, caramba, estamos mal na confiança. Pesquisas mostram que, já vão 40 anos, cada vez menos gente diz confiar uns nos outros. Então, aí vai:

Por que, até em tempos de paz, amigos se tornam inimigos? E por que, até em tempos de guerra, inimigos se tornam amigos?

Acho que a teoria dos jogos pode ajudar a explicar a epidemia global de desconfiança – e como combatê-la! Então, para entender isso tudo...





Esta é a motivação para um jogo muito interessante desenvolvido por Nicky Case e traduzido por Roger Araújo e disponível no github aqui.

CONSULTA PÚBLICA - MEDIDA PROVISÓRIA nº 805 de 2017: seja contra!


Medida Provisória n° 805 de 2017
Autoria: Presidência da República
Comissão: Comissão Mista da Medida Provisória nº 805, de 2017

Ementa: posterga ou cancela aumentos remuneratórios para os exercícios subsequentes, altera a Lei nº 8.112, de 11 de dezembro de 1990, que dispõe sobre o regime jurídico dos servidores públicos civis da União, das autarquias e das fundações públicas federais, e a Lei nº 10.887, de 18 de junho de 2004, quanto à alíquota da contribuição social do servidor público e a outras questões.

*** Vote contra mais este atendado aos servidores públicos desse "governo" golpista e sem nenhuma representatividade popular: vote aqui!

quinta-feira, 2 de novembro de 2017

Finitude Humana


Hoje, dia 02 de novembro, é dia de finados (ou Dia dos Fiéis Defuntos) no Brasil, um feriado nacional. Nesta data pensamos com mais ênfase sobre a vida e morte de nossos entes queridos que já não estão mais aqui e sobre o nosso próprio fim nesta Terra. Sabemos que não viveremos para sempre, temos consciência disso muito embora esqueçamos com frequência desse "detalhe".

Justamente por termos essa consciência de um fim, muitos de nós se esforçam para deixar algum tipo de "legado" para nosso filhos, familiares ou a humanidade. Alguns tentam amealhar o maior patrimônio possível, outros procuram deixar o nome na história, alguns escrevem livros para tentarem se eternizar na memória dos leitores. Alguns vão tocando a vida sem essas preocupações.

No final, o mais importante é deixar boas lembranças, fazer nossos trabalhos o mais corretamente possível e valorizar os bons momentos com a família e os amigos, sem esquecer de ajudar a todos aqueles que passam por nossas vidas. Se lembrar daqueles que morreram é importante, ou tem alguma importância, saber deixar um bom legado em vida e influenciar positivamente a vida dos que nos cercam é ainda mais fundamental.

Outras duas postagens com esse tema: aqui e aqui.

segunda-feira, 30 de outubro de 2017

Xadrez: CCXR - CIRCUITO CLUBE DE XADREZ UFC - 4a Etapa


CCXR - CIRCUITO CLUBE DE XADREZ UFC - 4a Etapa 
 4 Nov,13:30h - 18:30h Shopping Benfica,Fortaleza-CE 
 Av. Carapinima, 2200 - Benfica, Fortaleza - CE, 60015-290 



Válido pelo Circuito Cearense de Xadrez Rápido 2017

Organização/Arbitragem: MF Sílvio Cunha

Finalidade: 
-Indicar pelo menos dois finalistas para a Super Final do Campeonato Cearense de Xadrez Rápido
-Incentivar a prática do xadrez pelo Ceará e a confraternização enxadrística.

Forma de disputa:
- Sistema Suíço em 5 rodadas pelo programa Swiss Perfect 98
- Cadência 1: Relógios digitais 15 minutos + 5 segundos de incremento
- Cadência 2: Relógios analógicos 20 minutos
- Desempate : 1.Buchholz 2.Progressivo 3.Median-Buchholz 4.Berger

Inscrições:
- LOTAÇÃO  : 32 participantes
- PROMOÇÃO TODOS PAGAM MEIA : dez Reais.
- ÚNICAMENTE PELO SITE www.chess-ratings.comA organização do evento se reserva ao direito de não receber inscrições no dia do evento, conforme condições de espaço físico.

Programação:
- 13:30 - Confirmação das pré-inscrições e inscrições gratuitas
- Abertura e Congresso Técnico
- 1ª, 2ª, 3ª, 4ª e 5ª Rodadas
- 18h Premiação e Encerramento

Premiação:
- Campeão : Troféu
- Vice    : Medalha
- 3º Lugar: Medalha
- Melhor sub18 : Medalha
- Melhor sub14 : Medalha
- Melhor veterano : Medalha
- Melhor feminino : Medalha
- Melhor aluno UFC: Medalha

Regulamento:
 1. Salvo o contrário neste regulamento, serão seguidas as regras da FIDE.
 2. Haverá tolerância para atraso de até 10 minutos relativos ao horário programado para o início de cada rodada;
 3. Não há restrição aos empates de comum acordo;
 4. É de inteira responsabilidade do jogador a apresentação de peças, tabuleiro e relógios em padrão oficial e em perfeito estado de funcionamento; A organização não se responsabilizará por partidas não jogadas por falta de material e o resultado será 0 x 0.

Equipe Chess Ratings
 www.chess-ratings.com
 suporte@chess-ratings.com