Dalle equazioni agli integrali,
fino al tuo impianto.

Scrivi le equazioni, calcola un integrale o segui l’evoluzione di una variabile nel tempo. Per i modelli di impianto, descrivi i componenti e collegali con linee: MATH risolve il sistema risultante.

Cosa fa

MATH risolve problemi del tipo «trova le pressioni, le portate e le temperature per cui tutti i bilanci dell'impianto sono soddisfatti». Si usa in tre modi, dal più semplice al più completo:

Calcolatrice di equazioni

Scrivi sistemi di equazioni, integrali definiti o equazioni differenziali con condizioni iniziali. Scegli il tempo finale nel testo e ottieni lo stato calcolato, con grafici (anche nel tempo e nel piano delle fasi). Un menu di esempi, una guida e un assistente che scrive programmi, spiega gli errori e cerca tutte le soluzioni.

Componenti e processi

Definisci un componente (terminali, variabili, equazioni, tabelle), lo disponi su un foglio, lo colleghi ad altri con linee, premi Risolvi.

Libreria di tabelle

Curve y(x) e matrici y(p, x) (proprietà dei fluidi, curve di macchine) usate nelle equazioni come funzioni qualsiasi.

Un esempio

Uno scambiatore in controcorrente: bilanci di massa e di energia, cp letto da una tabella in funzione della temperatura, UA letto da una matrice in funzione delle due portate, ΔT medio logaritmico. Il componente è questo (estratto):

# bilanci di energia (kW)
Q = hin.m * cph * (hin.T - hout.T)
Q = cout.m * cpc * (cout.T - cin.T)
# UA dalla matrice ua(portata fredda, portata calda)
dT1 = hin.T - cout.T
dT2 = hout.T - cin.T
Q = ua(cin.m, hin.m) * (dT1 - dT2) / log(dT1 / dT2)

Non c'è nulla di «incorporato» nello scambiatore: è un testo che puoi leggere, cambiare e ricalcolare. Lo stesso vale per una rete gas, in cui ogni tratto di tubazione è una equazione di perdita di carico e ogni nodo un bilancio di portate.

Le equazioni non sono Python: esponenti negativi tra parentesi (2^(-1)), operatori logici and or not (anche maiuscoli); numeri anche con esponente (1e-3) e confronti < > <= >= == != che valgono 1 o 0; funzioni sin cos tan asin acos atan atan2 sinh cosh tanh exp sqrt log log10 pow abs. I simboli tipografici incollati (−, ′, ×...) si convertono da soli.

Prova nella calcolatrice

Accedi o avvia la demo e apri la calcolatrice: il menu Esempi… carica modelli completi con descrizione e risultato atteso (razzo verticale, integrale gaussiano, equazioni con più soluzioni, predatore-preda, perdite in un tubo, pendolo, serbatoio, pompa con curva da tabella, circuito RC). Oppure incolla un esempio alla volta nel campo dell’equazione; la guida spiega la sintassi, con esempi che si caricano con un clic.

Un integrale definito

L’integrale di x da 0 a 20:

I = integral(x, x, 0, 20)

Risultato: I = 200. Gli argomenti sono funzione, variabile, estremo iniziale ed estremo finale.

Una derivata, un valore iniziale

Risolvi dy/dt = -y con y(0)=1 fino a t=20:

<iniz>
y = 1
campo_finale = 20
</iniz>
y' = -y

y' (o der(y)) indica la derivata rispetto al tempo. Ottieni un’approssimazione di y(20)=exp(-20); per il secondo ordine servono due stati.

Il tempo finale si imposta nel form: cambia il numero nella riga campo_finale, dentro <iniz>. Deve essere maggiore di zero; se omesso, il calcolo termina a 10. Il risultato riporta l’istante raggiunto e i valori finali.

Quando la formula dipende dal tempo

<iniz>
y = 1
campo_finale = 80
</iniz>
y' = -y*t

Qui la soluzione esatta è y(t)=exp(-t^2/2). A 80 vale exp(-3200), un numero positivo troppo piccolo per la precisione numerica disponibile.

Come leggere un risultato vicino a zero. Un valore come 4.47821e-10 (circa 0.000000000448) è un piccolo residuo numerico, non il valore esatto di exp(-3200). La tolleranza assoluta predefinita è 0.000000001 e controlla l’errore locale, senza garantire quello complessivo. I risultati possono usare la notazione scientifica, ammessa anche nel testo delle equazioni (1e-3).

Questi calcoli sono numerici: integral restituisce un integrale definito e y' (o der) descrive un’equazione differenziale con condizioni iniziali. La calcolatrice mostra lo stato finale e il pulsante Grafico disegna le variabili nel tempo, ciascuna con la propria scala, o il piano delle fasi; le opzioni di precisione sono disponibili via API/MCP.

Apri la calcolatrice

Come è strutturato

Browser pagine statiche motore C++ in WebAssembly (calcolo locale) nginx file statici proxy su /api/ Backend FastAPI autenticazione, quote route /calculate /progetto interfaccia MCP Pool di processi un motore C++ per processo timeout e contropressione PostgreSQL componenti, processi, tabelle, utenti, quote

Un solo motore, due posti dove gira

Il motore (CMat, C++) è compilato due volte dallo stesso sorgente: in WebAssembly, per calcolare nel browser, e come modulo Python nel backend. Le due versioni condividono sintassi e algoritmi numerici.

Un processo per calcolo

Il motore tiene stato globale (tabella delle variabili, generatore casuale): due calcoli nello stesso processo si sovrascriverebbero. Per questo il backend prepara un gruppo di processi, ognuno con la propria copia del motore. Si ottiene parallelismo reale, un timeout affidabile (un calcolo che non termina viene ucciso e il suo processo ricreato, senza toccare gli altri) e contropressione: oltre la capacità la risposta è «riprova tra N secondi», non una coda infinita.

Dati e accessi

Componenti, processi e tabelle sono salvati per tenant (organizzazione): ogni richiesta è filtrata dal tenant della sessione, mai da un valore inviato dal client. Accesso con email e password, registrazione su invito; sessione in cookie HttpOnly. Chat, assistente e calcoli hanno quote giornaliere o al minuto per tenant.

L'assistente della calcolatrice

Una chat che sa la sintassi del motore e lo usa come strumento: ogni numero che riporta viene dal motore, mai dal modello. Scrive un programma da una descrizione, spiega l'errore di un programma e cerca tutte le soluzioni di un sistema provando molte stime iniziali, dicendo da quali stime si arriva a ciascuna. Non scrive mai nel campo da sola: propone un programma già eseguito con successo e scegli tu se caricarlo o eseguirlo. Non garantisce di aver trovato tutte le soluzioni e può sbagliare nel modello fisico del tuo problema. Usa un servizio di intelligenza artificiale (IONOS): domande, programma nel campo e ultimo risultato gli vengono inviati, quindi non inserire dati personali o riservati (privacy). Ha un limite di messaggi al giorno, più basso nella demo.

Per agenti e script

Gli stessi calcoli sono esposti come strumenti MCP (risolvi_equazioni, risolvi_differenziali, risolvi_progetto, grafico) per assistenti AI e automazioni; l'accesso richiede un token riservato.

Gli algoritmi

Per i sistemi algebrici e i progetti di impianto, il motore cerca una soluzione con questi passaggi. Integrali ed equazioni differenziali usano i metodi numerici descritti a seguire.

1. Analisi della struttura

Le equazioni del progetto (quelle di tutti i componenti, più le variabili delle linee) vengono unite in un unico sistema F(x) = 0 con tante equazioni quante incognite; se il numero non torna il calcolo si ferma con un messaggio. Il motore scopre quali incognite compaiono in quali equazioni perturbando le variabili a caso e osservando quali equazioni cambiano valore. Non legge il testo delle equazioni: funziona anche con funzioni, tabelle e condizioni logiche.

2. Riduzione

Un'incognita che compare in una sola equazione si può calcolare dopo, con una radice monodimensionale; equazione e incognita escono dal sistema grande. Si ripete finché ne escono. Poi le equazioni vengono riordinate in base alla struttura di dipendenza. Il sistema rimasto è più piccolo e meglio condizionato; le variabili escluse vengono risolte alla fine, una per una.

3. Newton con ricerca lineare

Il sistema ridotto è risolto con il metodo di Newton con backtracking (ricerca lineare di tipo Armijo): a ogni iterazione si calcola il Jacobiano, si risolve J·p = −F e si accorcia il passo finché il residuo ½|F|² diminuisce in modo accettabile. Il passo massimo è limitato per non uscire di colpo dal dominio.

4. Riavvii

Newton è locale: da un punto di partenza sbagliato può fermarsi in un minimo del residuo che non è una soluzione. Se per tre iterazioni consecutive il residuo non scende in modo significativo, il motore riparte da nuovi valori casuali nell'intervallo min–max delle variabili. Le iterazioni totali hanno un tetto assoluto (200) e ogni calcolo ha un timeout.

5. Tabelle

Le curve usano l'interpolazione lineare con estrapolazione lineare agli estremi. Le matrici y(p, x) interpolano prima in x su ciascuna curva, poi in p tra le due curve adiacenti. L'argomento può essere un'incognita: la tabella entra nel Jacobiano come ogni altra funzione.

Integrali definiti

integral usa trapezi raffinati ed estrapolazione di Simpson, con stima dell’errore e limiti sul numero di valutazioni. Richiede estremi finiti e funzioni regolari; picchi stretti, discontinuità e oscillazioni possono compromettere l’accuratezza.

Equazioni differenziali

Il metodo Dormand–Prince 5(4) adatta il passo in base alla stima dell’errore locale. Integra sistemi ordinari espliciti non rigidi, a partire dalle condizioni iniziali; un’equazione di secondo ordine si scrive con due stati. Si possono aggiungere equazioni algebriche dipendenti dagli stati, purché le loro incognite non compaiano nelle derivate.

Per i sistemi algebrici. La soluzione trovata dipende dal punto di partenza quando le soluzioni sono più di una: i valori iniziali delle variabili non fisse e l'intervallo min–max sono i comandi con cui si orienta la ricerca (min/max non sono vincoli sulla soluzione). Il Jacobiano è per differenze finite: funzioni molto «a gradino» o non derivabili vicino alla soluzione rallentano o impediscono la convergenza. La non convergenza non prova che la soluzione non esista.

Come si accede alla demo

La demo è una copia temporanea e privata del programma con alcuni esempi già caricati. Nessuna registrazione, nessuna password.

  1. Vai alla pagina di accesso e premi Prova la demo.
  2. Si apre la tua copia, sulla calcolatrice: scrivi un'equazione, oppure scegli un esempio dal menu Esempi…. In alto a destra un contatore mostra il tempo residuo (DEMO · hh:mm:ss) e il «?» apre la guida. Il pulsante Assistente scrive programmi, spiega gli errori e cerca tutte le soluzioni (nella demo ha pochi messaggi al giorno).
  3. Per l'impianto vai a Processo con il link in alto, apri scambiatore o rete_gas_A_base, premi ▶ Risolvi, cambia un dato e risolvi ancora.
  4. Prima della scadenza, ↓ Esporta JSON se vuoi tenere il lavoro.

Quello che crei è visibile solo a te e viene cancellato alla scadenza (2 ore). Un'altra persona che avvia la demo non vede nulla del tuo lavoro.

Avvia la demo

Cosa si può fare e cosa no

Per sapere quanto fidarti dei numeri, la pagina Verifica dei risultati mostra i casi noti su cui il motore è confrontato e li ricalcola nel tuo browser.

Si puòNon si può
Risolvere sistemi di equazioni non lineari, anche con tabelle e funzioni non derivabili in forma chiusaGarantire convergenza per ogni sistema e ogni punto iniziale
Calcolare integrali definiti con integral(f, x, a, b)Ottenere primitive simboliche o integrare su estremi infiniti e singolarità
Integrare equazioni differenziali ordinarie esplicite nella calcolatrice, scegliendo campo_finaleCalcolare derivate simboliche, risolvere PDE o sistemi differenziali-algebrici generali; il metodo non è adatto a problemi rigidi
Scrivere componenti propri con equazioni, variabili e tabelleUsare un catalogo di componenti e proprietà già pronto: i modelli fisici li scrivi tu
Collegare più componenti con linee e risolvere l'impianto interoConvertire le unità di misura: sono etichette (con avviso sui collegamenti incoerenti), i numeri sono usati come scritti
Usare tabelle di curve e matrici come funzioni nelle equazioniImporre vincoli di disuguaglianza o ottimizzare: si risolvono uguaglianze (min/max orientano solo la ricerca)
Cercare più soluzioni provando molte stime iniziali (con l'assistente) e vedere le variabili nel tempo con un graficoAvere la certezza di aver trovato tutte le soluzioni: l'elenco dipende dalle stime provate
Ricalcolare variando dati, anche per analisi di sensibilitàGarantire di trovare tutte le soluzioni, né la corrispondenza fisica del modello: la verifica del modello è tua
Esportare e reimportare i processi in JSON; usare il motore da agenti via MCPScrivere i decimali con la virgola nelle equazioni (1.5, non 1,5)

Nella demo, in più

Non disponibilePerché
Chat dell'editor di processoUsa un servizio a pagamento: riservata agli utenti registrati (l'assistente della calcolatrice c'è, con pochi messaggi)
Estrazione di tabelle da foto, PDF o testoIdem
Conservazione dei dati oltre 2 oreLa copia è effimera: si cancella alla scadenza
Limite della demoValore
Durata2 ore
Calcoli20 al minuto, 2 in contemporanea
Componenti, processi, tabelle salvati15, 8, 15
Istanze e linee per processo40 e 80
Dimensione di un salvataggio100 KB
Avvii dallo stesso indirizzo5 all'ora
Messaggi all'assistente della calcolatrice5 per demo (e un tetto giornaliero per indirizzo e complessivo)

Con un account (su invito) i limiti sono molto più ampi e i dati sono permanenti.