Unidade 4 / 11

Cálculo Simbólico: Controlando Inteligência Artificial com SymPy

Ganhos:

  • Capacidade de reconhecer os principais recursos do SymPy (simplificação, fatoração, resolução de equações, derivada, integral, limite) e usá-los para validar resultados de IA
  • Capacidade de obter resultados determinísticos e precisos imprimindo código SymPy para inteligência artificial e executando o próprio código; Entenda que ter a saída do código prevista pela inteligência artificial não é verificação
  • Quando o resultado da inteligência artificial não corresponde à saída do SymPy, é possível usar o SymPy como base para localizar o erro e adicionar manualmente sutilezas, como domínios.

A ferramenta mais prática e poderosa deste módulo está nesta unidade: computação simbólica e sua biblioteca Python SymPy. Cálculo simbólico é fazer matemática exata não com números, mas com símbolos (variáveis ​​como x, y, etc.): calcular uma integral com sua fórmula exata, resolver uma equação com letras, simplificar uma expressão. SymPy é uma biblioteca Python de código aberto, gratuita e determinística que faz isso - o que significa que sempre fornece exatamente o mesmo resultado correto para a mesma entrada. Isso o torna ideal para validar resultados de IA: a IA oferece velocidade e percepção, o SymPy oferece precisão.

A ideia central desta unidade é esta: fazer com que a IA faça as contas, mas faça com que o SymPy valide o resultado. Melhor ainda: faça com que a IA escreva o código SymPy, você executa o código e obtém o resultado final. Assim você elimina o risco de alucinação da IA ​​com o determinismo do SymPy.

Mais uma definição: CAS (Computer Algebra System) é o nome geral dado ao software que realiza matemática simbólica; SymPy é um CAS. Exemplos comerciais são Mathematica e Maple, mas SymPy é gratuito e acessível porque roda em Python.

Principais recursos do SymPy

SymPy faz exatamente o seguinte:

  • Simplificação: simplificar(expressão) reduz uma expressão à sua forma mais simples.
  • Fatoração/expansão: factor() e expand().
  • Resolvendo uma equação: solve(equation, x) fornece as raízes exatas da equação.
  • Derivada: diff(expr, x).
  • Integral: integrar(expr, x) (indefinido) ou integrar(expr, (x, a, b)) (definido).
  • Limite: limite(expressão, x, ponto).
  • Série significa: série (expressão, x, 0, n).
  • Operações matriciais, sistemas de equações, equações diferenciais e muito mais.

Passo a passo: fluxo de trabalho de validação AI + SymPy

1. Faça com que a IA resolva o problema. Obtenha uma solução passo a passo e resultado final.

2. Faça com que a IA escreva o código SymPy para o mesmo problema. Diga "Escreva um código que verifique este resultado com SymPy".

3. Execute o código você mesmo. Não deixe a IA “prever” a saída do código – isso seria uma alucinação. Execute o código em um ambiente Python real.

4. Compare os dois resultados. Se o resultado encontrado manualmente pela IA e pela saída do SymPy forem iguais, a confiança aumenta; se for diferente, a falha está na IA (confie no SymPy).

5. Se houver uma diferença, encontre o erro. Diga à IA: "O SymPy deu isso, seu resultado é diferente; encontre seu erro."

Atenção: Se você pegar o código da IA ​​e perguntar “o que esse código produz?” Perguntar à IA "NÃO é verificação - porque a IA também pode compor a saída do código. Certifique-se de executar o código em um ambiente Python real (instalação local, Jupyter ou um executor Python online). O poder do SymPy é revelado quando ele é executado.

Solução manual de IA etc. SymPy - comparação

recurso

Solução manual de IA

SymPy

velocidade

muito rápido

rápido

precisão

Nenhuma garantia (alucinação)

Determinístico, certo

Explique as etapas

bom

Fraco (orientado para resultados)

Intuição/estratégia

bom

Nenhum

Elegibilidade para verificação

não

Sim

Melhor combinação: IA para explicação e estratégia, SymPy para precisão.

três mini cases

Caso 1 — Incompatibilidade integral. Um aluno perguntou AI ∫ x/(x²+1) dx. YZ deu (1/2)·ln(x²+1) + C. O aluno executou integra(x/(x**2+1), x); SymPy retornou log(x**2 + 1)/2. Eles eram iguais – confiança total. Depois o controle derivativo também foi feito com diff; Está de volta a x/(x²+1). Confirmação tripla, 3 minutos.

Caso 2 — Erro de simplificação. Um professor fez com que a IA simplificasse a expressão (x²−1)/(x−1); YZ disse x+1 (correto, mas deixou de fora a condição x≠1). SymPy simplifica((x**2-1)/(x-1)) também deu x+1, mas o professor adicionou manualmente a restrição de domínio (indefinida em x=1). Lição: Mesmo o SymPy às vezes não enfatiza a sutileza do domínio; humano adiciona contexto matemático.

Caso 3 — Sistema de equações. Um engenheiro fez com que a IA resolvesse um sistema de equações lineares com 3 incógnitas e cometeu um erro em uma variável. SymPy com resolve([equations], [x, y, z]) deu a solução exata; O valor z da IA ​​estava errado. O engenheiro pegou o resultado do SymPy e fez com que a IA encontrasse o bug: um erro de sinal. Foi resolvido em 4 minutos.

Quatro modelos copiáveis

1) Solicitando código de verificação SymPy de YZ:

Você resolveu o seguinte problema: [problema], seu resultado é [resultado]. Agora escreva um código executável SymPy que VERIFIQUE esse resultado. Deixe o código definir os símbolos, calcule o resultado e imprima-o. Não adivinhe a saída do código; Eu vou executá-lo.

2) Solução do zero com SymPy:

Escreva um código Python que resolva o seguinte problema com SymPy: [problema]. Adicione as importações, definições de símbolos e impressões necessárias. Escreva o que o código produz; Apenas me dê o código e eu o executarei. Adicione um breve comentário a cada linha de código.

3) Corrija a IA com saída SymPy:

Você disse [resultado], mas SymPy deu isto: [saída SymPy]. Os dois são diferentes. Como SymPy é determinístico, aceite-o como correto. Descubra EM QUAL passo você errou na sua solução e mostre.

4) Código de verificação cruzada derivada/integral:

Você pegou a seguinte integral: ∫ [f(x)] dx = [F(x)]. Para verificar isso, escreva um código em SymPy que pegue a DERIVATIVA de F(x) e verifique se ela é igual a f(x) (com a lógica de simplificar(diff(F)-f) == 0). Basta fornecer o código.

Alerta fraco / Alerta forte

Fraco: "O que é ∫ sin²(x) dx? Verifique também com SymPy e escreva a saída."
Resultado: A IA se ajusta tanto à resposta quanto à “saída SymPy”; Ambos parecem consistentes, mas nenhum foi confirmado. Confiança falsa.
Forte: "Escreva um código SymPy executável para ∫ sin²(x) dx (importar, simbolizar, integrar, imprimir). Você não escreve a saída - vou executá-lo e ver. Adicione também uma linha que verifica a diferenciação do resultado e o retorna para sin²(x)."
Resultado: você executa o código e vê a saída exata do SymPy; a verificação se torna real.

Erros comuns

  • Fazer com que a IA preveja a saída do código. Isto não é validação; A IA também pode ajustar a saída. Você executa o código.
  • Aceitar o resultado do SymPy sem lê-lo. O formato de saída do SymPy às vezes é incomum (por exemplo, log = logaritmo natural); Saiba interpretar.
  • Esquecendo o domínio. A simplificação SymPy nem sempre enfatiza restrições como x≠1; humano adiciona contexto.
  • Definição de símbolo incorreta. Se x = símbolos('x') for esquecido, o código não funcionará; suposições (positivas, reais) afetam o resultado (símbolos('x', positivo=Verdadeiro)).
  • Falta de importação. É um erro comum esquecer de importar do sympy import * ou funções necessárias.
Dica: Para verificar a exatidão de uma igualdade no SymPy, a expressão simplificar(lado_esquerdo - lado_direito) == 0 é muito útil: duas expressões são idênticas se a diferença simplificar para zero. Esta é a forma mais limpa de verificar uma identidade ou simplificação produzida pela IA.

Suposições do SymPy: mesma expressão, resultado diferente

Uma característica sutil, mas importante, do SymPy é seu sistema de suposições. Ao definir um símbolo, você pode atribuir-lhe propriedades: símbolos('x', positivo=True) indica que x é positivo, real=True indica que é real. Essas suposições podem alterar o resultado. Por exemplo, a expressão √(x²) permanece sqrt(x**2) se não houver suposições sobre x (porque SymPy leva em conta que x pode ser negativo e sabe que deve ser |x|); Mas se x for definido como positivo, o resultado será diretamente x. Isto não é um erro, mas sim um rigor matemático: √(x²) = |x|, não x = x.

A IA frequentemente omite ou assume incorretamente essas suposições ao gerar o código SymPy. Como resultado, o código que a IA produz pode não fazer a simplificação que você “espera” — e isso na verdade significa que o SymPy se comporta com mais precisão. Portanto, quando uma simplificação parece “não funcionar”, primeiro considere as condições matemáticas reais do problema (x é positivo? é real? é diferente de zero?) e adicione essas suposições ao código. Acertar as suposições não apenas garante que o SymPy retorne o resultado correto, mas também força você a pensar sobre o domínio do problema – o que faz parte da precisão matemática.

Cuidado: a falha do SymPy em "simplificar" uma expressão muitas vezes não é uma deficiência, mas uma questão de rigor matemático: uma vez que as suposições necessárias (positividade, realismo) não são fornecidas, o SymPy mantém o resultado mais geral e mais seguro. Se você não perceber a simplificação esperada, primeiro revise as suposições dos símbolos.

Resumindo

SymPy é uma ferramenta determinística ideal para validar a saída matemática da IA. Fluxo de trabalho mais poderoso: estratégia e descrição para IA, precisão para SymPy. Peça à IA o código SymPy, mas certifique-se de executar a saída você mesmo – fazendo a IA adivinhar que a saída do código não é uma validação. Se os resultados não corresponderem, confie no SymPy e deixe a IA encontrar o erro. Verifique as identidades com simplificar(diferença) == 0 e integrais com diff.

Tarefa de aplicativo

Escolha uma integral, uma solução de equação e uma simplificação de expressão (três problemas separados). Para cada um, faça com que a IA escreva a solução manualmente e depois o código SymPy. Execute os códigos em um ambiente Python real (instalação local ou executor online). Compare os resultados do SymPy com os resultados manuais da IA. Tente encontrar pelo menos uma discrepância; Se você encontrar, peça à IA que encontre o erro. Observe o processo.

lista de verificação

  • [] Recebi a solução de IA e o código SymPy para cada problema.
  • [] Executei o código SymPy em um ambiente Python real.
  • [] Comparei o resultado manual do YZ com a saída do SymPy.
  • [] Eu verifiquei a derivada/integral inversa com SymPy.
  • [] Adicionei o domínio e as suposições (positivas/reais) manualmente.
  • [] Na disputa, confiei no SymPy e fiz a IA descobrir seu erro.