Condução de calor em um termistor: elementos finitos

Eu fiz um pequeno notebook que usa o método de elementos finitos para simular a condição de calor no corpo de um termistor com cápsula de vidro. Pretendo melhorar isso mais para frente mas isso serve como exemplo.

MF-58

O MF-58 é um termistor NTC bem comum e bem barato (na China…). Eu tenho usado ele como elemento sensor em termo-anemômetros a temperatura constante.

Uma foto do MF-58 pode ser visto abaixo. Foto do MF-58

[]

Git E Github

Todo o desenvolvimento em Julia ocorre usando o programa de controle de versão Git. Um pacote em Julia é um repositória Git em uma plataforma de desenvolvimento como Gihub ou Gitlab. Controle de versão é uma ferramenta interessante para muitas coisas. Aqui vou explicar o mínimo para usar Git e Github. Este tutorial foi escrito para o curso de programação em Python em 2022 então alguns detalhes relevantes para o Github pode ter mudado um pouco mas os princípios são os mesmos. Se você quiser aprender mais sobre o Git, existem vários tutoriais na Internet. Existe um livro “oficial” traduzido para o português https://git-scm.com/book/pt-br/v2. O livro Aprendendo Git de Anna Skoulikari é um excelente livro que procura focar em entender o que o git está fazendo.

O que é o Git

Git é uma ferramente de controle de versões. O que quer dizer isso? Basicamente ele permite que você gerencie os arquivos de um projeto de software. Dê uma lida rápida sobre a motivação no post sobre o repositório do curso.

Quando eu falo gerenciar os arquivos de um projeto de software, eu quero dizer que podemos acessar toda a história de modificação de cada arquivo. Voltar atrás em algo que não gostamos, testar alternativas diferentes e coisas do tipo.

Para começar vamos tentar trabalhar com o repositório do curso mesmo.

Uma coisa importante: aqui estamos falando de projetos de software pois este é um curso de programação e a ferramenta foi criada para este tipo de aplicação. Mas na verdade, o controle de versão pode ser usado em qualquer tipo de arquivo e aplicação. Mas a coisa funciona bem com arquivos texto. Eu uso bastante na elaboração de relatórios em LaTeX.

[]

Raíz quadrada, Babilônia e derivadas

Calcular raízes quadradas é algo que se sabe faz muito tempo. Faz muito tempo mesmo. Os babilônios tinham um algoritmo para calcular a raíz quadrada de um número. Hoje em dia este algoritmo pode ser obtido diretamente usando o método de Newton-Raphson.

Aproximação da raíz quadrada usando o algoritmo da Babilônia

O notebook Pluto mostra a implementação deste algoritmo. Mas este notebook mostra algumas outras coisas. Você pode baixar e rodar este notebook no teu computador. Mas este notebook tem mais algumas coisas interessantes…

[]

Ambientes (environments) e como trabalhar com Julia na prática

Julia é vendida no varejo como uma linguagem onde você pode programar como Python (ou R ou Matlab) e ter desempenho de C++. Isso é verdade mas a história é mais complicada. Se você programar em Julia do jeito que você programa em Python, algumas coisas podem ser mais rápidas mas em geral o desempenho vai ser comparável. Para se conseguir o desempenho de C++, você, provavelmente, terá que fazer as coisas de um jeito diferente.

[]

Solução dos exercícios do capítulo 8 - Strings

Exercício 8-1

Escreva uma função que recebe uma string como argumento e mostra as letras na ordem contrária, uma por linha


function letrasreverso(s)
    i = lastindex(s)
    while i > 0
        println(s[i])
        i = prevind(s, i)
    end
end
julia> letrasreverso("paulo")
o
l
u
a
p

julia> letrasreverso("áéíóú")
ú
ó
í
é
á

Exercício 8-2

Realmente não entendi o que se quer aqui…

Exercício 8-3

str[:] é simplesmente fatiar a string do começo ao fim

julia> s = "Esta é uma string tosca"
"Esta é uma string tosca"

julia> s[1]
'E': ASCII/Unicode U+0045 (category Lu: Letter, uppercase)

julia> s[:]
"Esta é uma string tosca"

julia> s[begin:end]
"Esta é uma string tosca"

Exercício 8-4

function find(word, letter, index)
    
    while index <= sizeof(word)
        if word[index] == letter
            return index
        end
        index = nextind(word, index)
    end
    return -1
    
end

Uso:

[]