\( \newcommand{\abcp}[3]{\frc{#1+\sqrt{#2}}{#3}} \newcommand{\chao}[1]{\left\lfloor #1 \right\rfloor } \newcommand{\nPr}[2]{{}^{#1}A_{#2} } \newcommand{\combin}[2]{{}^{#1}C_{#2} } \newcommand{\cmod}[3]{#1 \equiv #2\left(\bmod {}{#3}\right)} \newcommand{\frc}[2]{\displaystyle\frac{#1}{#2}} \newcommand{\mdc}[2]{\left( {#1},{#2}\right)} \newcommand{\mmc}[2]{\left[ {#1},{#2}\right]} \newcommand{\cis}{\mathop{\rm cis}} \newcommand{\ImP}{\mathop{\rm Im}} \newcommand{\ReP}{\mathop{\rm Re}} \newcommand{\sen}{\mathop{\rm sen}} \newcommand{\tg}{\mathop{\rm tg}} \newcommand{\cotg}{\mathop{\rm cotg}} \newcommand{\cosec}{\mathop{\rm cosec}} \newcommand{\cotgh}{\mathop{\rm cotgh}} \newcommand{\cosech}{\mathop{\rm cosech}} \newcommand{\sech}{\mathop{\rm sech}} \newcommand{\sh}{\mathop{\rm sh}} \newcommand{\ch}{\mathop{\rm ch}} \newcommand{\th}{\mathop{\rm th}} \newcommand{\senEL}[1]{\mathop{\rm sen}^{#1}} \newcommand{\tgEL}[1]{\mathop{\rm tg}^{#1}} \newcommand{\cotgEL}[1]{\mathop{\rm cotg}^{#1}} \newcommand{\cosecEL}[1]{\mathop{\rm cosec}^{#1}} \newcommand{\shEL}[1]{\mathop{\rm sh^{#1}}} \newcommand{\chEL}[1]{\mathop{\rm ch^{#1}}} \newcommand{\thEL}[1]{\mathop{\rm th^{#1}}} \newcommand{\cotghEL}[1]{\mathop{\rm cotgh^{#1}}} \newcommand{\cosechEL}[1]{\mathop{\rm cosech^{#1}}} \newcommand{\sechEL}[1]{\mathop{\rm sech^{#1}}} \newcommand{\senq}{\senEL{2}} \newcommand{\tgq}{\tgEL{2}} \newcommand{\cotgq}{\cotgEL{2}} \newcommand{\cosecq}{\cosecEL{2}} \newcommand{\cotghq}{\cotghEL{2}} \newcommand{\cosechq}{\cosechEL{2}} \newcommand{\sechq}{\sechEL{2}} \newcommand{\shq}{\shEL{2}} \newcommand{\chq}{\chEL{2}} \newcommand{\arctg}{\mathop{\rm arctg}} \newcommand{\arcsen}{\mathop{\rm arcsen}} \newcommand{\argsh}{\mathop{\rm argsh}} \newcommand{\argch}{\mathop{\rm argch}} \newcommand{\argth}{\mathop{\rm argth}} \newcommand{\Var}{\mathop{\rm Var}} \newcommand{\vect}[1]{\overrightarrow{#1}} \newcommand{\tr}[1]{ \textnormal{Tr}\left({#1}\right)} \newcommand{\C}{\mathbb{C}} \newcommand{\E}{\mathbb{E}} \newcommand{\H}{\mathbb{H}} \newcommand{\I}{\mathbb{I}} \newcommand{\K}{\mathbb{K}} \newcommand{\N}{\mathbb{N}} \newcommand{\P}{\mathbb{P}} \newcommand{\Q}{\mathbb{Q}} \newcommand{\R}{\mathbb{R}} \newcommand{\Z}{\mathbb{Z}} \newcommand{\til}{\sim} \newcommand{\mdc}{\mathop{\rm m.d.c.}} \newcommand{\mmc}{\mathop{\rm m.m.c.}} \newcommand{\vect}[1]{\overrightarrow{#1}} \newcommand{\dfrc}{\displaystyle\frac} \newcommand{\Mod}[1]{\ (\mathrm{mod}\ #1)} \)

segunda-feira, 26 de janeiro de 2026

Derivada do produto generalizado

 Recentemente recebi uma dúvida que se respondia com

\[\left(fgh\right)'=f'gh+fg'h+fgh'\]

A fórmula está no formulário de derivação que deixei no blog Z0nα Exact4, e até se deduz rapidamente, mesmo mentalmente.

 Sabendo que $(fg)'=f'g+fg'$ então

\begin{eqnarray*} {(fgh)'}&{=}&{(f(gh))'}\\ {}&{=}&{f'(gh)+f(gh)'}\\ {}&{=}&{f'gh+f(g'h+gh')}\\ {}&{=}&{f'gh+fg'h+fgh'} \end{eqnarray*} 

$\blacksquare$ 

 Uma forma de memorizar é lembrar-se "deriva-se uma de cada vez".
Mas a regra é válida para $n$ funções deriváveis, num corpo ($\R$ ou $\C$), com $n\in \N_1$ \[ \left( {f_1 f_2 ...f_n } \right)^\prime = f_1 ^\prime f_2 ...f_n + f_1 f_2 ^\prime ...f_n + \cdots + f_1 f_2 ...f_n ^\prime \] Ou, mais precisamente

\[ \left( {\prod\limits_{k = 1}^n {f_k } } \right)^\prime = \sum\limits_{i = 1}^n {\left( {\prod\limits_{k = 1}^n {D^{\delta _{ik} } f_k } } \right)} \] onde $\delta$ é o delta de Kronecker \[ \delta _{ij} = \left\{ {\begin{array}{c} {1,\text{se }i = j} \\ {0,\text{se }i \neq j} \end{array}} \right. \] e \[ D^\alpha f = \left\{ {\begin{array}{c} {f,\text{se }\alpha = 0} \\ {\frc{{d^\alpha f}}{{dx^\alpha }},\text{se }\alpha \neq 0} \\ \end{array}} \right. \]
A fórmula da derivada do produto generalizado prova-se recorrendo a indução matemática, deixo como exercício para o leitor interessado.
Pode ser usada para provar a conhecida fórmula: \[ \left( {x^n } \right)^\prime = nx^{n - 1} \] Prova: \[ \left( {x^n } \right)^\prime = \left( {\prod\limits_{k = 1}^n x } \right)^\prime = \sum\limits_{i = 1}^n {\left( {\prod\limits_{k = 1}^n {D^{\delta _{ik} } x} } \right)} = \sum\limits_{i = 1}^n {\left( {\prod\limits_{k = 1}^{n - 1} x } \right)} = \sum\limits_{i = 1}^n {x^{n - 1} } = nx^{n - 1} \]

$\blacksquare$ 

e pela regra de derivação da função composta: \[ \left( {f^n } \right)^\prime = nf^{n - 1} f' \] onde $f$ é função escalar,derivável, definida no tal corpo.

segunda-feira, 15 de dezembro de 2025

Spoiler...

 https://www.facebook.com/share/r/1Ev6bvsePo/

Este é um assunto que inincialmente eu tinha descartado, mas, um email do professor Filipe Oliveira convenceu-me a trazê-lo para aqui...
Vou mostrar a minha abordagem ao assunto. Desconheço se já foi abordada desta forma em algum lado... mas sem pressas. 

Vou escrever num bloco de notas e depois copiar para aqui, para evitar chatices.

sábado, 13 de dezembro de 2025

Python, bom senso e calculadoras. (II)

Como pedir a variável A, inteira ao utilizador?
Casio Basic:TI Basic:Python
"A="?->A:Int A->APrompt A:Int A->Aa=int(input("a="))

Python é aquela em que se usam mais caracteres/tokens...

Eu há vários anos que tenho alguns problemas em que as calculadoras (gráficas, programáveis) sejam utilizadas exclusivamente para o ensino.
Eu sempre gostei das Casio, mas...tenho estado a consultar informações sobre a nova Casio fx-CG100 e... :/ se removeram o Basic e deixaram o Python, esta máquina leva um cartão vermelho meu.
 Passo a preferir a Numworks (...) !
Penso que Matemática não deve ser o lugar para se ensinar a programar nem impor uma linguagem de programação, deve-se usar, não impor, porque linguagens informáticas mudam muito por vários motivos, são modas (metafóricas).
As calculadoras, por mim, deviam ter liberdade de escolha na linguagem, várias à escolha, incluindo linguagens fora de moda mas com potencial, e actualizadas
 (Basic sem sequer poder definir funções está muito longe de ser actual ou sequer recomendável, mas tem os seus prós ).
É uma opinião minha, não é lei nem imposição.
Eu consigo converter o meu (longo) arquivo pessoal de 30 anos de Casio Basic para Python... (Vou acabar a fazê-lo para a minha Numworks).
 Posso falar dele...
No caso das Casio, é desmoralizante porque perdem algo que sempre tiveram: Retrocompatibilidade!
Perdendo isso, vão ter de trabalhar para me reconquistar (Até compreendo, não faço parte do público alvo deles )...
Casio Basic tem uma coisa fantástica: usa as próprias funções e variáveis da calculadora.
Tal como o bash ou qualquer shellscript em Linux usa tudo o que o Linux tem disponível. É dificil fazer melhor do que isto.
MicroPython usa... MicroPython.
Há uma certa miopia muito pouco saudável em ver Python à frente.
O problema não é o Python. É esta miopia...
Python tem os seus problemas, tal como todas as linguagens.
 Por agora, não me interessa falar daqueles específicos do Python. O maior problema está em impor Python em calculadoras (de todas as marcas), com teclado em ordem alfabética, por causa do tal "pensamento computacional". (!!!)

 Pensamento computacional não é mau, já devia ser ensinado há 30 anos... mas isso é assunto para outro post.

PS:
  • O vídeo que partilhei tem alguns erros... quem usa a CG20 ou a CG50 consegue confirmar.
  • O professor Manuel Marques (da iniciativa Casio +) está a partilhar alguns vídeos de curta duração, e melhores que muitos cursos "oficiais", com uma breve introdução ao micropython das calculadoras. Ele está a fazer aquilo num emulador de CG50 mas aquilo é 'igual' em calculadoras de outras marcas que usem Python, e até no Python que se usa em computadores. Recomendo. Ele tem tido comentários desactivados, mas como eu tenho alguns canais youtube, compreendo e suporto a decisão
      https://youtube.com/@manuelmarques4761.
     Obviamente ele não vai dar um curso de Python ali. Vejam aquilo como um tutorial de introdução, e não como algo específico para calculadoras Casio.

quarta-feira, 10 de dezembro de 2025

A quantificação da dor

 A quantificação rigorosa da dor é feita através de escalas validadas (numéricas, visuais ou multidimensionais) que permitem medir intensidade, qualidade e impacto da dor na vida do paciente.

Em Portugal, a dor é considerada o 5.º sinal vital, devendo ser avaliada e registada sistematicamente.

A dor como 5º Sinal Vital (DGS - Comissão nacional de controlo da dor)

Sofrendo eu de dores crónicas, o assunto passou a interessar-me. Não do ponto de vista neurológico, académico, mas de um ponto de vista... matemático, rigoroso.

A dor chega a ser incapacitante, ao ponto de, no meu caso, após tomar medicação, eu sincronizar o ponto em que a dor é mais fraca com a hora em que vou dormir, caso contrário, não durmo.

Não existe um “instrumento físico” que meça a dor como um termómetro mede a temperatura. A dor é subjectiva e multidimensional, mas há instrumentos clínicos validados que permitem quantificá-la de forma rigorosa e comparável, combinando escalas numéricas, visuais e questionários multidimensionais
(fonte: o site da dor)

A forma mais rigorosa de medir a dor hoje é através de instrumentos multidimensionais validados como o questionário de McGill ou Brief Pain Inventory (BPI), que combinam intensidade, qualidade e impacto funcional. Embora não sejam “objetivos” como um termómetro, são considerados cientificamente robustos e permitem monitorizar a dor de forma sistemática e comparável.
Não captam toda a complexidade da função “dor”, mas fornecem variáveis fiáveis para análise e acompanhamento clínico.

Há formas de converter estes questionários em dados numéricos para análise estatística.

Como paciente, confio nos profissionais que me acompanham.
Como matemático... não sou fã disto, sei que é o que há, no entanto sempre que a dor abusa, o assunto regressa à minha mente...
Imagens criadas com Microsoft Copilot.

quarta-feira, 5 de novembro de 2025

Python, bom senso e Calculadoras

 


Há vários anos que tenho alguns problemas com a forma como as calculadoras são usadas no ensino. Tornaram-se obrigatórias, são mais baratas do que a maioria dos smartphones que os alunos usam — e, ainda assim, ficam muito atrás deles.

Agora… todas “têm de ter Python”. (???)

Como já referi antes, não gosto da ideia de usar calculadoras programáveis em que o código útil e prático tem de ser escrito num computador e não directamente na máquina.

O programa de geometria do texto anterior foi totalmente escrito na calculadora, em Basic.

Fazer isso em Python é hercúleo e pouco prático.

Não tenho nada contra escrever e correr Python num computador, ou até num smartphone.

Mas não é prático ter de recorrer a um computador para escrever código para uma calculadora.

A verdadeira ideia de uma calculadora é ser usada para resolver problemas on the fly. Isso pode incluir escrever código directamente nela — e nenhuma das calculadoras actuais é prática nesse aspecto (relativamente a Python). Para isso, prefiro um tablet, um smartphone ou um computador.

No meu caso, que tenho dores crónicas, o Basic das Casio e Texas Instruments é muito mais prático que o Python num PC.

O código do programa do texto anterior foi escrito directamente na calculadora, comigo deitado, depois de ter deduzido as fórmulas com papel e lápis!

Eu escrevo Python e Bash remotamente num terminal no meu smartphone, ligado via Wifi a um dos meus Raspberry Pis (são single board computers, por isso para mim têm género masculino).

Mas não nas minhas calculadoras.

O problema não é o Python.

É tentarem impor o Python em calculadoras numa sociedade onde já existem tablets, smartphones… e Raspberry Pis.

Nas calculadoras, o Basic ainda é a linguagem mais prática para escrever directamente na máquina.

Se querem mesmo que o Python se torne mais interessante nelas, repensem as calculadoras.

Não é só impor Python à força por ser a linguagem da moda e esperar que tudo corra bem…


PS: Eu tenho acompanhado vários canais (sobre python em calculadoras) em várias redes sociais.
Até 14/12/2025, nenhum me convenceu do contrário.
Por motivos que não são para aqui chamados, eu partilho os meus programas com poucas pessoas. Alguns (muito poucos) estão online, num site cujo link está ali ao lado->.
Outros, acabam em vídeo... como este:https://www.youtube.com/shorts/aFTrHnEt06Q
ou este: https://youtu.be/W-h4I0Ff4Cc?si=dIpK9txUgsfi_EWv Agora... programar python para calculadoras... programo. Sem qualquer problema. Na calculadora?... Bem, sou muito mais eficiente a escrever Basic na calculadora do que a escrever Python. Até porque são mais de 30 anos de experiência em Basic.

quarta-feira, 29 de outubro de 2025

Problemas de geometria clássica em geometria analítica

 Por estes dias, nos intervalos das minhas noites como enfermeiro, quando as minhas dores vão incomodam muito, ando a revisitar/modificar alguns dos meus programas de calculadora.

Em particular, um cuja última versão era de 2014, na minha Casio fx-9860GII SD em que dados 3 pontos do plano, dá as coordenadas de circuncentro, incentro, ortocentro, baricentro, do triângulo cujos vértices são esses pontos. Ainda dá os raios das circunferências inscrita e circunscrita ao triângulo, e ainda desenha o triângulo e essas circunferências.

Para escrever o código na altura eu deduzi as fórmulas para as coordenadas de incentro e circuncentro.
Penso que devem reencontrar as deduções nos meus blogues anteriores, mas um dia deixo para aqui as fórmulas dessas coisas. Para ortocentro e baricentro, limitei-me a recorrer aos métodos geométricos e escrevê-los algebricamente na calculadora.

Agora juntei algo óbvio: determinar a área e o perímetro desse triângulo, assim como os ângulos internos. E ainda algo novo: dados os pontos $A,B$ e $C$. quais as coordenadas dos centros e raios das circunferências que passam em $A$ e são tangentes a $BC$ em $B$ e em $C$.
 [Para quê? Isso fica no segredo dos deuses]

Tendo em conta o que eu acabei de escrever, é óbvio que eu sei calcular  e desenhar tudo isso com papel e lápis. 

Por isso, vou propor este exercício:

Considere os pontos $A(-1,-2)$; $B(2,3)$ e $C(0,5)$.

Determine:

a) As coordenadas do circuncentro de $\Delta[ABC]$ e o raio da circunferência circunscrita ao triângulo

b) As coordenadas do incentro de $\Delta[ABC]$ e o raio da circunferência inscrita ao triângulo

c) As coordenadas do Baricentro de $\Delta[ABC]$

d)As coordenadas do Ortocentro de $\Delta[ABC]$

e) A área e o perímetro de $\Delta[ABC]$

f)As equações reduzidas das circunferências que passam em $A$ e são tangentes a $BC$ em $B$ e em $C$.

g) Valores aproximados para os angulos internos de $\Delta[ABC]$.

Acredito que depois de terem calculado isto tudo à mão sem eu ter dado as soluções o leitor percebe porque dá jeito ter uma ferramenta tecnológica que o faça... nem que seja para confirmar cálculos. Sem o meu programa de calculadora, hoje em dia poderá recorrer a ferramentas como o geogebra...

Eu vou convertê-lo para TI-84Plus CE.
O código não é Python.
É basic.

 Eventualmente vou escrever uma versão python para a minha numworks, e uma em Mathematica para ter à mão nos meus raspberrypi.

Quanto às soluções...deixo-as um dia.