sexta-feira, 27 de janeiro de 2017

Comparando o desempenho Python x Scilab

Comparar o desempenho de dois softwares é sempre complicado, pois é difícil definir a tarefa e os termos para uma comparação justa. Aqui realizamos a seguinte tarefa: a solução de um sistema de equações lineares com N variáveis, o que inclui uma inversão de uma matriz NxN. Os dois códigos abaixo são muito similares e empregam basicamente os mesmos recursos. O ambiente de simulação foi o Ubuntu - 'Linux 3.13.0-107-generic.

O gráfico acima mostra que o Scilab conseguiu ser consistemente mais rápido. Não foi usada nenhuma técnica de otimização para ganho de velocidade. O tempo para solucionar o sistema linear é calculado pela média seis de execuções, sendo retirados desse cálculo a execução mais lenta e a mais rápida.


Código Scilab:

clc;

function tinv = tinvm(N)

A = rand(N,N,'n');
y = rand(N,1,'n');

kk=1;
mdt = 0;
mit = %inf;
mxt = 0.0;
while kk<6 br="" do=""> < 6;
    Ai = inv(A);
    C = Ai * y;
    dt = toc();
    mdt = mdt + dt;  
    if dt > mxt then
        mxt = dt; end;
    if mit > dt then
        mit = dt; end;
    kk=kk+1;
end;

mediana = (mdt - mit - mxt)/(kk-3);
tinv = mediana;
endfunction

v = [];
for kl=100:100:1400
    tt = tinvm(kl);
    disp([tt, kl]);
    v = [v, tt];
end;

kl = 100:100:1400;
plot(kl,v,'-o');


Código Python:

import numpy as np
import time as tm
import matplotlib.pyplot as plt

def tinvm(N):
    A = np.matrix(np.random.random((N,N)));
    y = np.matrix(np.random.random((N,1)));

    kk=1;
    mdt = 0;
    mxt = 0;
    mit = 999.99;
    while kk<6:
        t1 = tm.time();
        Ai = A.I;
        C = Ai * y;
        t2 = tm.time();
        dt = t2 - t1;
        mdt = mdt + dt;
        if dt > mxt:
            mxt = dt;
        if mit < dt:
            mit = dt;
        kk=kk+1;
    mediana = (mdt - mit - mxt)/(kk-3);
    return mediana

km = 100;
kt = 0;
tempos = np.zeros((14,1));
while km<1500:
    mmm = tinvm(km);
    tempos[kt] = mmm;
    kt = kt + 1;
    km = km + 100;
    print('Mediana = ',mmm);

print(tempos);
ktt = np.arange(100,1500,100); 
 
#tempos do Scilab:
temps = [0.0013333, 0.008, 0.0246667, 0.0546667, 0.1043333, 0.177, 0.274, 0.424, 0.6116667, 0.817, 1.1216667, 1.4966667, 1.9436667, 2.469];
 
plt.plot(ktt,tempos,'b-o',label = 'Python');
plt.plot(ktt,temps,'g-s',label = 'Scilab');
plt.title('Inversao de matrizes Python x Scilab');
plt.xlabel('Tamanho: N x N');
plt.ylabel('Tempo (s)');
plt.grid();
plt.legend();
plt.show();

quinta-feira, 26 de janeiro de 2017

Divulgando: Assembleia Geral no Campus Fortaleza



Servidoras e servidores do Instituto Federal de Educação, Ciência e Tecnologia do Ceará (IFCE) estarão reunidos em Assembleia Geral que acontece nesta sexta-feira, 27/1, a partir das 16h, no Campus Fortaleza (Portaria do Aluno). O prof. Fernando Castelo Branco e a profª Giane Carvalho são convidados a palestrar durante a atividade. O edital de convocação, que inclui debates sobre a conjuntura nacional e pautas locais da comunidade cearense, já encontra-se publicado pelo Sindicato dos Servidores do IFCE (SINDSIFCE). Clique aqui
Cenário Nacional e convidados
Aprofundado pelo governo de Michel Temer e seus projetos de reforma Trabalhista e da Previdência, o cenário nacional de incertezas ganhou novos elementos após o acidente que vitimou o ministro relator da Operação Lava Jato, Teori Zavaski, e outras quatro pessoas. Para comentar este tema, a Assembleia Geral de servidoras e servidores do IFCE contará com a presença do Prof. de Direito Constitucional e militante de Direitos Humanos, Fernando Castelo Branco.
Outro tema nacional a ser debatido durante a atividade será a suspensão da greve pelo Sindicato Nacional dos Servidores Federais da Educação Básica, Profissional e Tecnológica (SINASEFE). Para este ponto, participará a professora do IF de Santa Catarina (IFSC) e integrante da Direção Nacional, Giane Carvalho. Também, neste ponto, haverá escolha de delegada ou delegado para participar da 148ª Plenária Nacional (PLENA), que acontece nos dias 18 e 19/2, em Brasília-DF.
Pautas locais
Além dos temas nacionais, uma série de pontos diretamente relacionados às servidoras e aos servidores do IFCE estará em pauta durante a Assembleia Geral. Especialmente após a última reunião realizada entre a Pró-reitoria de Gestão de Pessoas (PROGEP) e seções sindicais, no último dia 12/1, temas como Eleição da Comissão Interna de Supervisão (CIS); Remoção Docente; Gratificação por Titulação; Plano de Capacitação; entre outros, necessitam ser debatidos e encaminhados pela categoria.
INFORMAÇÕES
Assembleia Geral de servidoras e servidores do IFCE.
Data: sexta-feira, 27/1, às 16h
Local: Campus Fortaleza (Portaria do Aluno)
Convidados:
Prof. Fernando Castelo Branco
Profª Giane Carvalho
Pauta:
  1. Informes;
  2. Conjuntura Nacional;
  3. 148ª PLENA do SINASEFE (Escolha de delegada ou delegado);
  4. Reunião com a PROGEP (Eleição da CIS; Remoção Docente; Gratificação por Titulação; Plano de Capacitação; e Outros);
  5. Outros.

quarta-feira, 25 de janeiro de 2017

Divulgando: curso Pré-Enem 2017 - chamada de professores voluntários


************************


O campus de Fortaleza convida para participar voluntariamente, como professores, do curso Pré-Enem 2017, projeto de extensão coordenador pelo professor Pedro Hermano, servidores docentes e técnicos-administrativos dos demais campi e da Reitoria do IFCE.

A participação na iniciativa proporciona aos servidores mais uma oportunidade de integração a projetos de extensão, contribuindo para que atinjam a meta de carga horária do IFCE (facilitando a progressão).

O Pré-Enem prepara estudantes da rede pública de ensino para as provas do Exame Nacional do Ensino Médio (Enem), de modo a promover condições igualitárias de ingresso no ensino superior.

A meta do curso de extensão é abranger a totalidade das matérias exigidas no Enem: Português, Redação, Matemática, Física, Química, Biologia, História, Geografia, Sociologia e Filosofia. 

As disciplinas deverão ser lecionadas por servidores  e também contará com o apoio de estudantes das licenciaturas do IFCE. As aulas ocorrerão no turno da noite do campus de Fortaleza, no período de 13 de março até a data das provas do Enem, conforme a disponibilidade de dias dos voluntários.

Os servidores de qualquer um dos campi do IFCE, que queiram e possam ministrar alguma das disciplinas voluntariamente, devem enviar até o dia 06/03, as informações abaixo para os e-mails pedrohermano@ifce.edu.br  ou pedro_hermano@yahoo.com.br:
  • Nome completo e contato (e-mail e telefone);
  • Disciplina a ser ministrada;
  • Dias e horários disponíveis (turno da Noite)..

sexta-feira, 20 de janeiro de 2017

Divulgando: Chamada para seleção de instrutor do BEPID 2017




O Programa Educacional Brasileiro de Desenvolvimento em iOS unidade IFCE Fortaleza (BEPiD IFCE) selecionará 1 (um) instrutor/desenvolvedor iOS para colaborar com as seguintes atividades:
- Elaboração, condução e participação em oficinas de aprendizagem relacionadas com iOS;
- Preparação de material didático;
- Orientação de times de estagiários no desenvolvimento de Apps, Games e Servidores WEB;
- Desenvolvimento de ferramentas para uso do programa.

Além das atividades supracitadas espera-se que o candidato tenha:
- Interesse em métodos de educação não tradicionais;
- Paixão pela área de desenvolvimento de software para dispositivos móveis;
- Bom relacionamento e respeito com os colegas de trabalhos;
- Habilidade em trabalhar em grupo;
- Interesse em vencer desafios; 
- Busca constante na excelência de suas ações.

Requisitos Obrigatórios (Eliminatórios) 
- 1 Ano de experiência em construção de Apps em iOS;
- Inglês Fluente;
- Conhecimento em Desenvolvimento WEB;
- Experiência com a linguagem de programação Swift;

Requisitos Desejáveis (Classificatórios)
- Portfólio de apps/games para dispositivos móveis;
- Experiência em desenvolvimento WEB;
- Experiência como professor / instrutor;
- Experiência com testes de software.

Processo Seletivo
1. Envio de currículo até o dia 31 de janeiro de 2017 (terça-feira) para o link: https://www.dropbox.com/request/CHFH0Qv66IoVvxQ78OAf 

2. A lista de selecionados para as entrevistas será divulgada no dia 02 de fevereiro de 2017 (quinta-feira), os candidatos selecionados serão avisados por e-mail e/ou telefone;  

3. Os candidatos selecionados serão entrevistados no dia 04 de fevereiro de 2017 (sábado) a partir das 8:00 da manhã (sábado), na mesma ocasião os candidatos deverão estar preparados para ministrar uma aula de 30 minutos sobre um tópico da linguagem Swift definido pelo próprio candidato. 

Jornada de Trabalho
40 horas semanais.

Remuneração
A combinar, de acordo com a experiência.

Contato
Prof.: Carlos Hairon - E-mail: carlos.hairon@gmail.com - Assunto: Instrutor BEPiD IFCE 2017.

quarta-feira, 18 de janeiro de 2017

Blogs sobre ciência


Podemos ver aqui - http://blog.feedspot.com/science_blogs/ - uma relação extensa de blogs e sites relacionados à pesquisa e à ciência. Eles vão de física, astronomia, ciência do clima à psicologia e neurociência. Alguns são suportados por grandes universidades, como o OXFORD SCIENCE BLOG. Um dos blogs relacionados, o ScienceSeeker, faz uma busca em de 2.300 blogs e outras fontes de notícias científicas. Vale a pena conferir.

segunda-feira, 16 de janeiro de 2017

Estação Carandiru: entendendo um pouco a "lógica" dos grandes presídios


Li o livro do médico Drauzio Varella já faz um tempo. Achei muito instrutiva em relação ao funcionamento interno de um grande presídio.  Lá, a leis que valem são muito duras, quem quebra as regras não espera muito tempo para receber uma punição muito severa. É uma sociedade com regras próprias. A mistura de assassinos, ladrões comuns e traficantes gera uma universidade do crime da qual é muito difícil sair impune. "Estação Carandiru" é um relato do ponto de vista de quem viveu essa realidade como médico, tendo contato com os presos, carcereiros e policiais que viviam esse cotidiano caótico e perigoso. O incrível não é o número de mortes e rebeliões que eventualmente explodem aqui e ali, mas que esses números não são ainda maiores.

Um resenha/resumo do livro aqui.

sábado, 14 de janeiro de 2017

Mais um pouco de Python: usando o método de Newton

Fonte aqui
O método de Newton para encontrar a raiz de uma função $F(x)$ pode ser expresso por:
$$ x_{k+1} = x_k - \frac{F(x_k)}{dF(x_k)/dx}$$
sendo $x_0$ um "chute" inicial para a raiz da função (ver aqui). Existem algumas condições para que ocorra a convergência (ver aqui). O código Python abaixo calcula a raiz da função da $f(x) = exp(-x) - (1/2)sen(x/2)$:

import numpy as np
import matplotlib.pyplot as plt

# funçao:
def ff(x):
    fx = np.exp(-x) - 0.5*np.sin(x/2);
    return fx

# derivada da função:
def fdv(x):
    h = 1e-6;
    dv = (ff(x+h) - ff(x-h))/(2*h);
    return dv

# Calculando o zero da função usando o
# Médodo de Newton com derivda numérica.
xk = 0.6;
erro = 1;
tol = 1e-12;
N = 0;
vx = [xk, 0, 0, 0, 0, 0, 0];
vf = [ff(xk), 0, 0, 0, 0, 0, 0];
while abs(erro) > tol:
    erro = ff(xk)/fdv(xk);
    xk = xk - erro;
    print(N+1, xk,erro);
    N = N + 1;
    vx[N] = xk;
    vf[N] = ff(xk);
    if (N > 10):
        erro = 0;

# Gráfico:
t = np.arange(0,20,0.01);
y = np.exp(-t) - 0.5*np.sin(t/2);
plt.plot(t,y,vx,vf,'o'); plt.grid();
plt.title('Função $ e^{-t} - (1/2)*sin(t/2) $. Localizando o 1o. zero.')
plt.show();


Resultados:
1 1.10917754392 -0.509177543917
2 1.23185126487 -0.122673720958
3 1.23768979912 -0.00583853424458
4 1.23770234859 -1.25494666513e-05
5 1.23770234864 -5.78292315977e-11
6 1.23770234864 -0.0

Gráfico:

sexta-feira, 13 de janeiro de 2017

Petição - contra a limitação da banda larga fixa


Mostrando mais uma vez que o atual governo é a favor do povo e da sociedade (na verdade, deve ser muito, muito enrolado com o setor privado), vem mais uma vez a proposta de limitação da franquia de dados para a internet fixa. Ver, por exemplo, aqui. Faça o óbvio: proteste e vote contra!

quarta-feira, 11 de janeiro de 2017

Divulgando: vaga para analista de testes e analista de sistemas web - GREat


O Grupo de Redes de Computadores, Engenharia de Software e Sistemas está selecionando profissionais com formação em área da Computação e/ou cursos afins, com características proativas e dinâmicas para ingressar em um de seus projetos de desenvolvimento.


SELEÇÃO – ANALISTA DE TESTES (2 vagas)

Principais Atividades:
  • Criação de artefatos de testes 
  • Criação de testes automatizados 
  • Execução de testes manuais e automatizados
Conhecimentos Técnicos Exigidos:
  • Graduação Completa em Computação ou áreas afins 
  • Conhecimentos sólidos em teste de software

SELEÇÃO – ANALISTA DE SISTEMAS WEB (4 vagas)

Principais Atividades:
  • Análise e Design de Sistemas Web 
  • Implementação de Sistemas Web 
  • Análise de Performance de Sistemas Web
Conhecimentos Técnicos Exigidos:
  • Graduação Completa em Computação ou áreas afins; 
  • Experiência em Linguagens de Programação para WEB 
  • Server Side (Java ou .NET) 
  • Experiência em Linguagens de Programação para WEB 
  • Client Side (HTML, CSS, JS, Jquery) 
  • Inglês Instrumental

Mais detalhes e fonte aqui.

sábado, 7 de janeiro de 2017

WebQualis: Periódicos para Engenharias IV - 2015 disponível


Já está disponível a atualização da classificação dos periódicos da área de Engenharas IV pelo WebQualis. Esse é um "guia" que indica quais periódicos são mais importantes para receber um artigo de pesquisa.

Qualis-Periódicos

O que é?

O Qualis-Periódicos é um sistema usado para classificar a produção científica dos programas de pós-graduação no que se refere aos artigos publicados em periódicos científicos. Tal processo foi concebido para atender as necessidades específicas do sistema de avaliação e é baseado nas informações fornecidas por meio do aplicativo Coleta de Dados. Como resultado, disponibiliza uma lista com a classificação dos veículos utilizados pelos programas de pós-graduação para a divulgação da sua produção.

Fonte aqui.

quinta-feira, 5 de janeiro de 2017

Mais um pouco de Python: criando uma função, usando subplot - Computação científica com Python




Como eu não consegui usar direito a função de convolução do Python ('np.convolve()'), resolvi criar minha própria função de convolução unidimensional. Essa função tem dois vetores como entrada (duas lista de números) e como saída uma outro vetor com a convolução numérica entre as duas sequências de entrada. O gráfico acima mostra uma exemplo. Por curiosidade, calcule a soma dos quatro primeiros termos da Série de Ramanujan (ver postagem anterior) e podemos verificar que ela converge muito rapidamente.

Código:

import numpy as np
import matplotlib.pyplot as plt

# função para cálculo da convolução: dois vetores de entrada,
# um vetor de saida, com dimensão total n1+n2. Os vetores são
# considerados complexos.
def fconv(x1,x2):
    n1 = len(x1);
    n2 = len(x2);
    n = 0; k = 0; s = 0;
    z = complex(0,0)*np.zeros((n1+n2-1,1));
    while n < (n1 + n2 - 1):
        k = 0        
        while (k < n1):
            if ((n - k) > -1) & (n - k < n2):
                s = s + x1[k] * x2[n - k];
            k = k + 1;
        z[n] = s;
        s = 0;
        n = n + 1;
    return z

plt.close('all');

# Teste simples da função de convolução:
N1 = 4;
N2 = 3;
x1 = np.ones((N1,1));
x2 = np.ones((N2,1));
z = fconv(x1,x2);
print(z);

dt = 0.2;
t = np.arange(0,8,dt);
a = np.exp(-t/1.5)*np.sin(t);
u = 1.01*np.ones((2*N2+6*N1+1,1));
u[0] = 0; u[1] = 0; u[2*N2+6*N1] = 0;
u[2*N2+6*N1-1] = 0;
y = dt*np.real(fconv(a,u));

# Gráficos:
f, (ax1, ax2, ax3) = plt.subplots(3)
ax1.plot(a); ax1.set_title('Resposta ao impulso'); ax1.grid();
ax2.plot(u); ax2.set_title('Degrau de entrada'); ax2.grid();
ax3.plot(y); ax3.set_title('Resposta ao degrau'); ax3.grid();
plt.show();

# Cálculo de 1/pi usando a fórmula de Ramanujan
kf = np.ones((4,1)); kf[2] = 2; kf[3] = 6; kf4 = kf**4;
k44 = np.ones((4,1)); k44[1] = 24; 
k44[2] = 8*7*6*5*4*3*2; k44[3] = 12*11*10*9*k44[2];
s0 = k44[0]*(1103)/(kf4[0]);
s1 = k44[1]*(1103 + 26390)/(k44[1]*(396**4));
s2 = k44[2]*(1103 + 26390*2)/(k44[2]*(396**8));
s3 = k44[3]*(1103 + 26390*3)/(k44[3]*(396**12));
p1 = 2*np.sqrt(2)*(s0+ s1 + s2 + s3)/9801;
print(kf4, p1, 1/np.pi);

segunda-feira, 2 de janeiro de 2017

Dica de filme: "O homem que viu o infinito"


Tanto para eruditos quanto para leigos não é a Filosofia, mas a experiência ativa na própria Matemática que unicamente pode responder à questão: o que é a Matemática? 
R. Courant & H. Robbins (1941)

(...) a investigação matemática, por si própria, devido a seu caráter especial, sua certeza e severidade, leva a mente humana a uma proximidade maior com o divino do que pode ser atingido por meio de qualquer outro recurso. A matemática é a ciência do infinito, seu objetivo a compreensão simbólica do infinito com meios humanos, portanto finitos. 
Hermann Weyl, 1885-1955.

Para muitos, a matemática é um tormento sem sentido. Para uns poucos, é a única coisa importante na vida. Quase todos precisam de muito esforço para dominar as técnicas básicas dessa linguagem.  Alguns, muito raros, dominam a matemática sem esforço aparente. Teoremas, fórmulas e sentenças fluem naturalmente, esse é caso de Srinivasa Ramanujan. Aqui, na Wikipédia, uma biografia desse gênio indiano. O filme "O homem que viu o infinito" retrata a vida difícil e materialmente limitada, mas imensamente produtiva que ele teve - link aqui. Esse é um exemplo das fórmulas matemáticas que surgiam na mente do indiano: