SUCURI caderno uma equação manual

Você escreve matemática em LaTeX. O Sucuri lê como SymPy, e mostra o que entendeu — em matemática de livro, e em código que você pode copiar. Onde a notação deixa dúvida, ele pergunta em vez de adivinhar. É essa a única regra, e tudo aqui sai dela.

Todos os exemplos deste manual são executados pela suíte de testes a cada mudança. O que está escrito aqui como saída é a saída.

1. Escrever e executar

No caderno, escreva na célula e tecle Shift+Enter. Cada célula que vira matemática ganha um nome — eq1, eq2 — e é por ele que você se refere a ela depois.

x^2 + 1 x**2 + 1

2. Quando ele pergunta

Nem toda notação diz o que significa. y'' pode ser a derivada segunda de y, ou um símbolo chamado “y duas linhas” — as duas se escrevem igual, e o Sucuri não escolhe por você:

y'' + y = 0 y'' → derivada de ordem 2 de y | símbolo chamado y''

Você responde clicando na leitura certa — ou, melhor, declarando, que responde de uma vez para o caderno inteiro.

3. Declarar

Declarar não escolhe entre as leituras: dissolve a dúvida. Se y é função de x, então y' só pode ser dy/dx — não há o que perguntar.

y = y(x) y'' + y = 0 Eq(y(x) + Derivative(y(x), (x, 2)), 0)
u = u(t,x)u é função de t e x
e = eulere é o número de Euler, não um símbolo
a = símboloa não é função: a(x+1) é produto
\mu, \nu = índicesíndices tensoriais
g = tensor(0,2)o tipo do Schutz: 0 formas, 2 vetores

Parêntese, como em livro. Escrito com o mesmo nome dos dois lados é tautologia — ninguém escreve u = u(t,x) como equação —, e é essa repetição que separa declaração de matemática: u(t,x) sozinho continua sendo uma expressão.

4. Os verbos

São poucos e fechados de propósito. Se aqui se pudesse escrever Python, a ponte que este programa é deixaria de ser obrigatória — e sobraria um Jupyter com passos a mais.

resolver

Um verbo só; o objeto decide a conta. Equação diferencial vai ao solver de EDO, com a solução conferida por substituição; equação algébrica vai ao solve.

y = y(x) y'' + y = 0 resolver(eq1) Eq(y(x), C1*sin(x) + C2*cos(x))

e a linha conferência: substituída na equação, resto 0. Sem ela a resposta não se apresenta como conclusão.

avaliar

\int_0^1 x^2 avaliar(eq1) 1/3

com a aproximação ≈ 0,333333333333 ao lado — nunca no lugar do valor exato.

Integral indefinida devolve a família, com a constante:

\int \sin x\,dx avaliar(eq1) -cos(x)

mostrado como −cos(x) + C: o resultado é a família inteira, e o código copiável traz uma primitiva dela.

simplificar

\frac{x^2 - 1}{x - 1} simplificar(eq1) x + 1

exportar

O pedido mais honesto que um programa destes recebe: me dá o código que você usou. O que sai roda sozinho, sem o Sucuri.

y = y(x) y'' + y = 0 exportar(eq1) eq1 = Eq(y(x) + Derivative(y(x), (x, 2)), 0)

junto com as declarações de símbolos, a chamada do solver e a linha que confere a solução.

separar e conferir

Para equações a derivadas parciais. O pdsolve do SymPy resolve pouco — a equação da onda ele não resolve —, mas separar variáveis e conferir uma candidata resolvem o problema pela via clássica.

u = u(t,x) c = símbolo \frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} separar(eq1) Eq(Derivative(T(t), (t, 2)), k*T(t))

e a equação em x, cada uma com a sua solução — e cada uma com nome (eq2, eq3), para você continuar: resolver(eq2).

Separar não resolve a equação, e o resultado diz isso: supõe que a solução é um produto. O que sai são os modos; a solução geral é a superposição deles, e a separação não prova que ela seja completa.

conferir faz o caminho inverso de resolver: você propõe, ele testa.

u = u(t,x) c = símbolo F = F(z) G = G(z) \frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} u = F(x - c t) + G(x + c t) conferir(eq1, eq2) candidata verificada

d'Alembert: resto 0. Uma candidata errada sai como candidata NÃO verificada, com o resto que sobrou; e quando o conferidor não consegue testar, ele diz isso em vez de acusar.

5. O que cada resposta quer dizer

estabelecida conferida. Pode ser citada como conclusão.
sem fonte o programa achou alguma coisa e não conseguiu confirmar. Não se apresenta como conclusão.
não aplicável é dado, não conclusão — uma tabela, uma separação, um intermediário.

E as cores: verde decidido ou conferido; âmbar veio de uma regra geral e ninguém olhou aquele caso; vermelho impede de seguir. Nota de alcance — “isto não resolve a equação” — é verde: a conta está certa, o que ela não faz é que precisava ser dito.

6. Quando ele não acha

y = y(x) y'' = 6 y^2 resolver(eq1) sem solução encontrada

com os padrões que o SymPy tentou, e o lembrete que importa: não achar solução não é prova de que não existe. Para essa outra pergunta existe o módulo korvin, que decide não-integrabilidade por teoria de Galois — e que não acompanha a versão online.

7. Tensores

Índice não é expoente, e o parser de LaTeX do SymPy não sabe a diferença: sem declaração, A^\mu viraria A elevado a μ. Quem decide é você:

\mu, \nu = índices g = tensor(0, 2) g_{\mu\nu} A^\mu A^\nu g(-L_0, -L_1)*A(L_0)*A(L_1)

todos os índices contraídos. A valência aparece na tela, porque é a primeira coisa que se confere num tensor.

E a consistência vem junto — este é um erro de relatividade, não de digitação, e a olho ninguém vê:

\mu, \nu = índices A^\mu B_\mu + C^\nu os termos da soma têm índices livres diferentes

8. O caderno

Novoapaga o escrito e o acumulado
Abrir / Salvar arquivo de texto, células separadas por %%; abre em qualquer editor
Rodar tudorefaz tudo a partir do escrito, na ordem
Reiniciar joga fora o acumulado: eq1 deixa de existir, e nenhuma linha do que você escreveu se move

Entre duas células há um + para inserir; no canto de cada uma, um × para apagar, com desfazer na faixa de aviso.

9. O que ele ainda não faz

Dizer isto é parte do trabalho. Nada abaixo falha em silêncio — tudo recusa com o motivo.

O código, as auditorias e a lista completa de limites estão em github.com/RafaelCRdeLima/SUCURI.